Latenode

Estratégias para Contornar a Proteção da Cloudflare com Puppeteer

Conheça técnicas eficazes para contornar de forma ética as proteções da Cloudflare com Puppeteer, incluindo gerenciamento de proxies e simulação de comportamento humano.

5 min de leitura
Navegador com Puppeteer usando proxies e simulação de navegação para acessar um site protegido pela Cloudflare

As medidas de segurança da Cloudflare dificultam o acesso de bots a sites. Mas, com o Puppeteer, é possível contornar essas defesas quando isso é feito de forma ética. Veja um guia rápido para começar:

  • Técnicas principais:

    • Use proxies residenciais e faça a rotação deles para evitar detecção.
    • Imite o comportamento humano com atrasos aleatórios e movimentos do mouse.
    • Lide com desafios de JavaScript e CAPTCHAs usando plugins como puppeteer-extra-plugin-recaptcha.
    • Disfarce a automação ajustando impressões digitais do navegador e agentes de usuário.
  • Configuração do Puppeteer:

    • Instale o Puppeteer e os plugins:

      npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
      
    • Adicione configurações stealth para evitar detecção:

      const puppeteer = require('puppeteer-extra');
      const StealthPlugin = require('puppeteer-extra-plugin-stealth');
      puppeteer.use(StealthPlugin());
      
  • Lembrete jurídico: sempre respeite os termos de serviço dos sites, evite sobrecarregar servidores e use a automação de forma responsável.

Essas etapas podem melhorar sua taxa de sucesso contra as proteções da Cloudflare. Continue lendo o artigo para ver trechos de código detalhados e técnicas avançadas.

Tutorial de Nodejs Puppeteer nº 7 - Como contornar a detecção usando ...

Guia de configuração do Puppeteer

Siga estas etapas para configurar o Puppeteer com definições e plugins personalizados a fim de lidar com as proteções da Cloudflare.

Etapas básicas de instalação do Puppeteer

Primeiro, verifique se você tem o Node.js v18 ou mais recente instalado. Em seguida, execute o comando abaixo para instalar o Puppeteer e seus plugins relacionados:

npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth

Depois, crie um novo arquivo JavaScript e importe os módulos necessários:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

Após isso, você precisará ajustar as configurações de inicialização do navegador para evitar detecção.

Configurações necessárias do Puppeteer

Configure sua instância do navegador com definições que reduzam a chance de ela ser sinalizada:

const browser = await puppeteer.launch({
    headless: false,
    args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-infobars',
        '--window-position=0,0',
        '--ignore-certificate-errors',
        '--ignore-certificate-errors-spki-list'
    ]
});

Se quiser usar um proxy para ocultar seu IP, inclua estas configurações adicionais:

const browser = await puppeteer.launch({
    args: [
        '--proxy-server=http://proxy-address:port'
    ]
});

await page.authenticate({
    username: 'proxy-username',
    password: 'proxy-password'
});

Complementos úteis do Puppeteer

Amplie as funcionalidades do Puppeteer com estes plugins:

Nome do pluginFinalidadePrincipais recursos
puppeteer-extra-plugin-stealthAntidetecçãoModifica a impressão digital do navegador e imita o comportamento humano
puppeteer-extra-plugin-recaptchaTratamento de CAPTCHAAutomatiza a resolução de CAPTCHA
puppeteer-extra-plugin-adblockerGerenciamento de recursosBloqueia anúncios e rastreadores para reduzir riscos de detecção

Para integrar esses complementos, use o código a seguir:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
const AdblockerPlugin = require('puppeteer-extra-plugin-adblocker');

puppeteer.use(StealthPlugin());
puppeteer.use(AdblockerPlugin({ blockTrackers: true }));

Por fim, para tornar suas ações mais naturais, introduza atrasos aleatórios entre elas:

const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
await delay(Math.random() * 1000 + 1000); // Random delay between 1-2 seconds
sbb-itb-23997f1

Métodos para lidar com a segurança da Cloudflare

Aprimore sua configuração do Puppeteer com estas técnicas para lidar melhor com as defesas da Cloudflare.

Gerenciamento da identidade do navegador

O sistema antibot da Cloudflare monitora impressões digitais do navegador e sinais de automação. Para disfarçar a atividade do Puppeteer, ajuste os identificadores e as propriedades do navegador como mostrado abaixo:

