Configuração de proxy no Puppeteer: técnicas de autenticação, rotação e bypass
Aprenda como configurar proxies no Puppeteer para aprimorar a automação, gerenciar a autenticação e evitar bloqueios com eficácia.

Proxies são essenciais para Marionetista automação. Eles escondem seu IP, ignoram restrições geográficas e ajudam a evitar banimentos. Aqui está o que você aprenderá sobre o uso de proxies em Marionetista:
- Configurar proxies: Adicione proxies ao seu navegador e autentique-os com facilidade.
- Girar proxies: Distribua solicitações entre vários IPs para evitar detecção.
- Lidar com erros: Repita solicitações, gerencie bloqueios e troque proxies quando necessário.
- Otimizar velocidade: Bloqueie recursos desnecessários e gire os agentes de usuário para uma coleta mais rápida e furtiva.
Comparação rápida de tipos de proxy
| Tipo de proxy | Agilidade (Speed) | Anonimato | Custo | Mais Adequada Para |
|---|---|---|---|---|
| Datacenter | pomposidade | Baixa | Acessível | Raspagem de alto volume |
| Residencial | Moderado | Alta | Caro | Tarefas sensíveis ou geoespecíficas |
| Mobile | Devagar | Muito alto | Muito caro | Verificação de anúncios, CAPTCHAs |
Marionetista Integração de proxy com Dados brilhantes - Tutorial completo 2024
Configuração básica de proxy
Configurar um proxy é um passo fundamental para otimizar sua automação Puppeteer. Veja como você pode começar.
Adicionando um servidor proxy
Você pode configurar um servidor proxy durante a inicialização do navegador no Puppeteer assim:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">args</span>: [<span class="hljs-string">'--proxy-server=http://157.230.255.230:8118'</span>]
});
<span class="hljs-keyword">const</span> page = <span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">newPage</span>();
Também é importante lidar com erros ao navegar com um proxy:
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(<span class="hljs-string">'https://books.toscrape.com/'</span>, {
<span class="hljs-attr">timeout</span>: <span class="hljs-number">70000</span>,
<span class="hljs-attr">waitUntil</span>: <span class="hljs-string">'networkidle2'</span>
});
} <span class="hljs-keyword">catch</span> (err) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(err);
}
Em seguida, você precisará proteger sua conexão configurando a autenticação de proxy.
Etapas de autenticação de proxy
Se o seu proxy exigir autenticação, você pode usar o seguinte método:
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">authenticate</span>({
<span class="hljs-attr">username</span>: <span class="hljs-string">'your_proxy_username'</span>,
<span class="hljs-attr">password</span>: <span class="hljs-string">'your_proxy_password'</span>
});
Aqui está uma rápida comparação de diferentes métodos de autenticação:
| Método de autenticação | Melhor caso de uso | Complexidade de implementação |
|---|---|---|
| página.autenticar() | Autenticação de proxy padrão | Baixa |
| pacote proxy-chain | Roteamento avançado | Suporte: |
| Cabeçalho de autorização de proxy | Sites somente HTTP | Alta |
Depois de configurar seu proxy e autenticação, é hora de testá-lo.
Testando configurações de proxy
Certifique-se de que seu proxy esteja funcionando seguindo estas etapas:
- Teste a conexão com um URL de exemplo.
- Confirme se o IP do proxy está sendo usado.
- Monitore o desempenho da configuração.
Aqui está um script de exemplo para testar seu proxy:
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">testProxy</span>(<span class="hljs-params"></span>) {
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">args</span>: [<span class="hljs-string">'--proxy-server=http://157.230.255.230:8118'</span>]
});
<span class="hljs-keyword">const</span> page = <span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">newPage</span>();
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(<span class="hljs-string">'https://books.toscrape.com/'</span>, {
<span class="hljs-attr">timeout</span>: <span class="hljs-number">70000</span>,
<span class="hljs-attr">waitUntil</span>: <span class="hljs-string">'networkidle2'</span>
});
<span class="hljs-keyword">const</span> content = <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">content</span>();
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">'Proxy connection successful'</span>);
} <span class="hljs-keyword">catch</span> (err) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">'Proxy connection failed:'</span>, err);
}
<span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">close</span>();
}
O teste garante que sua configuração de proxy esteja pronta para uso em suas tarefas de automação.
Métodos de rotação de proxy
Gerenciar a rotação de proxy é essencial para evitar proibições de IP e evitar limitações de taxa ao coletar ou automatizar tarefas on-line.
Construindo uma lista de proxy
Para começar, crie uma lista de proxies que podem ser rotacionados eficientemente. Aqui está um exemplo de como configurar e usar um pool de proxy:
<span class="hljs-keyword">const</span> proxyList = [
{
<span class="hljs-attr">host</span>: <span class="hljs-string">'157.230.255.230'</span>,
<span class="hljs-attr">port</span>: <span class="hljs-string">'8118'</span>,
<span class="hljs-attr">username</span>: <span class="hljs-string">'user1'</span>,
<span class="hljs-attr">password</span>: <span class="hljs-string">'pass1'</span>
},
<span class="hljs-comment">// Add more proxy configurations</span>
];
<span class="hljs-keyword">function</span> <span class="hljs-title function_">getRandomProxy</span>(<span class="hljs-params"></span>) {
<span class="hljs-keyword">return</span> proxyList[<span class="hljs-title class_">Math</span>.<span class="hljs-title function_">floor</span>(<span class="hljs-title class_">Math</span>.<span class="hljs-title function_">random</span>() * proxyList.<span class="hljs-property">length</span>)];
}
Ao configurar sua lista de proxy, é importante entender os diferentes tipos de proxies e suas vantagens e desvantagens:
| Tipo de proxy | Tempo de Resposta | Taxa de sucesso | Faixa de custo |
|---|---|---|---|
| Datacenter | 100-300ms | 85-95% | US$ 0.50-US$ 2/PI |
| Residencial | 500-1000ms | 90-98% | US$ 2-US$ 8/PI |
| Mobile | 800-1500ms | 95-99% | US$ 5-US$ 15/PI |
Cada tipo tem seus pontos fortes e fracos, então escolha com base em suas necessidades específicas, como velocidade, confiabilidade ou orçamento.
Alternando proxies entre solicitações
Para rotacionar proxies automaticamente, você pode usar a seguinte configuração:
<span class="hljs-keyword">const</span> <span class="hljs-title class_">ProxyChain</span> = <span class="hljs-built_in">require</span>(<span class="hljs-string">'proxy-chain'</span>);
<span class="hljs-keyword">const</span> server = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ProxyChain</span>.<span class="hljs-title class_">Server</span>({
<span class="hljs-attr">port</span>: <span class="hljs-number">8080</span>,
<span class="hljs-attr">prepareRequestFunction</span>: <span class="hljs-function">(<span class="hljs-params">{ request }</span>) =></span> {
<span class="hljs-keyword">const</span> proxy = <span class="hljs-title function_">getRandomProxy</span>();
<span class="hljs-keyword">return</span> {
<span class="hljs-attr">upstreamProxyUrl</span>: <span class="hljs-string">`http://<span class="hljs-subst">${proxy.username}</span>:<span class="hljs-subst">${proxy.password}</span>@<span class="hljs-subst">${proxy.host}</span>:<span class="hljs-subst">${proxy.port}</span>`</span>
};
}
});
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">args</span>: [<span class="hljs-string">'--proxy-server=http://localhost:8080'</span>]
});
Essa abordagem garante que cada solicitação seja roteada por meio de um proxy diferente sem reiniciar o navegador, tornando o processo mais eficiente.
Diretrizes de rotação de proxy
Aqui estão algumas práticas importantes para melhorar sua estratégia de rotação de proxy:
1. Estratégia de tempo
Introduzir atrasos aleatórios entre solicitações para simular o comportamento natural de navegação:
<span class="hljs-keyword">function</span> <span class="hljs-title function_">getRotationDelay</span>(<span class="hljs-params"></span>) {
<span class="hljs-comment">// Random delay between 2-5 seconds</span>
<span class="hljs-keyword">return</span> <span class="hljs-title class_">Math</span>.<span class="hljs-title function_">floor</span>(<span class="hljs-title class_">Math</span>.<span class="hljs-title function_">random</span>() * <span class="hljs-number">3000</span>) + <span class="hljs-number">2000</span>;
}
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">rotateProxy</span>(<span class="hljs-params"></span>) {
<span class="hljs-keyword">await</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Promise</span>(<span class="hljs-function"><span class="hljs-params">resolve</span> =></span> <span class="hljs-built_in">setTimeout</span>(resolve, <span class="hljs-title function_">getRotationDelay</span>()));
<span class="hljs-keyword">const</span> proxy = <span class="hljs-title function_">getRandomProxy</span>();
<span class="hljs-comment">// Apply new proxy configuration</span>
}
2. Tratamento de erros
Se um proxy falhar, trate o erro com elegância, alternando para um novo e tentando a solicitação novamente:
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">handleProxyError</span>(<span class="hljs-params">error, page</span>) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">`Proxy error: <span class="hljs-subst">${error.message}</span>`</span>);
<span class="hljs-keyword">await</span> <span class="hljs-title function_">rotateProxy</span>();
<span class="hljs-keyword">return</span> page.<span class="hljs-title function_">reload</span>({ <span class="hljs-attr">waitUntil</span>: <span class="hljs-string">'networkidle2'</span> });
}
3. Gerenciamento de Sessões
Para tarefas que exigem consistência de sessão, use o mesmo proxy para solicitações relacionadas:
<span class="hljs-keyword">const</span> sessionMap = <span class="hljs-keyword">new</span> <span class="hljs-title class_">Map</span>();
<span class="hljs-keyword">function</span> <span class="hljs-title function_">getProxyForSession</span>(<span class="hljs-params">sessionId</span>) {
<span class="hljs-keyword">if</span> (!sessionMap.<span class="hljs-title function_">has</span>(sessionId)) {
sessionMap.<span class="hljs-title function_">set</span>(sessionId, <span class="hljs-title function_">getRandomProxy</span>());
}
<span class="hljs-keyword">return</span> sessionMap.<span class="hljs-title function_">get</span>(sessionId);
}
Com essas estratégias, você pode gerenciar proxies com eficiência e se preparar para desafios mais avançados, como lidar com blocos, CAPTCHAs e outros obstáculos.
sbb-itb-23997f1
Técnicas Avançadas de Proxy
Proxies residenciais vs. datacenter
Selecionar o proxy certo é essencial ao trabalhar com automação do Puppeteer. Aqui está uma comparação para ajudar você a decidir:
| Característica | Proxies residenciais | Proxies de Datacenter |
|---|---|---|
| fonte | Fornecido por ISPs para propriedades residenciais | Obtido de data centers |
| Agilidade (Speed) | Mais lento devido ao roteamento do ISP | Mais rápido com infraestrutura dedicada |
| Risco de detecção | Inferior - imita o tráfego real do usuário | Mais alto - mais fácil de detectar |
| Custo | Mais caro | Custo-beneficio |
| Cobertura Geográfica | Amplo, em vários locais | Muitas vezes limitado |
| Melhores casos de uso | Tarefas de alto anonimato, raspagem sensível, verificação de anúncios | Mineração de dados de alto volume, processamento em lote |
Os proxies residenciais são uma escolha sólida para tarefas que exigem alto anonimato, pois se assemelham muito à atividade real do usuário .
Manipulando blocos e CAPTCHAs
Para lidar com bloqueios de site e desafios de CAPTCHA, use mecanismos de rotação e repetição de proxy. Aqui está um exemplo de como gerenciar esses problemas:
<span class="hljs-keyword">const</span> proxyManager = {
<span class="hljs-attr">rotationDelay</span>: <span class="hljs-number">2000</span>,
<span class="hljs-keyword">async</span> <span class="hljs-title function_">handleBlock</span>(<span class="hljs-params">page</span>) {
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForTimeout</span>(<span class="hljs-variable language_">this</span>.<span class="hljs-property">rotationDelay</span>);
<span class="hljs-keyword">const</span> newProxy = <span class="hljs-keyword">await</span> <span class="hljs-variable language_">this</span>.<span class="hljs-title function_">getNextProxy</span>();
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">authenticate</span>(newProxy);
<span class="hljs-keyword">return</span> page.<span class="hljs-title function_">reload</span>({ <span class="hljs-attr">waitUntil</span>: <span class="hljs-string">'networkidle0'</span> });
},
<span class="hljs-keyword">async</span> <span class="hljs-title function_">detectBlock</span>(<span class="hljs-params">response</span>) {
<span class="hljs-keyword">return</span> response.<span class="hljs-title function_">status</span>() === <span class="hljs-number">403</span> || response.<span class="hljs-title function_">status</span>() === <span class="hljs-number">429</span>;
}
};
Quando um bloqueio é detectado, tentar novamente com um novo proxy pode manter sua automação funcionando sem problemas:
page.<span class="hljs-title function_">on</span>(<span class="hljs-string">'response'</span>, <span class="hljs-title function_">async</span> (response) => {
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">await</span> proxyManager.<span class="hljs-title function_">detectBlock</span>(response)) {
<span class="hljs-keyword">await</span> proxyManager.<span class="hljs-title function_">handleBlock</span>(page);
}
});
Essas estratégias ajudam a manter a continuidade do fluxo de trabalho, mesmo diante de desafios.
Gerenciando erros de proxy
Lidar com erros de proxy de forma eficaz requer ajustes de tempo limite, verificações de validação e proxies de backup. Por exemplo:
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">handleProxyError</span>(<span class="hljs-params">error, page</span>) {
<span class="hljs-keyword">if</span> (error.<span class="hljs-property">message</span>.<span class="hljs-title function_">includes</span>(<span class="hljs-string">'net::ERR_PROXY_CONNECTION_FAILED'</span>)) {
<span class="hljs-keyword">const</span> newProxy = <span class="hljs-keyword">await</span> <span class="hljs-title function_">getBackupProxy</span>();
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">authenticate</span>(newProxy);
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">setExtraHTTPHeaders</span>({
<span class="hljs-string">'User-Agent'</span>: <span class="hljs-title function_">generateRandomUserAgent</span>()
});
<span class="hljs-keyword">return</span> page.<span class="hljs-title function_">reload</span>({ <span class="hljs-attr">waitUntil</span>: <span class="hljs-string">'networkidle2'</span> });
}
}
Siga estas diretrizes para um melhor gerenciamento de erros:
- Defina tempos limite de conexão para evitar esperas prolongadas.
- Monitore continuamente o desempenho do proxy.
- Mantenha um pool de proxies de backup prontos.
Configurar seu navegador corretamente também desempenha um papel importante para garantir um desempenho perfeito:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">args</span>: [<span class="hljs-string">'--proxy-server=http://proxy-server:port'</span>],
<span class="hljs-attr">timeout</span>: <span class="hljs-number">60000</span>,
<span class="hljs-attr">waitUntil</span>: <span class="hljs-string">'networkidle0'</span>
});
Por fim, sempre valide seus proxies para garantir que eles estejam funcionais:
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">validateProxy</span>(<span class="hljs-params">proxyConfig</span>) {
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">const</span> response = <span class="hljs-keyword">await</span> <span class="hljs-title function_">fetch</span>(<span class="hljs-string">'https://api.ipify.org?format=json'</span>, {
<span class="hljs-attr">proxy</span>: <span class="hljs-string">`http://<span class="hljs-subst">${proxyConfig.host}</span>:<span class="hljs-subst">${proxyConfig.port}</span>`</span>
});
<span class="hljs-keyword">return</span> response.<span class="hljs-property">ok</span>;
} <span class="hljs-keyword">catch</span> (error) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">`Proxy validation failed: <span class="hljs-subst">${error.message}</span>`</span>);
<span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
}
}
Dicas de desempenho de proxy
Quer aproveitar ao máximo o Puppeteer? Essas dicas podem ajudar a ajustar sua configuração de proxy e melhorar o desempenho geral.
Teste de velocidade e otimização
Reduza o tempo de carregamento bloqueando solicitações desnecessárias, como imagens, fontes e folhas de estilo:
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">setRequestInterception</span>(<span class="hljs-literal">true</span>);
page.<span class="hljs-title function_">on</span>(<span class="hljs-string">'request'</span>, <span class="hljs-function">(<span class="hljs-params">req</span>) =></span> {
<span class="hljs-keyword">if</span> (req.<span class="hljs-title function_">resourceType</span>() === <span class="hljs-string">'stylesheet'</span> || req.<span class="hljs-title function_">resourceType</span>() === <span class="hljs-string">'font'</span> || req.<span class="hljs-title function_">resourceType</span>() === <span class="hljs-string">'image'</span>) {
req.<span class="hljs-title function_">abort</span>();
} <span class="hljs-keyword">else</span> {
req.<span class="hljs-title function_">continue</span>();
}
});
Par page.goto com page.waitForSelector para uma navegação mais rápida:
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(url, {
<span class="hljs-attr">timeout</span>: <span class="hljs-number">30000</span>,
<span class="hljs-attr">waitUntil</span>: <span class="hljs-string">'domcontentloaded'</span>
});
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForSelector</span>(<span class="hljs-string">'.main-content'</span>);
"Ao otimizar o Puppeteer, lembre-se de que há apenas algumas maneiras de acelerar o desempenho de inicialização/desligamento do próprio Puppeteer. Provavelmente, os maiores ganhos virão de fazer com que suas páginas de destino sejam renderizadas mais rapidamente."
– Jon Yongfook, Fundador, bannerbear
Distribuição de carga proxy
Distribua o tráfego entre vários proxies usando o Puppeteer Cluster:
<span class="hljs-keyword">const</span> proxyCluster = {
<span class="hljs-keyword">async</span> <span class="hljs-title function_">distributeLoad</span>(<span class="hljs-params">urls, proxyList</span>) {
<span class="hljs-keyword">const</span> cluster = <span class="hljs-keyword">await</span> <span class="hljs-title class_">Cluster</span>.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">concurrency</span>: <span class="hljs-title class_">Cluster</span>.<span class="hljs-property">CONCURRENCY_CONTEXT</span>,
<span class="hljs-attr">maxConcurrency</span>: <span class="hljs-number">5</span>
});
<span class="hljs-keyword">await</span> cluster.<span class="hljs-title function_">task</span>(<span class="hljs-title function_">async</span> ({ page, <span class="hljs-attr">data</span>: url }) => {
<span class="hljs-keyword">const</span> proxy = proxyList.<span class="hljs-title function_">getNext</span>();
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">authenticate</span>(proxy);
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(url);
});
}
};
Essa abordagem equilibra o tráfego entre proxies, complementando métodos de rotação anteriores para evitar sobrecarregar qualquer proxy.
Problemas e soluções comuns
Aqui estão alguns desafios comuns e como lidar com eles de forma eficaz:
Latência da rede Use o código a seguir para gerenciar tempos limite e evitar atrasos desnecessários:
<span class="hljs-keyword">const</span> <span class="hljs-title function_">performRequest</span> = <span class="hljs-keyword">async</span> (<span class="hljs-params">page, url</span>) => { <span class="hljs-keyword">try</span> { <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(url, { <span class="hljs-attr">timeout</span>: <span class="hljs-number">30000</span>, <span class="hljs-attr">waitUntil</span>: <span class="hljs-string">'networkidle2'</span> }); } <span class="hljs-keyword">catch</span> (error) { <span class="hljs-keyword">if</span> (error.<span class="hljs-property">name</span> === <span class="hljs-string">'TimeoutError'</span>) { <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">evaluate</span>(<span class="hljs-function">() =></span> <span class="hljs-variable language_">window</span>.<span class="hljs-title function_">stop</span>()); <span class="hljs-keyword">return</span> <span class="hljs-title function_">handleTimeout</span>(); } <span class="hljs-keyword">throw</span> error; } };Limitação de taxa Detecte e responda aos limites de taxa com este snippet:
<span class="hljs-keyword">const</span> <span class="hljs-title function_">checkRateLimit</span> = <span class="hljs-keyword">async</span> (<span class="hljs-params">response</span>) => { <span class="hljs-keyword">if</span> (response.<span class="hljs-title function_">status</span>() === <span class="hljs-number">429</span> || response.<span class="hljs-title function_">headers</span>()[<span class="hljs-string">'retry-after'</span>]) { <span class="hljs-keyword">await</span> <span class="hljs-title function_">handleRateLimit</span>(response.<span class="hljs-title function_">headers</span>()[<span class="hljs-string">'retry-after'</span>]); } };Falhas de autenticação Lide com erros de autenticação de proxy tentando novamente com novas credenciais:
<span class="hljs-keyword">const</span> <span class="hljs-title function_">handleAuthError</span> = <span class="hljs-keyword">async</span> (<span class="hljs-params">response, page, proxy</span>) => { <span class="hljs-keyword">if</span> (response.<span class="hljs-title function_">status</span>() === <span class="hljs-number">407</span>) { <span class="hljs-keyword">await</span> <span class="hljs-title function_">retryWithNewCredentials</span>(page, proxy); <span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>; } <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>; };
"Ao otimizar seu script do Puppeteer, você pode garantir uma operação suave e eficiente com resultados precisos e consistentes."
- ScrapeOps
Fique de olho nos tempos de resposta e nas taxas de sucesso para garantir que seus proxies permaneçam eficientes e indetectáveis.
Conclusão
Métodos de configuração de chaves
Configurar o Puppeteer com proxies envolve algumas etapas importantes. Para proxies privados, use o authenticate função para fornecer credenciais:
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">authenticate</span>({
<span class="hljs-attr">username</span>: <span class="hljs-string">'proxyUser'</span>,
<span class="hljs-attr">password</span>: <span class="hljs-string">'proxyPass'</span>
});
Para garantir que a página carregue completamente, use o waitUntil opção (por exemplo, 'networkidle2') e defina um tempo limite (por exemplo, 30 segundos):
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(url, {
<span class="hljs-attr">waitUntil</span>: <span class="hljs-string">'networkidle2'</span>,
<span class="hljs-attr">timeout</span>: <span class="hljs-number">30000</span>
});
Essas configurações formam a base de uma configuração de proxy confiável.
Melhores Práticas
Para manter operações de proxy seguras e eficientes, siga estas estratégias:
Gerenciamento de Conexão
- Ajuste os tempos limite com base na velocidade do proxy.
- Lide com erros de autenticação de forma eficaz.
- Monitore métricas de desempenho para identificar gargalos.
Otimização de Segurança
- Gire os agentes de usuário junto com os proxies para evitar a detecção.
- Adicione uma camada VPN para proteção extra.
- Intercepte e filtre solicitações desnecessárias para economizar largura de banda.
Aqui está um rápido resumo de considerações importantes para implementação de proxy:
| Aspecto | Implementação | Beneficiar |
|---|---|---|
| Autenticação | Use a função de autenticação | Protege o acesso a proxies privados |
| Gerenciamento de Carga | Habilitar interceptação de solicitação | Reduz a largura de banda e acelera o carregamento |
| Tratamento de erros | Implemente blocos try-catch | Gerencia problemas de conexão com elegância |
| Proteção de identidade | Gire proxies e agentes de usuário | Melhora as taxas de sucesso e evita bloqueios |
Artigos Relacionados
- Como funciona a detecção de navegador sem cabeça e como ignorá-la
- Instalando e configurando o Puppeteer: resolvendo problemas comuns de dependência e Chromium
- Interceptando e modificando solicitações de rede no Puppeteer: um guia prático
- Gerenciamento de agente de usuário no Puppeteer para emulação de dispositivo



