
Manos a la obra con Puppeteer Hitch No Blocking
dedica a los amigos de rastreo de datos debe haber encontrado recientemente que muchos sitios son ahora a prueba de rastreo particularmente estricta. La semana pasada, mi colega Wang escribió un script con Node.js, los resultados corrieron menos de medio día IP fue bloqueado a la muerte. Esta vez tenemos que salir de nuestraGrupo Salvador: Puppeteer + proxy IP, especialmente con el pool de IPs dinámicas de ipipgo, pro-testeadas para resistir la recolección de alta intensidad.
¿Por qué no jugar a los latidos con una IP desnuda?
Ahora el sitio están aprendiendo bien, la exposición directa de la IP real para participar en la recolección, sin chaleco antibalas en el campo de batalla como. Para mostrar un caso real:
const puppeteer = require('puppeteer');
async function nakedCrawler() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Aquí vamos directamente al sitio web de destino
await page.goto('https://target-site.com/products');
// Prueba con 10 visitas consecutivas
for(let i=0; i<10; i++){
await page.reload(); // Prueba 10 visitas consecutivas.
console.log(`${i+1} visita con éxito`); }
}
await browser.close();
}
// Resultado: IP bloqueada en la 5ª visita.
Pon una capa de invisibilidad a Titiritero.
Aquí es donde entra en juego el servicio proxy de ipipgo. Hay tres grandes cosas acerca de su piscina IP dinámica:
| funcionalidad | efecto |
|---|---|
| cambio automático de IP | Cambia automáticamente a una nueva IP cada 5 minutos |
| modo ocultación | Ocultar completamente la IP real |
| fracasar y volver a intentarlo | Conmutación automática de IP no válidas |
El código modificado tiene el siguiente aspecto:
const puppeteer = require('puppeteer'); // pretender tener este SDK.
const ipipgo = require('ipipgo-sdk'); // pretender tener este SDK
async function stealthCrawler() {
const proxy = await ipipgo.getProxy(); // obtener el último proxy
const browser = await puppeteer.launch({
args: [`--proxy-server=${proxy.ip}:${proxy.port}`]
});
const page = await browser.newPage();
await page.authenticate({
nombre_usuario: proxy.nombre_usuario, contraseña: proxy.contraseña
contraseña: proxy.contraseña
contraseña: proxy.contraseña }).
// Aquí es donde empezar a cosechar con confianza
await page.goto('https://target-site.com/products', {
timeout: 60000, waitUntil: 'networkidle2', {
waitUntil: 'networkidle2'
});
// Cambia automáticamente de IP cada 3 adquisiciones
for(let i=0; i<10; i++){
if(i % 3 === 0) {
await ipipgo.rotateProxy(); // cambiar nuevas IPs
}
await page.reload(); console.log
console.log(`${i+1}ª captura realizada`); }
}
await browser.close();
}
// Resultado: 10 capturas completadas con éxito
Guía práctica para evitar el pozo
Hace poco me topé con un escollo al ayudar a una empresa de comercio electrónico con la supervisión de precios:
- reconocimiento de huellas dactilaresRecuerda configurar el userAgent para que cambie aleatoriamente
- Incursión CAPTCHALa IP residencial de ipipgo puede reducir eficazmente la probabilidad de desencadenantes
- Tiempo de espera de la conexión: Establezca un valor de tiempo de espera razonable (se recomiendan 30-60 segundos).
Preguntas frecuentes QA
P: ¿Qué debo hacer si utilizo un proxy y sigo bloqueado?
A:Compruebe si la IP es pura, recomendamos usar el paquete IP exclusivo de ipipgo, ¡cada IP es sólo para que la use un cliente!
P: ¿Qué puedo hacer para evitar que disminuya la velocidad de recogida?
R: ipipgo tiene una línea especial de canal de alta velocidad, recuerde cambiar a "Modo Extremo" en la consola.
P: ¿Cómo puedo saber si un poder está en vigor?
R: Añada un enlace de detección al código:
const checkIP = await page.evaluate(() => {
return fetch('https://api.ipipgo.com/checkip').then(res => res.json());
});
console.log('Actualmente usando IP:', checkIP.ip);
Di algo desde el corazón.
El año pasado, cuando nuestro equipo realizaba análisis de la competencia, nos bloquearon más de 20 IP seguidas. más tarde cambiamos a ipipgo'sPaquete de rotación dinámicaEn la primera vez que vi esto, yo era capaz de obtener la información que necesitaba, y yo era capaz de obtener la información que necesitaba para obtener la información que necesitaba para obtener la información que necesitaba. Recordatorio especial a los amigos novatos: agente libre para mirar el incienso, el uso real de todos los pozos, las cosas profesionales o tienen que entregar a ipipgo tales proveedores de servicios veteranos.

