🎯 Um navegador em nuvem personalizável e anti-detecção alimentado por Chromium desenvolvido internamente, projetado para rastreadores web e agentes de IA. 👉Experimente agora
De volta ao blog

Node-Unblocker para Web Scraping: Configuração, Riscos de Segurança e Alternativas Melhores

Olivia Patel
Olivia Patel

Senior Cybersecurity Analyst

31-Jul-2026

Resumo:

  • O Node-Unblocker é uma biblioteca compatível com Express que faz proxy e reescreve páginas da web remotas. Ele pode demonstrar a reescrita de URL em páginas simples, mas não é um solucionador moderno de anti-bot ou um navegador JavaScript geral.
  • Use o Node.js 24 LTS como base para uma implantação atual. Os exemplos mais antigos do Node.js 16 ainda encontrados online estão no fim da vida útil.
  • Vincule um servidor de demonstração a 127.0.0.1, exija uma lista de permissão e nunca exponha um proxy aberto não autenticado. Um destino controlado pelo usuário cria riscos de falsificação de solicitação do lado do servidor, rede interna, credenciais, abuso e registro.
  • OAuth, postMessage, código sensível à origem, sites complexos e comportamentos modernos de aplicativos podem falhar porque reescrever uma resposta não é o mesmo que executar o alvo em sua origem de navegador original.
  • Para scraping autorizado, escolha o Node-Unblocker apenas quando seu modelo de reescrita se adequar genuinamente. Uma API de scraping gerenciada é geralmente um limite melhor quando o resultado desejado é dados da página, em vez de um serviço de proxy público.

O Node-Unblocker é fácil de demonstrar: instale o Express, monte um objeto middleware e prefixe uma URL remota com um caminho local. Essa simplicidade pode ocultar a verdadeira questão de engenharia.

O projeto é uma biblioteca de proxy da web e reescrita de resposta. Ele não foi projetado para reproduzir um modelo de segurança de navegador moderno completo ou resolver sistemas de anti-bot contemporâneos. Uma vez que um serviço aceita URLs de destino arbitrárias, também se torna uma fronteira de rede de alto risco.

Este guia mostra uma configuração apenas localhost, explica onde o Node-Unblocker falha e fornece um modelo de decisão de segurança e construção versus gerenciado para web scraping.

O que é o Node-Unblocker?

O Node-Unblocker, publicado no npm como unblocker, é uma biblioteca Node.js para fazer proxy e reescrever páginas da web remotas. Ele pode modificar links e URLs de recursos para que um navegador continue navegando através do caminho do proxy.

O repositório oficial do projeto descreve-o como uma biblioteca de proxy e reescrita de página de uso geral. Suas limitações documentadas incluem fluxos OAuth, postMessage e vários sites complexos. O pacote é liberado sob AGPL-3.0, portanto, uma equipe de produção deve revisar as obrigações de licença com um advogado.

O registro atual do pacote npm lista a versão 2.3.1. A atividade do registro e a cadência de manutenção devem fazer parte da revisão de adoção; uma instalação bem-sucedida não é evidência de que um proxy está pronto para produção.

O Node-Unblocker pode:

  • encaminhar uma solicitação HTTP para uma página remota;
  • retransmitir e reescrever partes da resposta;
  • prefixar links para que a navegação posterior permaneça sob o caminho do proxy;
  • integrar-se com middleware do Express;
  • lidar com algumas atualizações de WebSocket.

Ele não automatiza:

  • a execução de JavaScript do lado do cliente no servidor;
  • a preservação de toda origem de navegador e suposição de segurança;
  • a resolução de CAPTCHAs ou validação avançada de tráfego;
  • a restrição de destinos;
  • a adição de autenticação de inquilinos;
  • a proteção de redes internas contra URLs controladas por usuários;
  • a provisão de uma rede de proxies residenciais ou segmentação regional;
  • a validação de que a página retornada contém os dados desejados.

Use uma base atual do Node.js

