Una copia pirateada de un servicio pago en 39 líneas de código Python

imagen
Durante la ejecución de la orden para el desarrollo del bot de telegramas, tuve la necesidad de obtener una captura de pantalla de la página web con su entrega al usuario. ¿Por qué pensar en una solución a un problema cuando puede encontrarlo? Al final resultó que, no pagar! Más sudor katom.


Entonces, el destino me empujó al servicio url2png . Todo parece estar bien: te registras, obtienes un token API y te haces solicitudes. Pero no importa cómo.


imagen


No, bueno, en serio, ¡VDS para varios bots de telegramas es más barato! Y luego me quedó claro que tenía que salir de todas las formas disponibles. No tuve que estrujarme el cerebro durante mucho tiempo, ya que existía algo como el selenio . Selenium requiere la instalación de un controlador especial de acuerdo con el navegador utilizado. Te advierto que PhantomJS ya no es compatible con Selenium, por lo que Google Chrome se utilizará para trabajar en modo sin cabeza (cuando se inicia el controlador web). ¿Cómo configurar para este VDS? Lo primero es lo primero, debe instalar el navegador en sí. En la consola, ingrese los siguientes comandos.


sudo apt update sudo apt install -y chromium-browser 

Después de este enlace , debe encontrar la última versión de chromedriver (2.41 en este momento). Debe instalarlo con los siguientes comandos.


 wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip unzip chromedriver_linux64.zip sudo mv chromedriver /usr/bin/chromedriver sudo chown root:root /usr/bin/chromedriver sudo chmod +x /usr/bin/chromedriver 

También me gustaría señalar que, para depurar telegramas de bots, deberá instalar una VPN en su máquina si se encuentra en Rusia. Ahora puedes comenzar a desarrollar el bot. Necesitarás las bibliotecas:


 pytelegrambotapi selenium validators 

Puede instalarlos en silencio usando pip. El comienzo del guión se ve así.


 # -*- coding: utf-8 -*- import telebot import os import validators from selenium import webdriver 

Primero creé un bot y configuré el navegador para que funcione en modo sin cabeza.


 #  token = 'token of this bot' bot = telebot.TeleBot(token, threaded = False) #      headless  options = webdriver.ChromeOptions() options.add_argument('--headless') options.add_argument('--disable-gpu') options.add_argument('--disable-dev-shm-usage') options.add_argument('--no-sandbox') 

Luego lanzó un saludo y ayuda al usuario.


 #   /start  /help @bot.message_handler(commands=['start']) def hello_user(message): bot.send_message(message.chat.id, 'Hello, ' + message.from_user.username + "!") @bot.message_handler(commands=['help']) def show_help(message): bot.send_message(message.chat.id, 'To get screenshot of webpage use command /getpng.\nExample: /getpng https://www.google.com') 

Lo más importante que queda es obtener una captura de pantalla. La biblioteca de validadores valida (perdón por la tautología) del enlace ingresado por el usuario. Además, usando el módulo os, la captura de pantalla se elimina del servidor después del envío, para no ocupar espacio.


 #     selenium  headless chrome @bot.message_handler(commands=['getpng']) def get_screenshot(message): uid = message.chat.id url = "" try: url = message.text.split(' ')[1] except IndexError: bot.send_message(uid, 'You have not entered URL!') return if not validators.url(url): bot.send_message(uid, 'URL is invalid!') else: photo_path = str(uid) + '.png' driver = webdriver.Chrome(chrome_options = options) driver.set_window_size(1280, 720) driver.get(url) driver.save_screenshot(photo_path) bot.send_photo(uid, photo = open(photo_path, 'rb')) driver.quit() os.remove(photo_path) 

¡Lanzamos el bot y verificamos su funcionamiento!


 #  if __name__ == '__main__': bot.infinity_polling() 

imagen


Como puede ver, todo funciona muy bien. Por supuesto, se puede modificar todo tipo de bollos, pero me propuse el objetivo de construir la base y lo alcancé. En realidad, un enlace al bot para personas interesadas y al repositorio de github para aquellos interesados. Mientras tanto, todo bien, ¡nos vemos en las siguientes publicaciones!

Source: https://habr.com/ru/post/es420513/


All Articles