
Anh Tuan
Data Science Expert

Probablemente te estés preguntando cómo resolver captchas usando BotRight, cómo usarlo para crear un raspador simple o, mejor aún, ¡un raspador avanzado!
Bueno, ¡este es tu tutorial!
BotRight es una biblioteca avanzada de Python para la automatización web, diseñada específicamente para navegar por las crecientes complejidades de los sistemas de detección de bots en los sitios web. A diferencia de las herramientas de automatización básicas, BotRight va más allá de las interacciones simples al proporcionar controles matizados que hacen que la navegación automatizada parezca muy humana. Este énfasis en la simulación del comportamiento humano es fundamental para acceder a sitios web que normalmente bloquearían o limitarían los bots.
Construido sobre Selenium WebDriver, BotRight ofrece una API de alto nivel que abstrae las complejas interacciones del navegador en comandos simples, lo que permite a los principiantes y usuarios avanzados desarrollar raspadores sofisticados y scripts de automatización sin la necesidad de administrar comandos de navegador de bajo nivel. Esto lo convierte en una excelente opción para proyectos que van desde la simple recopilación de datos hasta tareas web complejas de varios pasos que exigen resistencia a los algoritmos de detección de bots.
BotRight proporciona varias características que lo hacen destacar en el panorama de la automatización:
Interacciones similares a las humanas: El diseño de BotRight se centra en simular acciones reales del usuario, como movimientos suaves del mouse, patrones de escritura naturales y retrasos de tiempo. Estos comportamientos reducen el riesgo de detección y brindan un acceso más confiable al contenido que normalmente está restringido a los usuarios genuinos.
Persistencia del estado del navegador: Al admitir perfiles de navegador, BotRight le permite mantener el estado de la sesión en múltiples ejecuciones de automatización. Esta característica es particularmente útil para tareas que requieren persistencia de inicio de sesión o donde se deben preservar estados específicos de cookies y caché.
Facilidad de uso: A pesar de sus capacidades avanzadas, BotRight es notablemente fácil de usar. Su API está estructurada para optimizar tareas complejas de automatización, eliminando gran parte de la sobrecarga técnica que generalmente viene con las configuraciones de Selenium. Los principiantes pueden comenzar rápidamente, mientras que los expertos pueden aprovechar la flexibilidad de BotRight para construir soluciones altamente personalizadas.
Escalabilidad para flujos de trabajo complejos: BotRight se adapta bien a tareas más avanzadas, incluyendo el manejo de sitios con tecnología AJAX, la gestión de la extracción de datos paginados, la resolución de CAPTCHA y más. Junto con solucionadores de CAPTCHA como CapSolver, BotRight puede manejar flujos de trabajo que requieren la omisión de CAPTCHA, lo que le permite automatizar incluso sitios web fuertemente protegidos.
Extensiones y complementos integrados: BotRight admite la inclusión de varias extensiones y complementos para mejorar las capacidades de automatización. Por ejemplo, el uso de herramientas como CapSolver dentro de BotRight ayuda a administrar los desafíos de CAPTCHA, desbloqueando una gama más amplia de sitios web para raspar o automatizar.
Antes de comenzar, asegúrese de tener Python 3.7 o superior instalado en su sistema. Siga estos pasos para configurar Botright:
Instalar Botright:
pip install botright
Instalar el administrador de WebDriver:
Botright se basa en el paquete webdriver_manager para administrar los controladores de navegador.
pip install webdriver-manager
Verificar la instalación:
Crea un nuevo archivo de Python e importa Botright para asegurarte de que esté instalado correctamente.
from botright import Botright
Si no se producen errores, Botright está instalado correctamente.
Creemos scripts simples para raspar datos de quotes.toscrape.com usando Botright.
Script: scrape_quotes.py
from botright import Botright
def scrape_quotes():
with Botright() as bot:
bot.get("https://quotes.toscrape.com/")
quotes = bot.find_elements_by_css_selector("div.quote")
for quote in quotes:
text = quote.find_element_by_css_selector("span.text").text
author = quote.find_element_by_css_selector("small.author").text
print(f"\"{text}\" - {author}")
if __name__ == "__main__":
scrape_quotes()
Ejecutar el script:
python scrape_quotes.py
Salida:
“El mundo tal como lo hemos creado es un proceso de nuestro pensamiento. No se puede cambiar sin cambiar nuestro pensamiento.” - Albert Einstein
...
Explicación:
Botright como administrador de contexto para garantizar una configuración y desmontaje adecuados.bot.get().Script: scrape_quotes_pagination.py
from botright import Botright
def scrape_all_quotes():
with Botright() as bot:
bot.get("https://quotes.toscrape.com/")
while True:
quotes = bot.find_elements_by_css_selector("div.quote")
for quote in quotes:
text = quote.find_element_by_css_selector("span.text").text
author = quote.find_element_by_css_selector("small.author").text
print(f"\"{text}\" - {author}")
# Verificar si hay una página siguiente
next_button = bot.find_elements_by_css_selector('li.next > a')
if next_button:
next_button[0].click()
else:
break
if __name__ == "__main__":
scrape_all_quotes()
Explicación:
find_elements_by_css_selector para localizar elementos.Script: scrape_dynamic_content.py
from botright import Botright
import time
def scrape_tags():
with Botright() as bot:
bot.get("https://quotes.toscrape.com/")
# Haga clic en el enlace 'Top Ten tags' para cargar las etiquetas dinámicamente
bot.click('a[href="/tag/"]')
# Espere a que se cargue el contenido dinámico
time.sleep(2)
tags = bot.find_elements_by_css_selector("span.tag-item > a")
for tag in tags:
tag_name = tag.text
print(f"Tag: {tag_name}")
if __name__ == "__main__":
scrape_tags()
Explicación:
time.sleep().Script: scrape_with_login.py
from botright import Botright
def login_and_scrape():
with Botright() as bot:
bot.get("https://quotes.toscrape.com/login")
# Rellena el formulario de inicio de sesión
bot.type('input#username', 'testuser')
bot.type('input#password', 'testpass')
bot.click("input[type='submit']")
# Verifica el inicio de sesión comprobando un enlace de cierre de sesión
if bot.find_elements_by_css_selector('a[href="/logout"]'):
print("¡Inicio de sesión exitoso!")
# Ahora raspa las citas
bot.get("https://quotes.toscrape.com/")
quotes = bot.find_elements_by_css_selector("div.quote")
for quote in quotes:
text = quote.find_element_by_css_selector("span.text").text
author = quote.find_element_by_css_selector("small.author").text
print(f"\"{text}\" - {author}")
else:
print("Error de inicio de sesión.")
if __name__ == "__main__":
login_and_scrape()
Explicación:
Nota: Dado que quotes.toscrape.com permite cualquier nombre de usuario y contraseña para demostración, podemos usar credenciales ficticias.
Si bien quotes.toscrape.com no tiene CAPTCHA, muchos sitios web del mundo real sí. Para prepararnos para tales casos, demostraremos cómo integrar CapSolver en nuestro script Botright usando la extensión del navegador CapSolver.
Descargar la extensión:
capsolver-chrome-extension-v0.2.3.zip../capsolver_extension.Localizar config.json:
capsolver_extension/assets/config.jsonEditar config.json:
{
"apiKey": "YOUR_CAPSOLVER_API_KEY",
"enabledForcaptcha": true,
"captchaMode": "token",
"enabledForRecaptchaV2": true,
"reCaptchaV2Mode": "token",
"solveInvisibleRecaptcha": true,
"verbose": false
}
"YOUR_CAPSOLVER_API_KEY" con su clave de API real de CapSolver.enabledForcaptcha y/o enabledForRecaptchaV2 en true en función de los tipos de CAPTCHA que espera."token" para la resolución automática.Para usar la extensión CapSolver en Botright, debemos configurar el navegador para que cargue la extensión cuando se inicie.
Nota: Botright le permite personalizar las opciones del navegador, incluida la adición de extensiones.
Script modificado:
from botright import Botright
from selenium.webdriver.chrome.options import Options
import os
def create_bot_with_capsolver():
# Ruta a la carpeta de extensión CapSolver
extension_path = os.path.abspath('capsolver_extension')
# Configurar opciones de Chrome
options = Options()
options.add_argument(f"--load-extension={extension_path}")
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")
# Inicializar Botright con opciones personalizadas
bot = Botright(options=options)
return bot
Explicación:
Options:
selenium.webdriver.chrome.options, para configurar las opciones de Chrome.options.add_argument() para agregar la extensión CapSolver.opciones a Botright al crear una instancia.Demostraremos la integración navegando a un sitio con un reCAPTCHA, como la demostración de reCAPTCHA de Google.
Script: scrape_with_capsolver_extension.py
from botright import Botright
from selenium.webdriver.chrome.options import Options
import os
import time
def solve_captcha_and_scrape():
# Ruta a la carpeta de extensión CapSolver
extension_path = os.path.abspath('capsolver_extension')
# Configurar opciones de Chrome
options = Options()
options.add_argument(f"--load-extension={extension_path}")
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")
# Inicializar Botright con opciones personalizadas
with Botright(options=options) as bot:
bot.get("https://www.google.com/recaptcha/api2/demo")
# Espere a que CapSolver resuelva el CAPTCHA
print("Esperando a que se resuelva el CAPTCHA...")
# Ajustar el tiempo de espera en función del tiempo medio de resolución
time.sleep(15)
# Verificar si el CAPTCHA se resolvió comprobando el contenido de la página
if "Verification Success" in bot.page_source:
print("¡CAPTCHA resuelto correctamente!")
else:
print("El CAPTCHA aún no se ha resuelto o ha fallado.")
if __name__ == "__main__":
solve_captcha_and_scrape()
Explicación:
opciones al crear la instancia Botright.bot.get() para navegar al sitio con un reCAPTCHA.time.sleep() para esperar; ajustar el tiempo según sea necesario.Notas importantes:
extension_path apunte correctamente a tu carpeta de extensión CapSolver.time.sleep() según sea necesario.opciones personaliza el controlador.Ejecutar el script:
python scrape_with_capsolver_extension.py
Reclama tu Código de bonificación para las mejores soluciones de captcha en CapSolver: scrape. Después de canjearlo, obtendrás un bono adicional del 5% después de cada recarga, sin límite de veces.

Al integrar CapSolver con Botright usando la extensión del navegador CapSolver, puedes automatizar la resolución de CAPTCHA en tus proyectos de raspado web. Esto asegura la extracción de datos ininterrumpida, incluso de los sitios protegidos por CAPTCHA.
Puntos clave:
Aprende qué desencadena el error de Cloudflare 1020 Acceso denegado, cómo funciona el Firewall de Aplicaciones Web y la detección de bots, y cómo los desarrolladores pueden reducir los falsos positivos en flujos de trabajo de automatización legítimos.

Aprende a utilizar la plantilla n8n de CapSolver para monitorear las páginas de productos protegidas por AWS-WAF, resolver desafíos, extraer precios, comparar cambios y activar alertas automáticamente.