Use uma versão LTS suportada em vez de copiar um antigo arquivo de implantação. A tabela de lançamentos oficial do Node.js lista o Node.js 24 como LTS e o Node.js 16 como fim de vida no momento da escrita.

Este tutorial utiliza:

  • Node.js 24 LTS;
  • Express 5.2.1;
  • unblocker 2.3.1;
  • ligação localhost;
  • uma lista de permissão de destino fixa.

Crie o projeto:

bash Copy
mkdir node-unblocker-local-demo
cd node-unblocker-local-demo
npm init -y
npm install express@5.2.1 unblocker@2.3.1
npm pkg set private=true
npm pkg set engines.node=">=24 <25"

A fixação de versão torna a demonstração reproduzível. Execute npm audit, revise o gráfico de dependências e repita a revisão antes que cada imagem de implantação seja promovida.

Crie uma demonstração do Node-Unblocker apenas localhost

O código abaixo é deliberadamente restrito. Ele se vincula ao loopback, permite apenas dois domínios de documentação, rejeita protocolos não-HTTP, limita o comprimento da URL e desabilita cabeçalhos de identificação do Express.

Esta é uma demonstração ao vivo local, não uma defesa completa de SSRF para produção. Um proxy de produção também precisa de autenticação, regras de firewall de egress, controles de DNS, limites de recursos, monitoramento e resposta a abusos.

javascript Copy
"use strict";

const express = require("express");
const Unblocker = require("unblocker");

const app = express();
const port = Number(process.env.PORT || 8080);
const prefix = "/proxy/";
const allowedHosts = new Set(["example.com", "www.iana.org"]);
const unblocker = new Unblocker({ prefix });

app.disable("x-powered-by");

app.get("/healthz", (_req, res) => {
  res.json({ status: "ok" });
});

app.use((req, res, next) => {
  if (!req.originalUrl.startsWith(prefix)) {
    return next();
  }

const rawTarget = req.originalUrl.slice(prefix.length);
if (rawTarget.length > 2048) {
return res.status(414).send("A URL de destino é muito longa");
}

let target;
try {
target = new URL(rawTarget);
} catch {
return res.status(400).send("URL de destino inválida");
}

if (!["http:", "https:"].includes(target.protocol)) {
return res.status(400).send("Protocolo não permitido");
}
if (!allowedHosts.has(target.hostname)) {
return res.status(403).send("Host de destino não permitido");
}

return next();
});

app.use(unblocker);

app.use((_req, res) => {
res.status(404).send("Não encontrado");
});

