En este video, aprenderás a:
- Hacer que tu crawler sea visto como un ‘usuario real’ y no ser bloqueado
- Seleccionar las herramientas adecuadas para la automatización del navegador
- Selenium vs. Puppeteer, pros y contras
- Configurar Selenium y Puppeteer para trabajar con proxy
- Manipulación de proxy para un crawler automatizado
- Configurar tu Proxy Manager con Selenium y Puppeteer
¿Cómo saben los sitios cuando estás usando un "bot" o "crawler"?
Principalmente se debe a las cookies, el agente de usuario del navegador y tu IP.
Al obtener o publicar información en un sitio web, el sitio visitado guarda cookies en tu navegador.
El sitio web reconoce un navegador real al verificar la dirección IP y leer los encabezados de la solicitud que incluyen información sobre el agente de usuario.
La falta de cookies o del agente de usuario correcto puede hacer que el sitio web te bloquee al intentar recuperar información.
Ambos pueden ser programados para asegurar que esto no suceda.
Tu IP, sin embargo, es lo único que no se puede codificar ya que es parte de la infraestructura de la red.
Iremos a ‘whoer.net’ y verificaremos qué información está enviando mi computadora a través de la web.
Nuestro navegador soporta JavaScript y a partir de esto, el sitio web objetivo puede recopilar el navegador, el sistema operativo, los colores de la pantalla, la resolución de la pantalla, la versión de Flash y el soporte de Java.
WebRTC se utiliza para la comunicación en tiempo real de navegador a navegador y recupera mi IP, puerto y protocolo para comparar con los datos de la red.
Además, se puede recopilar la hora de tu computadora y compararla con la zona horaria de la IP.
También podemos encontrar el *encabezado de solicitud* enviado al sitio web objetivo en la consola del navegador seleccionando F12 e yendo a la pestaña de Red en Chrome, o seleccionando ctrl+R.
Al hacer clic en el documento encontraremos la información del encabezado y la solicitud que enviamos a whoer.net
El encabezado de solicitud contiene las cookies y el agente de usuario que es el tipo y versión del navegador.
Los sitios web objetivo que comparan la información de mi PC y verifican sesiones con cookies requieren que cuando enviamos solicitudes a través de una API proporcionemos una nueva cookie cada pocas solicitudes.
Esto, así como el mismo agente de usuario exacto y a veces incluso el accept-language.
Esto se debe a que un agente de usuario roto o la falta de un agente de usuario pueden, en sí mismos, desencadenar una respuesta de error por parte del sitio web objetivo.
Podemos gestionar operaciones de scraping complejas utilizando herramientas de automatización como Selenium o Puppeteer, que realmente abren un navegador real, o incluso usar un navegador sin cabeza de código abierto como Chromium.
Los navegadores son una herramienta que podemos usar si necesitamos ejecutar JS o no queremos escribir cadenas de solicitudes complejas nosotros mismos.
La desventaja es que ejecutar un navegador es más lento y consume más RAM que usar un script personalizado.
La automatización sobre un navegador real hará que el scraping sea más simple, ya que esto significa que no necesitamos preocuparnos por recopilar una base de datos de cookies para rotar o corregir agentes de usuario.
Esto aumentará mi tasa de éxito con los sitios web objetivo que están verificando esto.
Ahora puedes estar pensando, ¿por qué un navegador sin cabeza?
Principalmente para ejecutar el scraping automáticamente.
Un navegador sin cabeza carece de Flash Player y gestión de derechos digitales que pueden enviar más información sobre mi PC y podemos aumentar fácilmente mi tasa de éxito al no tenerlos en absoluto.
¿Qué herramienta de automatización deberíamos usar?
Bueno, esto depende de tus habilidades técnicas y del sitio web que estás apuntando.
Por ejemplo, compararemos Puppeteer, una herramienta de automatización fácil de usar, con Selenium que requiere más experiencia técnica.
Puppeteer, desarrollado por Google, es fácil de instalar con un comando: npm install puppeteer. Solo soporta el navegador sin cabeza Chromium y está basado en Node.
Muy rápidamente podemos comenzar a trabajar con Puppeteer y probar una demostración rápida.
Por otro lado, Puppeteer no soporta la automatización entre navegadores y Selenium es la herramienta más flexible en términos de automatización y funcionalidad que existe.
Selenium soporta muchos navegadores, sistemas operativos y lenguajes de programación como Java, C#, Ruby, Python y JavaScript.
Selenium funcionará en la mayoría de los sitios web objetivo y puede ser automatizado para cualquier escenario razonable.
Por otro lado, instalar y usar Selenium requiere algunas habilidades técnicas en términos de comprensión de tecnologías web y APIs.
Con Selenium WebDriver puedes subir o descargar archivos, trabajar con ventanas emergentes y superar barreras de diálogo.
Para resumir, tanto Puppeteer como Selenium soportan aplicaciones web de escritorio, páginas responsivas y JavaScript.
Sin embargo, Puppeteer solo funciona con Chrome y Chromium, mientras que Selenium soporta todos los navegadores comunes como Chrome, Firefox, Explorer y otros navegadores sin cabeza.
Nos gustaría mencionar que Puppeteer y Selenium NO soportan aplicaciones móviles nativas de forma nativa.
Sin embargo, Appium, desarrollado por la fundación JS, o Selendroid, desarrollado por la fundación de software de eBay, te permitirán automatizar aplicaciones móviles nativas.
Tanto Selendroid como Appium requieren Selenium y el conocimiento de cómo trabajar con la API de Selenium y WebDriver.