
Le enseñará a utilizar PHP para capturar datos sin bloquear la IP.
Hermanos que participan en la recopilación de datos entienden que el mayor dolor de cabeza es el sitio de destino de repente te dan una prohibición de IP. El mes pasado me ayudó a los clientes a coger el precio de una plataforma de comercio electrónico, sólo tiene que ejecutar durante dos días para recibir una advertencia 403, esta vez es necesario ofrecer la.IP proxyEsto es un gran asesino ahora.
Preparación del equipo básico
En primer lugar, se puede utilizar todo el entorno PHP para confirmar que la extensión curl está instalada. Aquí hay un escollo a tener en cuenta: algunos servidores no abren el curl por defecto, hay que ir a php.ini para eliminar el extension=curl delante del punto y coma.
if (!function_exists('curl_init')) {
die('¡Ve a activar la extensión curl!) ;
}
Código de captura al desnudo
Veamos primero qué aspecto tiene un código desprotegido:
$url = 'https://target-site.com/data';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
Esto no es media hora cuasi-bloqueado, especialmente cuando la frecuencia de recogida es alta. La semana pasada, un amigo con este método de escritura, media hora cambió 6 IP del servidor, enojado directamente soltar el teclado.
Ponga un chaleco antibalas en su código.
¡Aquí está el truco! Para conectar el proxy de ipipgo a curl, el código tiene que ser cambiado para parecerse a esto:
$proxy = 'proxy.ipipgo.com:9021'; //completa aquí el canal proporcionado por ipipgo
$auth = 'username:password'; //información de autenticación generada en el backend
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $targetUrl);
curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $auth); curl_setopt($ch, CURLOPT_PROXYUSERPWD, $auth)
curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_setopt($ch, CURLOPT_TIMEOUT, 15);
//... Deja el resto de la configuración como está
Fíjese en tres puntos clave:
1. Dirección proxy con número de puerto, no te lo pierdas
2. La información de autenticación no es una cuenta del sitio web, es exclusiva del backend de ipipgo.
3. Mantenga el tiempo de espera corto, 15 segundos es suficiente para la mayoría de los escenarios.
Guía práctica para evitar el pozo
Situación de la vida real que me encontré recientemente mientras ayudaba a un cliente con un despliegue:
| sintomático | cura |
|---|---|
| Volver a la página en blanco | Comprobar la dirección del proxy para cabeceras de protocolo (http/https) |
| Tiempos muertos frecuentes | Conmutación de áreas de línea en la consola ipipgo |
| Velocidad inestable | Active el cambio automático de IP, establezca el intervalo en 30 segundos. |
Paquete Experiencia Conductor Veterano
¡1. recogida de grandes cantidades de tiempo, se recomienda utilizar el agente residencial dinámico de ipipgo, personalmente probado promedio diario de 100.000 solicitudes no se dan la vuelta!
2. No utilice agentes libres para proyectos importantes, la última vez que alguien fue codicioso por barato, el resultado es que la colección está llena de código publicitario.
3. Configure User-Agent para disfrazar el navegador, pero no lo utilice demasiado popular, fácil de ser detectado.
Preguntas frecuentes QA
P: ¿Qué debo hacer si mi IP proxy falla de repente?
A:Activa "Failover" en segundo plano de ipipgo, el sistema cambiará a una nueva IP en segundos.
P: ¿Cómo puedo saber si un poder está en vigor?
A: Añada curl_getinfo($ch, CURLINFO_PRIMARY_IP) al código para ver las IP de exportación reales
P: ¿Cómo gestionar una adquisición simultánea elevada?
R: Utiliza la API de ipipgo para obtener dinámicamente el pool de proxies, asigna IPs independientes a cada hilo y recuerda controlar la frecuencia de las peticiones.
Por último, una lección de lágrimas: una vez no comprobé la disponibilidad del proxy, lo que provocó la recogida de todos los datos erróneos. Más tarde, descubrí que ipipgo proporciona herramientas de prueba en línea, y ahora ejecuto un script de prueba antes de cada inicio, lo que me ahorra muchos problemas.

