Cuando realizas scraping web con Node.js, puedes encontrar obstáculos como la censura de internet y proxies lentos. Afortunadamente, existe una solución llamada node unblocker que puede ayudarte.
Unblocker es un proxy web que permite a los desarrolladores eludir la censura de internet y acceder a contenido con restricciones geográficas. Es una solución de código abierto con beneficios como retransmisión rápida de datos, opciones de personalización sencillas y soporte para múltiples protocolos. Con unblocker, puedes superar las restricciones de internet y extraer datos eficientemente de sitios web que de otro modo serían inaccesibles.
En este artículo, aprenderás todo sobre unblocker, incluidas sus ventajas en proyectos de scraping web. También aprenderás a usarlo para crear un proxy que sirva para extraer contenido con restricciones geográficas.
Ventajas de Usar Node Unblocker
Node Unblocker ofrece una amplia gama de beneficios y funcionalidades que lo convierten en una herramienta valiosa para los usuarios de internet que buscan acceso sin restricciones al contenido web. Además de ser una solución de código abierto, sus otras ventajas incluyen las siguientes:
- actúa como intermediario
- Retransmite datos de forma rápida y eficiente: Unblocker destaca en la entrega de datos al cliente sin almacenamiento en búfer. Como resultado, es una de las soluciones de proxy más rápidas disponibles.
- Es fácil de usar: Unblocker proporciona una interfaz fácil de usar que es ideal para usuarios de todos los niveles. Si deseas integrar la solución en tu proyecto, unblocker ofrece una API accesible y fácil de implementar.
- Puede ser altamente personalizable: Con unblocker, los desarrolladores tienen la flexibilidad de personalizar el proxy según sus requisitos específicos de scraping. Por ejemplo, puedes configurar parámetros como encabezados de solicitud y manejo de respuestas, proporcionando un proceso de scraping personalizado y eficiente.
- Soporta múltiples protocolos: Unblocker admite varios protocolos como HTTP, HTTPS y WebSockets. Esta versatilidad permite una integración fluida con diferentes escenarios de scraping, ofreciendo a los desarrolladores la flexibilidad y comodidad para interactuar con una amplia gama de fuentes de datos.
Cómo Empezar con Unblocker
Ahora que conoces todos los beneficios que ofrece unblocker, es momento de empezar a usarlo. Antes de comenzar, debes asegurarte de tener Node.js y npm instalados en tu sistema. También necesitas un navegador web para probar el proyecto y una cuenta gratuita de Render para alojar la solución.
Una vez completados estos requisitos previos, es hora de crear el proxy web. Para ello, crea una carpeta llamada node-unblocker-proxy, ábrela en tu terminal y ejecuta el siguiente comando para inicializar un nuevo proyecto de Node.js:
npm init -y
Luego ejecuta el siguiente comando para instalar las dependencias que necesitas:
npm install express unblocker
express es el framework de aplicación web que usas para configurar un servidor web. node-unblocker es el paquete npm que te ayuda a crear el proxy web.
Escribe el Script para Crear el Proxy
Una vez configuradas todas tus dependencias, es hora de implementar el script del proxy web.
Crea un archivo index.js en la carpeta raíz del proyecto y pega el siguiente código en él:
// import required dependencies
const express = require("express");
const Unblocker = require("unblocker");
// create an express app instance
const app = express();
// create a new Unblocker instance
const unblocker = new Unblocker({ prefix: "/proxy/" });
// set the port
const port = 3000;
// add the unblocker middleware to the Express application
app.use(unblocker);
// listen on specified port
app.listen(port).on("upgrade", unblocker.onUpgrade);
console.log(`proxy running on http://localhost:${port}/proxy/`);
En este código, importas las dependencias necesarias y creas una instancia de la aplicación Express. Además, creas una nueva instancia de Unblocker, que permite una amplia gama de opciones de configuración. Aquí, solo estableces la opción prefix, especificando la ruta con la que deben comenzar las URLs proxificadas.
Dado que unblocker exporta una API compatible con Express, integrarlo en una aplicación Express
es sencillo. Solo tienes que llamar al método use() de la instancia de la aplicación Express y pasar la instancia de Unblocker. Luego inicias la aplicación Express usando el método listen(). .on("upgrade", unblocker.onUpgrade) garantiza que las conexiones WebSocket sean manejadas correctamente por unblocker.
Prueba el Proxy Localmente
Para probar la implementación del proxy localmente, ejecuta el siguiente comando en tu terminal:
node index.js
También puedes usar el comando
DEBUG=unblocker:* node index.jssi deseas ver información detallada sobre cada solicitud realizada a través del proxy.
A continuación, toma cualquier URL y agrégale el prefijo localhost/proxy/ (ej. localhost/proxy/https://brightdata.com/), y ábrela en tu navegador web.
Deberías ver la página de inicio de Bright Data. Inspecciona rápidamente la pestaña Network de tu navegador y verás que todas las solicitudes pasan a través del proxy (puedes verlo en la columna Domain de la pestaña Network):

Despliega el Proxy en Render
Ahora que has probado el proxy, es hora de desplegarlo. Antes de hacerlo, abre el archivo package.json en la carpeta raíz del proyecto y modifica el par clave-valor scripts con lo siguiente:
"scripts": {
"start": "node index"
}
Esto proporciona un comando para iniciar el servidor web Express una vez que esté alojado en Render.
Para desplegar el proxy web, sube el código del proxy a un repositorio de GitHub. Luego inicia sesión en tu cuenta de Render:

Haz clic en el botón New + y selecciona Web Service:

Conecta tu repositorio del proxy web seleccionando el botón Connect. Es posible que necesites configurar tu cuenta para que Render pueda acceder al repositorio. Esto solo es necesario si no has configurado Render para acceder al repositorio específico de GitHub:

Completa los detalles requeridos para tu servicio web y selecciona Create Web Service en la parte inferior de la página:

Puedes dejar el comando de inicio tal como está si prefieres usar Yarn, o puedes cambiarlo a
npm run startsi deseas usar npm.
Una vez que el proxy web se haya desplegado exitosamente, es hora de probarlo. Toma cualquier URL y agrégale el prefijo de la app desplegada <DEPLOYED-APP-URL>/proxy/ (ej. https://node-web-proxy-gvn6.onrender.com/proxy/https://brightdata.com/). Luego ábrela en tu navegador web.
Inspecciona la pestaña de red de tu navegador y deberías ver que todas las solicitudes pasan a través del proxy desplegado:

Usa el Proxy para Realizar Solicitudes de Scraping
Una vez que hayas verificado que todas las solicitudes pasan a través del proxy desplegado, es hora de realizar una solicitud de scraping. En este tutorial, usarás la biblioteca Puppeteer, aunque cualquier otra biblioteca de pruebas, como Cheerio o Nightmare, también funciona.
Si aún no tienes Puppeteer instalado, hazlo ahora ejecutando npm i puppeteer. Luego crea un archivo scrape.js en la carpeta raíz del proyecto y añade el siguiente código:
// import puppeteer
const puppeteer = require("puppeteer");
const scrapeData = async () => {
// launch the browser
const browser = await puppeteer.launch({
headless: false,
});
// open a new page and navigate to the defined URL
const page = await browser.newPage();
await page.goto("<DEPLOYED-APP-URL>/proxy/https://brightdata.com/blog");
// get the content of the webpage
const data = await page.evaluate(() => {
// variable to hold all the posts data
let blogData = [];
// extract all elements with the specified class
const posts = document.querySelectorAll(".post_item");
// loop through the posts object, extract required data and push it to the blogData array
for (const post of posts) {
const title = post.querySelector("h5").textContent;
const link = post.href;
const author = post
.querySelector(".author_box")
.querySelector(".author_box__details")
.querySelector("div").textContent;
const article = { title, link, author };
blogData.push(article);
}
return blogData;
});
// log the data to the console
console.log(data);
// close the browser instance
await browser.close();
};
// call the scrapeData function
scrapeData();
Recuerda reemplazar
<DEPLOYED-APP-URL>con la URL de la aplicación que desplegaste en Render.
Este fragmento de código configura Puppeteer y extrae datos de publicaciones del blog de Bright Data. Todas las tarjetas de publicaciones del blog en el sitio web de Bright Data tienen un nombre de clase .post_item. Recupera todas las publicaciones, recorre el objeto posts, extrae el título, enlace y autor de cada publicación, introduce estos datos en el array blogData y, finalmente, registra toda esta información en la consola.
¿Cómo Elegir el Mejor Proxy para tu Node Unblocker?
Al integrar un proxy con Node Unblocker, es fundamental adaptar tu elección a las demandas de tu proyecto y los desafíos específicos que anticipes. Aquí hay varios aspectos clave a considerar al seleccionar un proxy:
- Rendimiento y Fiabilidad: Opta por un proxy conocido por sus velocidades de conexión rápidas y alta disponibilidad para garantizar un acceso fluido a los datos y eficiencia en el scraping web.
- Flexibilidad Geográfica: Elige un proxy que ofrezca una amplia gama de ubicaciones geográficas. Esta característica es vital para eludir restricciones regionales y acceder a contenido localizado.
- Rotación de IP: Para reducir el riesgo de ser bloqueado por sitios web, selecciona un servicio de proxy que proporcione direcciones IP rotativas. Esta característica ayuda a mantener el acceso presentando nuevas IPs en cada solicitud.
- Protocolos de Seguridad: Asegúrate de que el servicio de proxy incluya medidas de seguridad robustas como el cifrado SSL para proteger la integridad y privacidad de tus datos, especialmente si manejas información sensible.
- Escalabilidad: Considera si el servicio de proxy puede escalar para satisfacer demandas crecientes a medida que tus necesidades de scraping aumenten. La flexibilidad para escalar recursos es crucial para soportar tareas de scraping más grandes o complejas.
- Soporte y Documentación: Un soporte completo y una documentación detallada pueden facilitar enormemente el proceso de integración, especialmente al configurar configuraciones complejas con Node Unblocker.
Al evaluar cuidadosamente estos factores, puedes seleccionar un servicio de proxy que no solo se adapte a tus necesidades actuales, sino que también acomode el crecimiento futuro y los cambios en tus actividades de scraping.
Conclusión
Node Unblocker proporciona una solución robusta para el scraping web en Node.js, ofreciendo a los desarrolladores la capacidad de eludir la censura de internet y acceder a contenido con restricciones geográficas. Su interfaz fácil de usar, las amplias opciones de personalización y el soporte para múltiples protocolos lo convierten en una herramienta valiosa para extraer datos de sitios web de manera eficiente. En esta guía, aprendiste todo sobre unblocker, sus ventajas en proyectos de scraping web y cómo puedes usarlo.
En el mundo actual impulsado por los datos, el scraping web se ha convertido en una herramienta indispensable para recopilar información e insights valiosos. Sin embargo, el scraping web conlleva sus propios desafíos, como el bloqueo de IP, la limitación de velocidad y las restricciones geográficas, que pueden obstaculizar los esfuerzos de recopilación de datos y dificultar la obtención de información crucial.
Bright Data ofrece una infraestructura integral que aborda estos desafíos. Con una vasta red de IPs residenciales, ISP, de centro de datos y móviles, Bright Data permite a los usuarios enrutar sus solicitudes de scraping a través de una amplia gama de direcciones IP de todo el mundo. Esto no solo garantiza el anonimato, sino que también proporciona la capacidad de acceder a contenido con restricciones geográficas y superar los obstáculos que pueden dificultar los esfuerzos de recopilación de datos.
¿No estás seguro de qué proxy de Bright Data necesitas? Regístrate ahora y habla con uno de nuestros expertos en datos para encontrar la mejor solución para tus necesidades.