0

Envíate los últimos CVEs a tu Telegram

En este artículo os explicaré como crear un bot que te permita estar informado de los últimos CVEs que se están publicando al momento.

Lo primero que tenemos que hacer es instalar nuestra librería de Telegram para pyhon haciendo uso de pip.

pip install python-telegram-bot

Para el desarrollo de nuestro bot hay que hacer uso de «The Botfather» (https://core.telegram.org/bots) que consiste en una aplicación creada por Telegram que hará como mediador entre Telegram y nuestro código.

Para ello, hay que acceder al canal «BotFather» mediante una de las plataformas que nos ofrece Telefram (iOS, Android o Windows) o (Mac, Windows, Linux, versión web).
En este caso, usaré su versión web (https://web.telegram.org/).

 

Una vez dentro de ese canal, basta con poner «/start» luego «/newbot» y después introducir el nombre de tu bot, recuerda que tiene que ir acabo de «_bot» o «bot».

Con en mensaje anterior, confirmaremos que esta todo creado correctamente.
Es muy importante que tengamos a nuestro Bot en contactos ya que se necesitará saber el chat_id que tenemos en común.
Seguramente existan modos de obtener este «chat_id» más sencillos pero os voy a explicar el que uso yo.

Este Script te ayudará a obtener el chat_id pero para que funcione tienes que (previamente) haber hablado con tu bot (Ej del chat del bot: t.me/XXXXXXXX_bot)
Recuerda poner tu TOKEN previamente obtenido.

# -*- coding: utf-8 -*-
#Importamos liberia telegram
import telegram
 
#TOKEN de la API - Botfather
TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
bot = telegram.Bot(token=TOKEN)
 
updates = bot.get_updates()
print([u.message.chat_id for u in updates])

El resultado sería algo así:

El chat_id será del estilo de 17XXXXX. Este chat_id tambien puede ser un valor negativo (Ej: -17XXXXXX).

Pues bien ahora con tu chat_id y tu TOKEN ya podemos hacer uso de este Script para obtener los últimos CVEs que se están publicando vía Twitter.

# -*- coding: utf-8 -*-
#Importamos liberia de Telegram y BeautifulSoup
import bs4,telegram

#TOKEN de la API - Botfather
TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
mi_bot = telegram.Bot(token=TOKEN)

#ID del chat de Telefram
chat_id = 1000000000000

#Nombre de la cuenta que se quiere obtener los Twits
account = "CVEnew"

#Obtenemos el contenido de de la página de twitter 
result = requests.get("https://twitter.com/"+account)
c = result.content

#Nos ayudamos la librería BeautifulSoup
soup = bs4.BeautifulSoup(c, "html.parser")

for div in soup.find_all("li", {"class":"stream-item"}):
    #Obtención de ID único que usa Twitter
    item_id = div["data-item-id"]
    
    #Se obtiene el contenido del Twitt
    content = str(div.find("p", {"class":"TweetTextSize"}).text)
    
    #Se envia el resultado a mi chat de telegram
    mi_bot.sendMessage(chat_id=chat_id, text="@" + account + " -- " + content)

Recuerda que este Script es un ejemplo de como se obtiene los Twits del canal CVEnew y solo recoge los Twits, es decir, haría falta implementar un Cronjob que te devuelva constantemente estos Twits y trabajar bajo una base de datos que controle las notificaciones recibidas.

adm1n

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *