
Cuando el rastreador se encuentra con el anticrastreador: supervivencia a ultranza de las IP proxy
Los amigos que hacen pruebas automatizadas deben entender que cuando se utiliza Selenium, lo que más temen es encontrarse con el bloqueo de IP. Es como jugar a un juego que se cierra en una pequeña habitación negra, viendo el programa atascado en la interfaz CAPTCHA. En este momentoIP proxyEs tu coraza de resurrección, especialmente con servicios como ipipgo que cambian automáticamente las IP, es como una segunda vida para los programadores.
Configuración práctica del plugin proxy de Selenium
No te dejes engañar por la documentación oficial, en la práctica sólo hay dos pasos para configurar el proxy:
from selenium import webdriver
proxy = "123.123.123.123:8888" Este es el proxy proporcionado por ipipgo.
options = webdriver.ChromeOptions()
options.add_argument(f'--proxy-servidor=http://{proxy}')
Recuerda añadir la autenticación de la cuenta ipipgo (¡importante!)
options.add_argument('--proxy-auth=nombre_usuario:contraseña')
driver = webdriver.Chrome(options=opciones)
¡Atención! Si utilizas el proxy dinámico de ipipgo, recuerda actualizar el pool de IPs cada hora, o será fácilmente reconocido por el sitio web de destino.
CSS Selector Ataque de Precisión
Elegir elementos es como jugar a un juego de francotiradores, aquí te enseñamos algunas cosasforma segura de matar::
| toma | recogedor |
|---|---|
| Botón de inicio de sesión | button.login-btn |
| Acceso a datos sobre precios | div.price-box > span:first-child |
| Manejar la carga dinámica | div.lazy-content:not(.loaded) |
No tengas prisa en cambiar el código cuando te encuentres con un fallo de localización de elementos. Prueba primero con una nueva IP con ipipgo, muchas veces la IP se queda en negro.
Guía práctica para evitar el pozo
Recientemente, mientras ayudaba a un cliente con la recopilación de datos de comercio electrónico, encontré unEl detalle del diabloAlgunos sitios detectan las huellas dactilares del navegador. Esto es necesario en este momento:
- Cambio de User-Agent cada vez que se inicia
- Agente residencial junto con ipipgo (más cerca de los usuarios reales)
- Intervalo de funcionamiento aleatorio (¡no utilice el reposo fijo!)
Dé un ejemplo de antidetección:
import random
from selenium.webdriver.common.action_chains import ActionChain
Simular un deslizamiento humano
actions = Cadena de acciones(controlador)
actions.move_by_offset(
random.randint(10,50), random.randint(10,50), random.
random.randint(10,50), random.randint(10,50)
).perform()
Preguntas frecuentes Botiquín de primeros auxilios
P: ¿Qué debo hacer si no puedo conectarme a la IP del proxy?
R: Compruebe primero la configuración de la lista blanca, la consola de ipipgo tiene registros de conexión en tiempo real. Si se corta frecuentemente, se recomienda cambiar a suUso exclusivo de líneas de alta velocidad
P: ¿Fallan de repente los selectores CSS?
R: El 80% de la página web ha sido renovada, utilice las herramientas de desarrollador para comprobar la estructura de los elementos. Si el elemento en sí existe pero no puede ser capturado, puede ser que la IP esté bloqueada - ¡date prisa y añade un middleware de sustitución automática de IP de ipipgo en el código!
P: ¿Cómo puedo evitar que me reconozcan como robot?
R: Tres reglas de oro: ① Utilizar ipipgo's.IP residencial dinámica ②Randomizar el intervalo de operación ③Limpiar regularmente la caché del navegador.
Añade armadura de resurrección al código.
Por último, comparto una plantilla de código que se integra con la función de cambio automático de IP de ipipgo:
from ipipgo_api import get_new_proxy SDK oficial de ipipipgo
def safe_visit(url):
for _ in range(3): reintentar 3 veces
intentar.
proxy = get_new_proxy(type='https')
driver = init_browser(proxy)
driver.get(url)
Flujo de operación normal...
break
except Excepción as e.
driver.quit()
mark_bad_proxy(proxy) Feedback problema IP a ipipgo
def init_browser(proxy).
Aquí ponemos el código anterior de configuración del proxy
devolver driver
Esta solución se mide para aumentar la tasa de éxito de recogida de 53% a 98%, la clave es utilizar ipipgo'sQCIfiltrando automáticamente los nodos fallidos.

