Usando o Node Unblocker para Scraping de Dados

Neste tutorial, você explicará aos leitores o que é o node-unblocker, suas vantagens em projetos de scraping de dados e como ele é usado.
10 min de leitura
Node Unblocker for Web Scraping

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.js se 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):

Comandos de teste do proxy local e verificação no navegador

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:

Configurando e implantando o proxy no 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 start se 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.