Ao fazer scraping de dados com Node.js, você pode encontrar obstáculos como censura na internet e proxies lentos. Felizmente, existe uma solução chamada node unblocker que pode ajudar.
O Unblocker é um proxy web que permite aos desenvolvedores contornar a censura na internet e acessar conteúdo com restrição geográfica. É uma solução de código aberto com benefícios como retransmissão rápida de dados, fáceis opções de personalização e suporte a múltiplos protocolos. Com o unblocker, você pode superar restrições de internet e fazer scraping de dados de sites que, de outra forma, seriam inacessíveis.
Neste artigo, você aprenderá tudo sobre o unblocker, incluindo suas vantagens em projetos de scraping de dados. Você também aprenderá como usá-lo para criar um proxy que pode ser utilizado para fazer scraping de conteúdo com restrição geográfica.
Vantagens de Usar o Node Unblocker
O Node Unblocker oferece uma ampla gama de benefícios e funcionalidades que o tornam uma ferramenta valiosa para usuários que buscam acesso irrestrito a conteúdo web. Além de ser uma solução de código aberto, suas outras vantagens incluem:
- atua como intermediário
- Retransmite dados de forma rápida e eficiente: O Unblocker se destaca por entregar dados ao cliente sem buffering. Como resultado, é uma das soluções de proxy mais rápidas disponíveis.
- É fácil de usar: O Unblocker oferece uma interface amigável, ótima para usuários de todos os níveis. Se você quiser integrar a solução ao seu projeto, o unblocker oferece uma API acessível e fácil de implementar.
- Pode ser altamente personalizável: Com o unblocker, os desenvolvedores têm flexibilidade para personalizar o proxy conforme seus requisitos específicos de scraping. Por exemplo, você pode configurar parâmetros como cabeçalhos de requisição e tratamento de respostas, proporcionando um processo de scraping personalizado e eficiente.
- Suporta múltiplos protocolos: O Unblocker suporta vários protocolos como HTTP, HTTPS e WebSockets. Essa versatilidade permite integração perfeita com diferentes cenários de scraping, oferecendo flexibilidade para interagir com uma ampla variedade de fontes de dados.
Como Começar com o Unblocker
Agora que você conhece todos os benefícios que o unblocker oferece, é hora de começar a usá-lo. Antes de começar, você precisa garantir que tem o Node.js e o npm instalados no seu sistema. Você também precisa de um navegador web para testar o projeto e uma conta gratuita no Render para hospedar a solução.
Após concluir esses pré-requisitos, é hora de criar o proxy web. Para isso, crie uma pasta chamada node-unblocker-proxy, abra-a no terminal e execute o seguinte comando para inicializar um novo projeto Node.js:
npm init -y
Em seguida, execute o seguinte comando para instalar as dependências necessárias:
npm install express unblocker
express é o framework de aplicação web usado para configurar um servidor web. node-unblocker é o pacote npm que ajuda a criar o proxy web.
Escreva o Script para Criar o Proxy
Após configurar todas as dependências, é hora de implementar o script do proxy web.
Crie um arquivo index.js na pasta raiz do projeto e cole o seguinte código nele:
// 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/`);
Neste código, você importa as dependências necessárias e cria uma instância do app Express. Além disso, você cria uma nova instância do Unblocker, que permite uma ampla gama de opções de configuração. Aqui, você define apenas a opção prefix, especificando o caminho com o qual as URLs proxiadas devem começar.
Como o unblocker exporta uma API compatível com Express, integrá-lo a uma aplicação Express é simples. Basta chamar o método use() da instância do app Express e passar a instância do Unblocker. Em seguida, você inicia a aplicação Express usando o método listen(). O .on("upgrade", unblocker.onUpgrade) garante que as conexões WebSocket sejam tratadas corretamente pelo unblocker.
Teste o Proxy Localmente
Para testar a implementação do proxy localmente, execute o seguinte comando no terminal:
node index.js
Você também pode usar o comando
DEBUG=unblocker:* node index.jsse quiser ver informações detalhadas sobre cada requisição feita via proxy.
Em seguida, pegue qualquer URL e adicione o prefixo localhost/proxy/ (ex: localhost/proxy/https://brightdata.com/) e abra-a no navegador web.
Você deverá ver a página inicial da Bright Data. Inspecione rapidamente a aba Network do navegador e verá que todas as requisições estão passando pelo proxy (isso pode ser verificado na coluna Domain da aba Network):

Implante o Proxy no Render
Agora que você testou o proxy, é hora de implantá-lo. Antes disso, abra o arquivo package.json na pasta raiz do projeto e modifique o par chave-valor scripts com o seguinte:
"scripts": {
"start": "node index"
}
Isso fornece um comando para iniciar o servidor web Express após ser hospedado no Render.
Para implantar o proxy web, faça upload do código do proxy em um repositório GitHub. Em seguida, faça login na sua conta do Render:

Clique no botão New + e selecione Web Service:

Conecte seu repositório do proxy web selecionando o botão Connect. Pode ser necessário configurar sua conta para que o Render possa acessar o repositório. Isso só é necessário se você ainda não configurou o Render para acessar o repositório específico do GitHub:

Preencha os detalhes necessários para o seu serviço web e selecione Create Web Service na parte inferior da página:

Você pode deixar o comando de início como está se preferir usar o Yarn, ou alterá-lo para
npm run startse quiser usar o npm.
Após o proxy web ser implantado com sucesso, é hora de testá-lo. Pegue qualquer URL e adicione o prefixo com a <URL-DO-APP-IMPLANTADO>/proxy/ (ex: https://node-web-proxy-gvn6.onrender.com/proxy/https://brightdata.com/). Em seguida, abra-a no navegador web.
Inspecione a aba de rede do navegador e você verá que todas as requisições estão passando pelo proxy implantado:

Use o Proxy para Fazer Requisições de Scraping
Após verificar que todas as requisições estão passando pelo proxy implantado, é hora de fazer uma requisição de scraping. Neste tutorial, você usará a biblioteca Puppeteer, mas qualquer outra biblioteca de teste, como Cheerio ou Nightmare, também funciona.
Se você ainda não tem o Puppeteer instalado, faça isso agora executando npm i puppeteer. Em seguida, crie um arquivo scrape.js na pasta raiz do projeto e adicione o seguinte 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();
Lembre-se de substituir
<DEPLOYED-APP-URL>pela URL do app que você implantou no Render.
Este trecho de código configura o Puppeteer e faz scraping de dados de posts do blog da Bright Data. Todos os cards de posts do blog no site da Bright Data têm o nome de classe .post_item. O código recupera todos os posts, percorre o objeto posts, extrai o título, link e autor de cada post, insere esses dados no array blogData e, por fim, registra todas essas informações no console.
Como Escolher o Melhor Proxy para o Seu Node Unblocker?
Ao integrar um proxy com o Node Unblocker, é fundamental adaptar sua escolha às demandas do projeto e aos desafios específicos que você antecipa. Aqui estão alguns aspectos essenciais a considerar ao selecionar um proxy:
- Desempenho e Confiabilidade: Opte por um proxy conhecido por suas velocidades de conexão rápidas e alta disponibilidade para garantir acesso contínuo a dados e eficiência no scraping de dados.
- Flexibilidade Geográfica: Escolha um proxy que ofereça uma ampla variedade de localizações geográficas. Esse recurso é vital para contornar restrições regionais e acessar conteúdo localizado.
- Rotação de IP: Para reduzir o risco de ser bloqueado por sites, selecione um serviço de proxy que forneça endereços IP rotativos. Esse recurso ajuda a manter o acesso apresentando novos IPs a cada requisição.
- Protocolos de Segurança: Certifique-se de que o serviço de proxy inclua medidas de segurança robustas, como criptografia SSL, para proteger a integridade dos dados e a privacidade, especialmente se você lida com informações sensíveis.
- Escalabilidade: Considere se o serviço de proxy pode escalar para atender às demandas crescentes conforme suas necessidades de scraping aumentam. A flexibilidade na escala de recursos é crucial para suportar tarefas de scraping maiores ou mais complexas.
- Suporte e Documentação: Suporte abrangente e documentação detalhada podem facilitar muito o processo de integração, especialmente ao configurar setups complexos com o Node Unblocker.
Ao avaliar cuidadosamente esses fatores, você pode selecionar um serviço de proxy que não apenas atenda às suas necessidades atuais, mas também acomode o crescimento futuro e as mudanças nas suas atividades de scraping.
Conclusão
O Node Unblocker oferece uma solução robusta para scraping de dados em Node.js, dando aos desenvolvedores a capacidade de contornar a censura na internet e acessar conteúdo com restrição geográfica. Sua interface amigável, amplas opções de personalização e suporte a múltiplos protocolos o tornam uma ferramenta valiosa para fazer scraping de dados de sites com eficiência. Neste guia, você aprendeu tudo sobre o unblocker, suas vantagens em projetos de scraping de dados e como utilizá-lo.
No mundo atual orientado a dados, o scraping de dados tornou-se uma ferramenta indispensável para coletar insights e informações valiosas. No entanto, o scraping de dados traz seus próprios desafios, como bloqueio de IP, limitação de taxa e restrições geográficas, que podem prejudicar os esforços de coleta de dados e dificultar a obtenção de informações cruciais.
A Bright Data oferece uma infraestrutura completa que aborda esses desafios. Com uma vasta rede de IPs residenciais, ISP, datacenter e móveis, a Bright Data permite que os usuários roteiem suas requisições de scraping por uma diversidade de endereços IP de todo o mundo. Isso não apenas garante anonimato, mas também oferece a capacidade de acessar conteúdo com restrição geográfica e superar obstáculos que possam dificultar os esforços de coleta de dados.
Não sabe qual proxy da Bright Data você precisa? Registre-se agora e fale com um de nossos especialistas em dados para encontrar a melhor solução para suas necessidades.