使用 Puppeteer 绕过 Captcha:实现商家数据自动化采集

背景/引言

大众点评作为中国领先的本地生活服务平台,不仅是消费者获取商家信息和用户评价的重要工具,同时也是商家推广的关键渠道。通过优质的内容呈现和精准的用户推荐,大众点评能够为商家带来显著的流量提升和品牌曝光,成为商业竞争中不可忽视的资源。

对于技术从业者,采集大众点评的商家数据可以用于市场动态研究、用户行为分析以及商家推广策略制定。然而,大众点评的控制机制(如 Captcha 验证)使自动化采集变得困难重重。为应对这些挑战,本文将介绍如何使用 Puppeteer,通过代理 IP、用户伪装等技术,轻松绕过 Captcha,实现对商家信息的高效采集。


技术实现

1. 工具与技术概述
  • Puppeteer:一个强大的无头浏览器自动化工具,支持模拟用户操作,轻松处理动态页面和复杂交互。
  • 代理 IP:通过隐藏真实 IP,规避访问限制,提升爬虫稳定性。
  • 用户伪装技术:通过设置 User-Agent 和 Cookies 模拟真实用户行为,降低被识别的风险。
2. 关键步骤
  • 配置 Puppeteer 和代理 IP。
  • 设置用户伪装参数(User-Agent 和 Cookie)。
  • 模拟人类操作(滚动、延迟访问等),避免触发 Captcha。
  • 提取目标页面的商家信息数据。

实例代码

以下是完整实现代码,以采集大众点评商家信息为例,结合爬虫代理实现稳定的网络访问。

javascript 复制代码
const puppeteer = require('puppeteer');

// 代理信息配置(以亿牛云爬虫代理为例 www.16yun.cn)
const proxyConfig = {
    host: 'proxy.16yun.cn', // 代理服务器地址
    port: '12345',              // 代理端口号
    username: 'your_username',  // 代理用户名
    password: 'your_password'   // 代理密码
};

// 目标 URL
const targetUrl = 'https://www.dianping.com/search/keyword/1/0_商家关键字';

(async () => {
    // 启动 Puppeteer,配置代理
    const browser = await puppeteer.launch({
        headless: false, // 设置为 false 以便调试
        args: [`--proxy-server=${proxyConfig.host}:${proxyConfig.port}`] // 配置代理服务器
    });

    const page = await browser.newPage();

    // 设置用户代理(User-Agent)
    await page.setUserAgent(
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    );

    // 设置 Cookie(可从浏览器中登录后提取有效的 Cookie)
    const cookies = [
        {
            name: 'cookieName',
            value: 'cookieValue',
            domain: '.dianping.com'
        }
    ];
    await page.setCookie(...cookies);

    // 配置 HTTP Basic Auth 代理认证
    await page.authenticate({
        username: proxyConfig.username,
        password: proxyConfig.password
    });

    // 访问目标 URL
    try {
        console.log('正在访问目标页面...');
        await page.goto(targetUrl, { waitUntil: 'networkidle2' });

        // 模拟滚动,加载更多数据
        await page.evaluate(() => {
            return new Promise((resolve) => {
                let totalHeight = 0;
                const distance = 100;
                const timer = setInterval(() => {
                    const scrollHeight = document.body.scrollHeight;
                    window.scrollBy(0, distance);
                    totalHeight += distance;

                    if (totalHeight >= scrollHeight) {
                        clearInterval(timer);
                        resolve();
                    }
                }, 100);
            });
        });

        // 提取商家信息
        const data = await page.evaluate(() => {
            const result = [];
            const items = document.querySelectorAll('.shop-all-list li'); // 根据实际 DOM 调整选择器
            items.forEach(item => {
                const name = item.querySelector('.tit a')?.textContent.trim();
                const address = item.querySelector('.addr')?.textContent.trim();
                const rating = item.querySelector('.comment-list .item-rank-rst')?.getAttribute('title');
                if (name && address) {
                    result.push({ name, address, rating });
                }
            });
            return result;
        });

        console.log('采集到的数据:', data);
    } catch (error) {
        console.error('页面加载或采集时出错:', error);
    } finally {
        await browser.close();
    }
})();

结论

通过本文的示例代码,我们展示了如何使用 Puppeteer 绕过 Captcha 实现对大众点评商家信息的高效采集。结合代理 IP、用户伪装等技术,不仅可以大幅提升爬虫的隐蔽性和稳定性,还能灵活应对复杂的反爬机制。

需要注意的是,数据采集必须遵循合法合规的原则,并尊重目标网站的使用政策。在实际应用中,可根据需求调整采集逻辑和伪装策略,将爬虫技术应用于更多业务场景中,为数据驱动的决策提供技术支持。

相关推荐
Agent产品评测局1 小时前
中小企业数字化转型,优先选 RPA 还是 AI Agent?:2026企业自动化架构选型深研
人工智能·ai·chatgpt·自动化·rpa
测试者家园1 小时前
从需求文档到测试点:利用大模型实现需求理解的自动化
软件测试·自动化·llm·需求分析·持续测试·智能化测试·功能点
GISer_Jing1 小时前
阿里开源纯前端浏览器自动化 PageAgent,[特殊字符] 浏览器自动化变天啦?
前端·人工智能·自动化·aigc·交互
Blurpath住宅代理4 小时前
AI代理配置实战指南:构建高可用、低风险的网络出口层
人工智能·ai·自动化·静态ip·动态代理·住宅ip·住宅代理
小陈的进阶之路4 小时前
Selenium 常用操作 API
python·自动化·pytest
twc8295 小时前
打造专属 MCP Server 测试自动化的私有化解决方案
运维·软件测试·人工智能·自动化·mcp server
实在智能RPA6 小时前
实在 Agent 支持哪些企业业务场景的自动化?全行业智能自动化场景深度拆解
java·运维·自动化
Xpower 176 小时前
Clawith:开启多智能体协作的新纪元
人工智能·python·语言模型·自动化
柯儿的天空6 小时前
【OpenClaw 全面解析:从零到精通】第 021 篇:Claw 家族全景——从桌面级到边缘部署的轻量级智能体变体深度解析
gpt·ai作画·自动化·aigc·ai编程·ai写作·agi
星纬智联技术19 小时前
GEO E2E 自动化验证测试文章
运维·自动化·geo