Nodeunblocker no es solo una solución de proxy personalizada, sino que permite la interceptación y modificación de las solicitudes entrantes y salientes a través de middleware.
Podemos utilizar esta función para bloquear la carga de recursos específicos en función del tipo de recurso o del dominio, actualizar el agente de usuario, sustituir el contenido devuelto o inyectar tokens de autenticación en los encabezados de las solicitudes.
Puedes encontrar una lista completa de ejemplos aquí.
Empecemos creando un middleware para configurar un agente de usuario personalizado. Crea un archivo llamado user-agent.js y añade este código:
module.exports = function(userAgent) {
function setUserAgent(data) {
data["headers"]["user-agent"] = userAgent
}
return setUserAgent
}
Esta función acepta el agente de usuario personalizado con el parámetro userAgent y lo registra en el objeto data utilizando la función setUserAgent. Node unblocked llamará a la función setUserAgent con cada solicitud.
const userAgent = require('./user-agent')
Configuramos el parámetro requestMiddleware en el constructor de Unblocker y ya deberíamos estar listos.
const unblocker = new Unblocker({
prefix: '/proxy/',
requestMiddleware: [userAgent("nodeunblocker/1.5")]
})
Nuestro archivo index.js debería tener este aspecto:
const express = require('express')
const Unblocker = require('unblocker')
const userAgent = require('./user-agent')
const app = express()
const port = 8080
const unblocker = new Unblocker({
prefix: '/proxy/',
requestMiddleware: [userAgent("nodeunblocker/1.5")]
})
app.use(unblocker)
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(process.env.PORT || 8080, () => {
console.log(`Example app listening on port ${port}`)
}).on('upgrade', unblocker.onUpgrade)
Es hora de comprobar si nuestro código funciona. Tenemos que cambiar la URL de node-unblocker para asegurarnos de que los encabezados se actualizan correctamente.
Reinicia la aplicación y abre esta URL en tu navegador:
http://localhost:8080/proxy/https://www.whatsmyua.info/
Si el sitio muestra nodeunblocker/1.5, nuestro middleware funciona.