¿Por qué se bloquea siempre el rastreador PHP? Prueba este truco
Participó en el rastreo web hermanos saben, con PHP para escribir un rastreador es el mayor dolor de cabeza IP bloqueado. El mes pasado hay una comparación de precios de comercio electrónico hermano a encontrarme, dijo que su guión se ejecuta menos de media hora en el cierre, cambió tres servidores no funcionan. Esta cosa ah, para decirlo sin rodeos no es bueno proxy IP esta arma mágica.
// Código típico de crawler bloqueado
$html = file_get_contents('https://目标网站.com');
La anterior conexión directa es como coger un altavoz y gritar "soy un reptil", si no te bloquean ¿a quién bloqueas? Tenemos que aprender a utilizar proxy IP para cubrir.
¡Enséñate a escribir rastreadores con IPs proxy!
En primer lugar, déjame contarte una historia real: después de que ayudé a ese tipo de comercio electrónico para cambiar a la solución de IP proxy, funcionó durante tres días sin ningún problema. Aquí utilizar ipipgo servicio de proxy como una castaña, su interfaz es muy simple:
$proxy = 'http://username:password@gateway.ipipgo.com:9020';
$context = stream_context_create([
'http' => [
'proxy' => $proxy, 'request_fulluri' => true
'request_fulluri' => true
]
]);
$html = file_get_contents('URL de destino', false, $context);
Tenga cuidado de no pisar estos baches:
- ① Recuerda cambiar la contraseña de tu cuenta por la que obtuviste de ipipgo.
- ② diferentes tipos de proxy (HTTP/HTTPS/SOCKS5) para elegir el puerto adecuado.
- ③ Es preferible que el tiempo de espera no supere los 10 segundos.
Habilidades prácticas: que la oruga viva mucho tiempo tres ejes
gambito | Qué hacer. | Ajustes recomendados |
---|---|---|
Rotación IP | Diferentes proxies por solicitud | Paquetes dinámicos de ipipgo |
intervalo de solicitud | Hibernación aleatoria 1-5 segundos | sleep(rand(1,5)) |
Encabezado disfrazado | Información del navegador analógico | Configuración del User-Agent |
Pon un ejemplo completo con cambio automático de IP:
function getProxyList() {
// Aquí llamamos a la API de ipipgo para obtener la última lista de proxy.
return json_decode(file_get_contents('https://api.ipipgo.com/proxy_pool'));
}
$retry = 3;
while($retry--) {
$proxies = getProxyList();
foreach($proxies as $proxy) {
try {
// Configurar el proxy y enviar la petición
$html = doRequest($targetUrl, $proxy);
// Procesar los datos...
break; }
} catch(Exception $e) {
// Registrar el fallo en el log
continue; } catch(Exception $e) { // Registrar el fallo en el log.
}
}
}
Preguntas frecuentes QA
P: ¿Qué debo hacer si mi IP proxy no funciona?
¡R: elija ipipgo esto puede reemplazar automáticamente el conjunto de IP de los proveedores de servicios, su familia cada minuto para actualizar 2000 + nueva IP, simplemente no se puede agotar!
P: ¿A qué debo prestar atención en el rastreo de sitios web HTTPS?
R: Recuerda añadir estas dos frases al código:
stream_context_set_default([ 'ssl' => ['verify_peer' => false] ]);
Sin embargo, la práctica formal debe ser configurado con un certificado de CA, puede solicitar al soporte técnico de ipipgo para una solución.
P: ¿Cómo puedo saber si un agente es realmente eficaz?
A: Escribir un script de detección de latidos que visite periódicamente elhttps://api.ipipgo.com/check_ip
Para esta interfaz, se devuelve un código de estado 200 que indica que la IP está disponible.
Por último, quiero decir unas palabras desde el fondo de mi corazón: esto del crawler es una batalla de larga duración con la web. Con el proxy IP correcta es como llevar un chaleco antibalas, no guardar una media estrella. Especialmente para la recopilación de datos a gran escala, directamente en el paquete ipipgo enterprise edition, hay gente especial para ayudarle a depurar la configuración, que su propio chisme mucho más fuerte.