
Prácticas con Node.js para crear un middleware proxy
Hierro viejo debe haber encontrado la necesidad de escenarios de IP proxy, ¿verdad? Por ejemplo, el rastreo de datos por el sitio bloqueado IP, o para probar el efecto del acceso a diferentes regiones. ¡Hoy usamos Node.js todo el middleware proxy HTTP simple, sin esos marcos complejos, directamente en el módulo nativo para participar en!
Prepara primero un nuevo proyecto. Golpéalo en el terminal.npm init -yConstruir un package.json. Aquí está el truco, el módulo central que vamos a utilizar es elhttp-proxyEste es más fácil de usar que hacer fideos instantáneos. Comandos de instalación:
npm install http-proxy --save
Tres líneas de código para iniciar un servicio proxy
Crea un nuevo archivo proxy.js y codifica esto:
const http = require('http');
const httpProxy = require('http-proxy');
const proxy = httpProxy.createProxyServer();
const servidor = http.createServer((req, res) => {
proxy.web(req, res, {
target: 'http://your-backend-server.com',
changeOrigin: true
});
});
server.listen(3000, () => {
console.log('¡El servicio proxy se está ejecutando en el puerto 3000!) ;
});
He aquí un escollo con el que hay que tener cuidado.changeOriginEste parámetro debe ser verdadero, de lo contrario el sitio de destino puede no reconocer su solicitud. Es como si vas a casa de alguien sin llamar, te bloquearán, ¿verdad?
Pon un chaleco IP en el proxy.
Es hora de sacar nuestroservicio proxy ipipgoarriba, cambia el código a esto:
const proxy = httpProxy.createProxyServer({
agente: nuevo http.Agente({
agente: new http.Agent({ keepAlive: true, proxy: '')
proxy: 'http://username:password@gateway.ipipgo.com:8080'
})
});
Aquí nombre de usuario y contraseña para ir a la página oficial de ipipgo para aplicar, su piscina IP proxy es muy grande, los nodos de todo el país. Especialmente adecuado para escenas que requieren el cambio frecuente de IP, como agarrar los zapatos y los billetes o algo así (cabeza de perro manual).
Cómo jugar con los grupos de IP dinámicas
Si necesitas cambiar de IP automáticamente, puedes modificarlo así:
const ipPool = [
'http://ip1.ipipgo.com:8080',
'http://ip2.ipipgo.com:8080'.
//... Más IPs
];
function getRandomIP() {
return ipPool[Math.floor(Math.random() ipPool.length)]; }
}
// Usar esto para peticiones proxy
proxy.web(req, res, {
target: 'http://your-backend-server.com',
agente: new http.Agent({
proxy: getRandomIP()
})
});
Se recomienda usar la API dinámica proporcionada por ipipgo para obtener IPs directamente, sus IPs son altamente anónimas, y es más estable usarlas. He usado varios proxies antes, e ipipgo tiene la tasa de supervivencia más alta, y básicamente no encuentro IPs muertas que no pueda usar.
Directrices sobre desminado de problemas comunes
| sintomático | antídoto |
|---|---|
| Tiempo de espera de la conexión | Compruebe si la IP del proxy está viva, ipipgo tiene monitorización en tiempo real en segundo plano. |
| Devolución 407 error | Asegúrate de que la información de autenticación se rellena correctamente, y no introduzcas símbolos especiales en la contraseña. |
| tiempo de respuesta lento | Alternar el nodo más cercano, ipipgo admite la selección de IP por ciudad |
Trucos y consejos prácticos
1. Recuerde establecer un tiempo de espera para que el programa no muera esperando:
proxy.web(req, res, {
target: 'http://your-backend-server.com',
timeout: 5000 // 5 segundos para ahogar la línea
});
2. Así se trata con los sitios HTTPS:
proxy.on('error', (err, req, res) => {
res.writeHead(500, {
Content-Type': 'text/plain'
});
res.end('¡El proxy se está moviendo, compruébalo!) ;
});
3. Para registrar logs, puedes colgar un morgan middleware, o escribir un simple log middleware:
app.use((req, res, next) => {
console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
next();
});
Tiempo de control de calidad
P: ¿Qué debo hacer si la IP proxy siempre falla?
R: Se recomienda el uso de ipipgo piscina IP dinámica, su tasa de supervivencia IP a 98% o más, la conmutación automática sin preocuparse por la
P: ¿Cómo se gestionan las situaciones de alta concurrencia?
R: El propio mecanismo de bucle de eventos de Node.js es adecuado para IO-intensivo, pero para controlar el número de concurrencia, puedes trabajar con la librería async parallelLimit
P: ¿Cómo elijo un proveedor de servicios proxy?
R: Céntrate en tres aspectos: tamaño del pool IP, velocidad de respuesta, soporte de protocolos. Como ipipgo soporte socks5 y http protocolos duales utilizados más flexible.
Por último, para hacer rastreadores y otras cosas para cumplir con las reglas del sitio, no se colgó en sus servidores. ¡Proxy IP también debe prestar atención a la ley básica, somos intercambios técnicos, no lo tome para hacer cosas malas ah!