const browser = await puppeteer.launch({
    args: [
        '--window-size=1920,1080',
        '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
    ],
    ignoreDefaultArgs: ['--enable-automation']
});

await page.evaluateOnNewDocument(() => {
    delete navigator.webdriver;
    Object.defineProperty(navigator, 'plugins', {
        get: () => [1, 2, 3, 4, 5]
    });
});

Essa configuração remove indicadores de automação e imita uma impressão digital padrão de navegador, ajudando a contornar as verificações da Cloudflare.

Soluções para desafios de JavaScript

Lidar com os desafios de JavaScript da Cloudflare exige a simulação de comportamentos semelhantes aos humanos. Por exemplo, você pode aguardar até que o formulário do desafio desapareça e introduzir atrasos aleatórios entre as ações:

// Wait until the Cloudflare challenge form is gone
await page.waitForFunction(() => {
    return document.querySelector('#challenge-form') === null;
}, { timeout: 30000 });

// Add random delays to simulate human interaction
const randomDelay = (min, max) => {
    return Math.floor(Math.random() * (max - min + 1) + min);
};
await page.waitForTimeout(randomDelay(1000, 3000));

Você também pode criar manipuladores personalizados para imitar melhor o comportamento do usuário conforme necessário. Em seguida, será preciso definir uma estratégia para lidar com CAPTCHAs.

Opções de gerenciamento de CAPTCHA

Ao se deparar com CAPTCHAs, usar um plugin de resolução de CAPTCHA pode simplificar o processo:

const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha');
puppeteer.use(
    RecaptchaPlugin({
        provider: {
            id: '2captcha',
            token: 'your-api-key'
        }
    })
);

Se o plugin não conseguir resolver o CAPTCHA, você poderá recorrer à rotação de proxies:

try {
    await page.solveRecaptchas();
} catch (e) {
    // Rotate to a new proxy if CAPTCHA solving fails
    await page.setRequestInterception(true);
    await useNextProxy();
}

Esses métodos ajudam você a lidar com desafios de CAPTCHA e manter o acesso, mesmo quando as ferramentas de automação encontram obstáculos.

Dicas e diretrizes de confiabilidade

Implementar técnicas confiáveis é fundamental para garantir o sucesso na automação.

Configuração e uso de proxies

Usar proxies bem gerenciados pode ajudar a reduzir significativamente os riscos de detecção. Por exemplo, proxies residenciais premium oferecem melhores capacidades para contornar bloqueios. Veja um exemplo de configuração:

const browser = await puppeteer.launch({
    args: [
        `--proxy-server=${proxyAddress}`,
        '--no-sandbox',
        '--disable-setuid-sandbox'
    ]
});

// Handle proxy authentication
await page.setRequestInterception(true);
page.on('request', request => {
    request.continue({
        headers: {
            ...request.headers(),
            'Proxy-Authorization': `Basic ${Buffer.from(
                `${proxyUsername}:${proxyPassword}`
            ).toString('base64')}`
        }
    });
});

Fazer a rotação regular dos proxies também ajuda a manter o acesso ininterrupto:

const proxyList = [
    'proxy1.example.com:8080',
    'proxy2.example.com:8080',
    'proxy3.example.com:8080'
];

function getNextProxy() {
    const proxy = proxyList.shift();
    proxyList.push(proxy);
    return proxy;
}

Controle do tempo das solicitações

Simular um comportamento semelhante ao humano pode minimizar os riscos de detecção. Veja como gerenciar de modo eficiente o tempo das solicitações:

const simulateHumanBehavior = async (page) => {
    // Add random mouse movements
    await page.mouse.move(100, 200);
    await page.mouse.move(150, 250, { steps: 10 });

    // Randomize typing speed
    await page.keyboard.type('Hello World', { 
        delay: Math.floor(Math.random() * (150 - 50) + 50) 
    });

    // Add pauses
    await page.waitForTimeout(
        Math.floor(Math.random() * (3000 - 1000) + 1000)
    );
};

Essas técnicas, combinadas ao gerenciamento adequado de sessões, tornam os esforços de automação mais confiáveis.

Gerenciamento de cookies e sessões

Gerenciar cookies de forma eficiente é essencial para manter a continuidade das sessões. Veja como armazenar e restaurar sessões:

// Store successful session cookies
const storeCookies = async (page) => {
    const cookies = await page.cookies();
    await fs.writeFile(
        'cookies.json',
        JSON.stringify(cookies, null, 2)
    );
};

// Restore previous session
const loadCookies = async (page) => {
    try {
        const cookiesString = await fs.readFile('cookies.json');
        const cookies = JSON.parse(cookiesString);
        await page.setCookie(...cookies);
    } catch (error) {
        console.log('No stored cookies found');
    }
};

Se os cookies não forem validados, você poderá atualizá-los automaticamente:

const validateCookies = async (page) => {
    const response = await page.goto(targetUrl);
    if (response.status() === 403) {
        await clearCookies(page);
        await initializeNewSession(page);
    }
};

Conclusão

Vamos concluir destacando as principais técnicas e etapas abordadas.

Recapitulação das técnicas principais

Superar a proteção da Cloudflare exige uma combinação de métodos trabalhando em conjunto. As estratégias mais importantes incluem:

  • Usar proxies residenciais com rotação adequada
  • Gerenciar impressões digitais do navegador e agentes de usuário
  • Lidar com cookies e sessões de modo eficaz
  • Imitar o comportamento humano com atrasos aleatórios
  • Configurar cabeçalhos de solicitação precisos
  • Gerenciar a autenticação corretamente

Segundo dados do setor, combinar essas técnicas pode gerar taxas de sucesso de até 98,7% quando as condições são otimizadas [1].

Ao focar nesses métodos essenciais, você pode criar um processo de automação confiável e em conformidade.

Etapas de implementação

Confira algumas dicas finais para aprimorar sua configuração do Puppeteer e seus esforços para contornar a Cloudflare:

  • Comece com configurações básicas do Puppeteer
  • Faça a rotação de proxies de forma criteriosa
  • Configure mecanismos robustos de tratamento de erros
  • Verifique os termos de serviço do site-alvo antes de começar
  • Mantenha taxas moderadas de solicitações para evitar acionar defesas
  • Documente seus fluxos de automação

O Puppeteer exige uma configuração cuidadosa e ajustes regulares para continuar eficaz contra as defesas em constante evolução da Cloudflare. À medida que as medidas de segurança se tornam mais avançadas, o sucesso dependerá de atualizações contínuas na sua estratégia e da adesão rigorosa a práticas éticas. Embora as configurações iniciais possam funcionar bem, manter o desempenho no longo prazo significa permanecer flexível e seguir diretrizes claras.

References

FAQ

Frequently Asked Questions

O artigo recomenda o puppeteer-extra com o puppeteer-extra-plugin-stealth para modificar a impressão digital do navegador, o puppeteer-extra-plugin-recaptcha para lidar com CAPTCHAs e o puppeteer-extra-plugin-adblocker para bloquear anúncios e rastreadores que podem aumentar o risco de detecção.

Isso foi útil? Compartilhe →

Escrito por

Vasiliy Datsenko

Head of Customer Support

Vasiliy Datsenko é Head of Customer Support na Latenode e um escritor de automação focado em produto. Seu trabalho conecta conversas com clientes, pesquisa de automação de fluxos de trabalho, casos de uso de IA e educação prática sobre produtos para equipes que tentam automatizar processos de negócios reais.

Perfil do autor →

Verificado por

Oleg Zankov

CEO da Latenode, Especialista em No-code

Com uma filosofia enraizada em inovação, resolução de problemas e experiência do usuário, estou focado em capacitar equipes a criar integrações personalizadas e automatizar fluxos de trabalho com facilidade e eficiência. Trazendo uma vasta experiência em desenvolvimento de negócios, empreendedorismo tecnológico e desenvolvimento de software, reconheci a necessidade de uma solução de integração mais acessível, escalável e adaptável. Assim, nasceu a Latenode.com. Com nossa plataforma, as empresas podem aproveitar o poder da tecnologia sem a necessidade de conhecimentos extensos em programação. Apaixonado por promover um futuro onde a tecnologia nos serve, e não o contrário, minha missão é tornar processos complexos simples. Acredito em democratizar a tecnologia e equipar as equipes com as ferramentas para inovar, crescer e ter sucesso em um mundo cada vez mais digital.

Perfil do autor →

Continue lendo