const server = app.listen(port, "127.0.0.1", () => {
console.log(Proxy local: http://127.0.0.1:${port}${prefix});
});
server.on("upgrade", unblocker.onUpgrade);

Copy
Salve o arquivo como `server.js`, e então execute:

```bash
node --check server.js
node server.js

O vinculo de loopback não é cosmético. app.listen(port) pode ouvir em qualquer interface disponível dependendo do ambiente, o que pode expor o proxy a uma rede local ou a um ingress de contêiner.

Teste o proxy localmente

Abra um segundo terminal:

bash Copy
curl --fail http://127.0.0.1:8080/healthz
curl --fail "http://127.0.0.1:8080/proxy/https://example.com/"
curl -i "http://127.0.0.1:8080/proxy/https://invalid.example/"

A verificação de saúde deve retornar JSON. A página de exemplo na lista de permitidos deve ser retransmitida. O nome de host não aprovado deve receber uma resposta HTTP 403.

Use as ferramentas de desenvolvedor do navegador para inspecionar:

  • quais links foram reescritos;
  • se folhas de estilo e imagens ainda carregam;
  • se redirecionamentos permanecem no escopo;
  • se cookies ou cabeçalhos de autorização estão presentes;
  • se a página depende de chamadas de API do lado do cliente;
  • se o conteúdo final corresponde à página esperada.

Não teste com credenciais de conta. Um proxy pode observar cabeçalhos, corpos, cookies, parâmetros de consulta e URLs de destino.

Como funciona a reescrita do Node-Unblocker

Em alto nível:

  1. Express recebe uma solicitação sob o prefixo configurado.
  2. Node-Unblocker extrai o destino remoto.
  3. O servidor envia uma solicitação para esse destino.
  4. A biblioteca retransmite cabeçalhos e conteúdo de resposta.
  5. Para conteúdo suportado, ela reescreve URLs para que solicitações posteriores do navegador passem pelo mesmo prefixo.

Esse modelo funciona melhor para páginas convencionais com links e formulários comuns. Ele se torna frágil quando uma página depende de:

  • Política de Segurança de Conteúdo rígida;
  • verificações de origem;
  • URLs de recursos assinadas ou expiring;
  • trabalhadores de serviço;
  • mensagens entre janelas;
  • pontos finais construídos dinamicamente;
  • comportamento complexo de WebSocket;
  • armazenamento do navegador atado à origem original;
  • redirecionamentos OAuth;
  • sistemas anti-bot que avaliam rede, TLS, JavaScript e comportamento juntos.

Reescrever texto em uma resposta não pode reproduzir todos esses relacionamentos.

Limitações do Node-Unblocker para web scraping

Node-Unblocker encaminha e reescreve conteúdo. O JavaScript do lado do cliente pode ser executado no navegador do usuário, mas o servidor proxy não fornece um ambiente de navegador isolado que produz um DOM renderizado para um pipeline de dados.

Se um scraper precisa de uma grade de produtos criada após a execução do JavaScript, uma resposta proxy simples pode conter apenas um shell do aplicativo.

OAuth e postMessage podem falhar

OAuth depende de URLs de redirecionamento registradas, verificações de origem, cookies e regras de site cruzado. O postMessage depende de origens de janelas. Reescrever uma página sob uma origem de proxy altera essas suposições, então a autenticação e aplicativos embutidos podem falhar.

Sites complexos podem estar incompletos

Aplicações modernas distribuem trabalho entre HTML, pacotes de JavaScript, chamadas de API, trabalhadores, armazenamento e WebSockets. Alguns URLs podem ser reescritos enquanto outras solicitações geradas em tempo de execução escapam do caminho do proxy ou violam as políticas do destino.

Não fornece diversidade de IP

Uma instância auto-hospedada do Node-Unblocker usa a identidade de rede de seu host, a menos que outra camada de roteamento seja adicionada. Não inclui pools de IP residenciais, móveis, de ISP ou segmentados por região.

A manutenção pertence ao operador

O operador é responsável por atualizações de segurança do Node.js, dependências do npm, capacidade do proxy, políticas de destino, configuração de TLS, autenticação, logs, resposta a incidentes, termos do provedor de nuvem e relatórios de abuso. Isso é um serviço substancial, mesmo quando o middleware é pequeno.

O risco de proxy aberto e SSRF

Um serviço que busca uma URL fornecida pelo usuário pode ser utilizado para alcançar lugares que o usuário não pode acessar diretamente. Esse é o core do risco de falsificação de solicitação do lado do servidor (SSRF).

A OWASP SSRF Prevention Cheat Sheet recomenda listas de permissão quando os destinos são conhecidos e defesa em profundidade em ambas as camadas de aplicação e rede. Ela também destaca endereços de loopback, faixas de endereços privados, endereços link-local e serviços de metadados em nuvem.

Um proxy exposto pode ser abusado para:

  • escanear serviços privados;
  • acessar os metadados da instância em nuvem;
  • roubar credenciais ou tokens de acesso;
  • ocultar tráfego abusivo atrás do IP do operador;
  • consumir largura de banda e computação;
  • retransmitir conteúdo proibido;
  • capturar dados sensíveis de requisição e resposta;
  • criar riscos legais e de conta em nuvem para o operador.

Uma lista de negação de host não é suficiente. O DNS pode mudar entre a validação e a conexão, redirecionamentos podem mover para outro host, notações IP incomuns podem evadir verificações de string ingênuas, e o IPv6 expande as formas de endereço que devem ser tratadas.

Lista de verificação para implantação segura

Se um caso de uso em produção ainda justifica o Node-Unblocker, trate-o como um serviço de rede sensível à segurança:

  • Mantenha-o privado por padrão. Faça o binding no loopback ou em uma interface privada.
  • Exija autenticação forte. Use credenciais de serviço de curta duração e autorização de inquilino.
  • Prefira uma lista de permissão de destino. Defina os hosts e portas exatos de que o fluxo de trabalho empresarial precisa.
  • Imponha política de saída. Bloqueie loopback, redes privadas, intervalos link-local e serviços de metadados na camada de rede.
  • Valide após a resolução de DNS. Confirme que cada endereço resolvido é globalmente roteável e aprovado.
  • Controle redirecionamentos. Reavalie o destino a cada redirecionamento.
  • Limite métodos e protocolos. Rejeite qualquer coisa que o fluxo de trabalho não exija.
  • Defina limites para corpo, cabeçalho, URL, tempo e concorrência.
  • Proteja credenciais. Remova cabeçalhos de autorização de entrada, a menos que explicitamente exigido.
  • Minimize logs. Não armazene tokens, cookies, strings de consulta completas ou corpos de resposta por padrão.
  • Separe inquilinos. A sessão ou cookies de um cliente nunca devem alcançar outro.
  • Corrija o tempo de execução e dependências.
  • Revise a política de uso aceitável do provedor de nuvem.
  • Adicione detecção de abuso e um caminho para desligamento.

Uma lista de permissão em JavaScript é apenas uma camada. A política de rede deve permanecer eficaz mesmo que a validação do aplicativo falhe.

Se o objetivo é dados autênticos da página, em vez de operar um serviço de proxy, compare a API de Raspagem Universal com o custo total de garantir e manter o Node-Unblocker.

Node-Unblocker vs. uma API de raspagem gerenciada

Área de decisão Node-Unblocker API de raspagem gerenciada
Modelo primário Proxy auto-hospedado e reescrita de resposta Aquisição de página por meio de uma API
Renderização JavaScript Não fornecido pelo servidor em si Disponível quando a capacidade da API selecionada suportar
Pool de IP IP do host a menos que configurado separadamente Opções de roteamento gerenciadas pelo provedor
Segurança do destino Responsabilidade do operador Provedor garante seu serviço; cliente ainda controla o escopo do alvo
Compatibilidade do navegador Limitada pelo modelo de reescrita Melhor ajuste para aquisição de página renderizada
Propriedade da infraestrutura Serviço Node, rede, escalonamento, logs, incidentes Integração da API, validação, controles de uso
Melhor ajuste Uso de reescrita privada, restrita e permitida Coleta de dados autorizada onde a saída importa mais do que a operação proxy

Escolha o Node-Unblocker quando:

  • o conjunto de destinos for pequeno e fixo;
  • o comportamento de reescrita foi testado em todas as páginas suportadas;
  • o serviço permanecer privado;
  • a equipe pode ser responsável pela segurança da rede e resposta a incidentes;
  • uma página proxy convencional é o requisito real do produto.

Escolha uma camada de aquisição gerenciada quando:

  • o entregável desejado for HTML, Markdown ou dados estruturados de página;
  • alvos exigem renderização ou manipulação de tráfego especializado;
  • escolhas de região e rede são importantes;
  • manter um proxy seguro está fora do valor central do produto;
  • a equipe deseja um contrato de API com validação explícita.

Use Scrapeless Web Unlocker por meio da API de Raspagem Universal

Scrapeless expõe o ator Web Unlocker por meio da documentação da API de Raspagem Universal. O aplicativo envia uma URL de destino autorizada e valida o payload retornado.

Essa solicitação de lacuna de pré-requisito precisa de um SCRAPELESS_API_KEY e TARGET_URL de propriedade do leitor:

bash Copy
curl --request POST "https://api.scrapeless.com/api/v1/scraper/request" \
  --header "Content-Type: application/json" \
  --header "x-api-token: ${SCRAPELESS_API_KEY}" \
  --data "{
    \"actor\": \"unlocker.webunlocker\",
    \"input\": {
      \"url\": \"${TARGET_URL}\"
    }
  }"

O cliente ainda precisa:

  • restringir quais URLs os usuários podem enviar;
  • manter a chave da API fora do código do navegador;
  • definir orçamentos de solicitação e gastos;
  • validar a identidade da página e campos necessários;
  • colocar em quarentena a saída inesperada;
  • cumprir com a lei, termos do site, diretivas de robôs e requisitos de privacidade.
    Para uma visão defensiva da arquitetura de aquisição, leia como construir um rastreador da web distribuído. Para fundamentos de roteamento, veja para que são usados os proxies.

Estrutura de decisão de implantação

Use cinco perguntas:

  1. Qual é a saída? Uma página reescrita navegável, HTML bruto, conteúdo renderizado ou registros estruturados?
  2. Quem pode escolher o destino? Um trabalho interno fixo ou um usuário externo não confiável?
  3. Quais comportamentos do navegador são necessários? Links estáticos, renderização JavaScript, OAuth, WebSockets ou execução de origem original?
  4. Quem é responsável pelas operações de segurança? Engenheiros de aplicação, uma equipe de plataforma ou um provedor gerenciado?
  5. Como o sucesso é medido? Tempo de atividade do proxy ou registros aceitos e validados?

Para a maioria das equipes de scraping, a quinta pergunta é decisiva. Se a métrica de negócios forem registros completos, executar um serviço proxy aberto cria trabalho sem melhorar o contrato de dados.

Escolha o limite que corresponde ao trabalho

Node-Unblocker é útil para entender a reescrita de proxies e para fluxos de trabalho privados e específicos. Não deve ser apresentado como um desbloqueador universal, um navegador sem interface ou um proxy público seguro.

Mantenha a demonstração em localhost. Se um aplicativo real precisar, adicione autenticação, destinos restritos, política de egressos de rede, recursos limitados, logs seguros e um plano de incidentes antes de qualquer implantação.

Se o resultado desejado for dados da web autorizados, compare os preços do Scrapeless, depois crie uma conta no Scrapeless e teste um alvo representativo através da Universal Scraping API. Meça a aceitação de conteúdo e a propriedade da engenharia, não apenas se uma solicitação retornou HTTP 200.

Perguntas frequentes

Para que é usado o Node-Unblocker?

O Node-Unblocker é usado para construir um proxy da web em Node.js que encaminha solicitações e reescreve páginas remotas para que os links continuem pelo caminho do proxy. É mais adequado para casos de uso controlados e privados com destinos conhecidos.

Não. É um middleware de proxy e reescrita. Não fornece um navegador do lado do servidor que executa uma página e retorna um DOM renderizado.

O Node-Unblocker pode lidar com sistemas modernos anti-bot?

Não de forma confiável. As defesas modernas podem avaliar a reputação do IP, detalhes do TLS, estado do navegador, sinais JavaScript, cookies e comportamento. O Node-Unblocker não gerencia esse sistema completo.

É seguro expor o Node-Unblocker publicamente?

Nenhum proxy aberto não autenticado deve ser exposto publicamente. Destinos controlados pelo usuário criam riscos de SSRF, rede privada, metadados de nuvem, abuso, credenciais e registro. Mantenha-o privado e aplique autenticação, listas de permissões e controles de egressos na camada de rede.

Por que as páginas OAuth e postMessage falham através do Node-Unblocker?

Esses sistemas dependem de origens, redirecionamentos registrados, cookies e confiança entre janelas. Servir uma página sob uma origem de proxy altera o contexto de segurança e pode interromper o fluxo.

Qual é uma alternativa melhor para scraping na web?

Quando o objetivo é conteúdo de página ou dados estruturados, use uma API de fonte autorizada onde disponível ou uma API de scraping gerenciada que suporte a renderização e roteamento necessários. Mantenha a política de destino, validação, armazenamento e conformidade na aplicação cliente.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo