Inicie com um proxy e autentique#
import puppeteer from "puppeteer";
const browser = await puppeteer.launch({
headless: true,
args: ["--proxy-server=http://res.proxy-cyber.com:9000", "--no-first-run"],
});
const page = await browser.newPage();
await page.authenticate({ username: "USER-cc-us-sid-run1-ttl-30m", password: "PASS" });
await page.goto("https://api.ipify.org", { waitUntil: "domcontentloaded", timeout: 45000 });
console.log(await page.evaluate(() => document.body.innerText));
await browser.close();Atribua um identificador de sessão diferente a cada fluxo independente quando o gateway o permitir. Confirme a duração e os parâmetros geográficos nos dados de ligação. Um dispositivo residencial pode desligar-se antes do prazo pedido; uma sessão persistente não garante o mesmo IP durante dias. Para um endereço fixo, compare produtos estáticos dedicados.
Um proxy por navegador#
O parâmetro de arranque --proxy-server define o encaminhamento predefinido do navegador. O Puppeteer atual também permite proxyServer em browser.createBrowserContext(), com credenciais através de page.authenticate(). Utilize contextos diferentes para configurações de proxy distintas e diretórios de dados separados para perfis persistentes; verifique a saída em cada contexto.
Bloqueie imagens, fontes e mídia#
await page.setRequestInterception(true);
page.on("request", (req) => {
const t = req.resourceType();
if (["image", "media", "font", "stylesheet"].includes(t)) return req.abort();
req.continue();
});Consistência#
- Definir
Accept-Languagee o fuso horário do país de saída:page.setExtraHTTPHeaders({\"Accept-Language\": \"de-DE,de;q=0.9\"})epage.emulateTimezone(\"Europe/Berlin\"). - Desative vazamentos de WebRTC com
--force-webrtc-ip-handling-policy=disable_non_proxied_udpnos argumentos de lançamento. - Mantenha um navegador por conta; reutilize seu diretório de dados do usuário se a conta parecer um dispositivo de retorno.
Erros que você encontrará#
| Sintoma | Causa | Correção |
|---|---|---|
| rede::ERR_TUNNEL_CONNECTION_FAILED | Gateway recusou CONNECT: credenciais, parâmetro ou nenhuma saída | Reproduza com cURL -v para ler o código do gateway |
| net::ERR_PROXY_AUTH_UNSUPPORTED / prompts | authenticate() chamado após a navegação | Chame page.authenticate antes de ir para |
| O mesmo IP em todos os navegadores | Mesmo ID de sessão reutilizado | Use um navegador -sid- distinto ou omita-o |
| Primeiro carregamento muito lento | Saída doméstica mais página pesada | Bloquear recursos; aumentar o tempo limite para 45 s |
Perguntas que as pessoas fazem#
O Puppeteer pode usar o SOCKS5 com uma senha?
O Chrome não oferece suporte à autenticação SOCKS5. Use o proxy HTTP na porta 9000 com page.authenticate ou coloque o IP do seu servidor na lista de permissões e passe --proxy-server=socks5://res.proxy-cyber.com:9001.