
¿Rastreadores contra rastreados? Prueba este truco de IP proxy
Recientemente, muchos hermanos rastreador Node.js se quejan de que el sitio anti-escalada cada vez más despiadado. El día antes de ayer, dijo un viejo hermano, escribió el rastreador corrió menos de media hora, la IP fue bloqueada a la muerte. Esto es algo que siento demasiado, el año pasado para hacer la recopilación de datos de comercio electrónico, tres días para cambiar la IP, y más tarde se encontró que el uso de proxy IP es la verdadera fragancia.
¿Cómo le ayuda exactamente una IP proxy?
En pocas palabras.Vestir a los reptiles con capas de invisibilidad. Supongamos que desea recopilar el precio de los productos de un determinado sitio web:
const axios = require('axios');
// Petición normal (bloqueada en minutos)
función asíncrona normalRequest() {
try {
const response = await axios.get('URL de destino'); console.log(response.data); // petición normal (bloqueada en un minuto)
console.log(response.data);
} catch (error) {
console.log('¡Maldita sea, la IP está bloqueada!) ); }
}
}
Después de cambiar a una IP proxy:
// solicitud de proxy (API recomendada con ipipgo)
const proxyConfig = {
host: 'ipipgo IP Proxy Residencial Dinámico',
port: número de puerto,
auth: {
nombre de usuario: 'Su número de cuenta',
contraseña: 'Contraseña aleatoria'
}
}.
async function proxyRequest() {
try {
const response = await axios.get('URL del sitio de destino', {
proxy: proxyConfig, {
timeout: 5000 // Es importante establecer un tiempo de espera.
});
console.log('¡Datos en mano!') ;
} catch (error) {
console.log('Cambiar IP y continuar'); } catch (error) { console.log('Cambiar IP y continuar') ; }
}
}
El código del mundo real es el siguiente
recomendadoMétodos de extracción de API para ipipgoDiez veces más cómodo que los proxy pools tradicionales:
const { IpProxy } = require('ipipgo-sdk'); // SDK oficial
const puppeteer = require('puppeteer'); // SDK oficial.
async function smartCrawler() {
// Obtener la IP del proxy dinámicamente (¡énfasis añadido!)
const proxy = await IpProxy.getDynamicResidential({
país: 'us', protocolo: 'https'
protocolo: 'https'
});
const browser = await puppeteer.launch({
args: [`--proxy-server=${proxy.ip}:${proxy.port}`]
});
// Recuerda establecer el tiempo de espera de la página
const page = await browser.newPage();
await page.goto('url de destino', {timeout: 60000});
// Desliza el ratón aleatoriamente (para simular la acción de una persona real)
await page.mouse.move(100, 100); await page.
await page.waitForTimeout(2000);
const data = await page.evaluate(() => {
return document.querySelector('.price').innerText; }); const data = await page.evaluate(() => {
}).
await browser.close();
return datos; }); await browser.close(); return datos; }
}
Cuidado con el procesamiento simultáneo
Utilice esta rutina cuando necesite tener varios rastreadores activados al mismo tiempo:
const { Worker } = require('worker_threads');
function createWorker(proxy) {
return new Promise((resolver) => {
const worker = new Worker('. /crawler.js', {
workerData: { proxy }
});
worker.on('mensaje', resolver); worker.on('error', () => { workerData: { proxy } }; }
worker.on('error', () => {
console.log(`${proxy.ip} colgado, pasar al siguiente`); }); worker.on('message', () => { worker.on('error', () => {
});
});
}
// Crear instancias proxy por lotes
const proxyList = await IpProxy.batchGet(10); // toma 10 IPs a la vez
const results = await Promise.all(proxyList.map(createWorker));
Errores comunes Garantía de calidad
P: ¿Por qué recurrir a un agente residencial?
R: la IP del centro de datos lleva mucho tiempo en la lista negra de los principales sitios web, la IP residencial parece un usuario real. el proxy residencial dinámico de ipipgo es una banda ancha doméstica real, probado personalmente un cierto este y un cierto tesoro puede funcionar de forma estable.
P: ¿Cuál es la mejor manera de cobrar por una IP proxy?
R: Mira el escenario empresarial para elegir un paquete y guarda la lista de precios:
| Tipo de envase | Escenarios aplicables | precio del artículo |
|---|---|---|
| Residencial dinámico (estándar) | Recogida rutinaria de datos | 7,67 ¤/GB/mes |
| Residencial dinámico (empresa) | Requisitos de las visitas de alta frecuencia | 9,47 RMB/GB/mes |
| Viviendas estáticas | Escenarios de IP fija necesarios | 35/IP/mes |
P: ¿Cómo puedo evitar la vinculación de cuentas?
R: tres pasos: ① cada solicitud de IP de un país diferente ② borrar la huella del navegador ③ con la línea TK de ipipgo para hacer aislamiento de cuentas.
¿Por qué ipipgo?
Utilizado siete u ocho proveedores de servicios de agente, el último uso a largo plazo de ipipgo en tres razones: ① su API SERP puede subir directamente los datos de Google (otros tienen que tirar su propia) ② tres de la mañana para encontrar el servicio al cliente en realidad segundos atrás ③ soporte para protocolos socks5, para participar en las secuencias de comandos de artesanía también son convenientes. Recientemente encontró que también pueden ser personalizados por el esquema de facturación por hora, especialmente amigable para proyectos a corto plazo.
Por último, un rollo: aunque lo de la IP proxy está bien, pero no os quejéis de las webs de la gente hasta la saciedad. He visto a alguien abrir 100 hilos para rastrear, el resultado es que el otro servidor se cuelga, este tipo de cosas malas que no podemos hacer.

