
Manos a la obra con Python para rastrear datos sin bloquear números
Recientemente, una gran cantidad de hierro viejo me preguntó cómo utilizar Python para obtener datos del sitio web, el resultado de su propio rastreador escrito corriendo dos días será bloqueado IP. esta cosa también me cayó hace tres años, y luego encontró una herramienta mágica - proxy IP. hoy en día para tomar su propia casa con laipipgoServicio como una castaña para mostrarle cómo jugar la rutina.
¿Por qué tu rastreador no vive más de tres días?
El sitio no es un tonto, la gente anti-creeper mirar principalmente a estos tres indicadores:Frecuencia de visitas, características de las solicitudes, rastros de IPLa IP del rastreador es lo más importante. Especialmente la IP este canto, rastreadores ordinarios con solicitud loca IP fija, al igual que la misma persona cada minuto en la caja del supermercado 50 veces, los guardias de seguridad no te pillan coger quién?
Ejemplos de código típicos
importar peticiones
for página in rango(1,100): url = f'{página}'.
url = f'https://xxx.com/list?page={página}'
r = requests.get(url) pasar con la misma ip
La forma correcta de abrir una IP proxy
Recomendado aquíipipgode proxies residenciales dinámicos, su grupo de IP es tan ridículamente grande (según se informa, más de 90 millones) que el sitio no puede saber si se trata de una persona real o de una máquina cada vez que se realiza una solicitud para una IP de usuario real diferente.
Cómo debería ser un rastreador fiable
importar peticiones
from random import choice
proxies_pool = [
'112.85.130.93:3328',
'120.33.240.211:1188', ...
... Aquí es donde pones los proxies proporcionados por ipipgo.
]
url = 'https://目标网站.com'
headers = {'User-Agent': 'Mozilla/5.0'}
for _ in range(10): proxy = {'http': choice(proxies_pool)}
proxy = {'http': elección(proxies_pool)}
response = requests.get(url, headers=headers, proxies=proxy)
print(response.text[:200]) imprime los primeros 200 caracteres para confirmar el éxito
Cinco chanchullos antibloqueo
1. Ritmo de rotación IPNo seas estúpido y cambia de IP en cada petición, cambia en intervalos aleatorios como hace la gente real. ¡Por ejemplo, visite 3-8 veces para cambiar uno, en medio de una espera al azar 1-3 segundos!
2. Las cabeceras de las solicitudes deben ser realistasRecuerda usar la UA común del navegador, y no uses la cabecera de peticiones por defecto de Python.
3. Mecanismo de reintento de fallo: Encuentre el código de error 403/429, haga una pausa e inténtelo de nuevo con una dirección IP diferente.
4. Dispersión del flujo: No te quedes con una página muerta en el agua, ¡visita varias páginas!
5. Selección de protocolosalgunos sitios tienen más probabilidades de activar la autenticación con https que con http
Práctico: captura de datos sobre precios del comercio electrónico
Como castañero, quiere vigilar las fluctuaciones de los precios de una determinada mercancía del Este:
1. AipipgoAbrir un paquete de pago por uso en el back office
2. Utiliza su API para obtener la lista más reciente de proxies
3. Coge la página cada media hora, y ten cuidado de no cogerla en el momento exacto.
4. Corte automático de IP y reintento al encontrar CAPTCHA.
Versión avanzada con gestión de excepciones
importar solicitudes
tiempo de importación
def smart_crawler(url): max_retry = 3
max_reint = 3
for _ in range(max_retry):: _ in range(max_retry).
try: proxy = get_ipipgo_proxy() aquí llamar a ipipgo_proxy.
proxy = get_ipipgo_proxy() Aquí llamamos a la API de ipipgo para obtener una nueva IP.
response = requests.get(url, proxies=proxy, timeout=8)
if 'CAPTCHA' in response.text: 'CAPTCHA' in response.text: 'CAPTCHA' in response.text.
raise Exception('Autenticación activada')
return response.text
except Exception as e.
print(f "Error: {e}, prepárese para cambiar IP")
time.sleep(2_) tiempo de espera exponencial
return Ninguno
Preguntas frecuentes QA
P: ¿Qué debo hacer si mi IP proxy es muy lenta?
R: ¡Elija el tipo de agente adecuado! ComoipipgoLa latencia del proxy residencial estático puede reducirse a menos de 200 ms, más del doble de rápido que un proxy de sala de servidores normal.
P: ¿Cómo puedo comprobar si el agente es válido?
R: Pruebe primero con un pequeño lote de IPs, se recomienda utilizar esta interfaz de detección:
Código de detección:
resp = requests.get('http://httpbin.org/ip', proxies=proxy)
print(resp.json()) mostrar IP actual en uso
P:¿Qué debo hacer si me encuentro con un antiescalada de actualización de sitios web?
R: cambio oportuno de tipos de protocolo IP, como de HTTP a socks5. como ipipgo background puede filtrar directamente diferentes tipos de protocolo de proxies, este punto es particularmente conveniente.
Recomendaciones del Programa Heart Saving
Si le da pereza tirarlo usted mismo, vaya directamente aipipgos Smart Proxy. Su estrategia de rotación es de desarrollo propio, se dice que es capaz de igualar automáticamente el nivel de protección del sitio de destino, la tasa de éxito de los novatos con esto puede ser de hasta 90%. El reciente doble once yPrimer pedido 50% de descuentoactividad, mucho más rentable que crear su propio grupo de agentes.

