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

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,1000CU*H 3个月
简介: 本文介绍了如何使用Puppeteer结合代理IP和用户伪装技术,轻松绕过大众点评的Captcha验证,实现商家信息的高效采集。通过配置Puppeteer、设置代理和用户伪装参数、模拟人类操作等步骤,成功提取了目标页面的数据。该方法不仅提高了爬虫的稳定性和隐蔽性,还为市场研究和商业分析提供了有力支持。注意,数据采集需遵守法律法规及网站政策。

爬虫代理

背景/引言

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

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


技术实现

1. 工具与技术概述

  • Puppeteer:一个强大的无头浏览器自动化工具,支持模拟用户操作,轻松处理动态页面和复杂交互。
  • 代理 IP:通过隐藏真实 IP,规避访问限制,提升爬虫稳定性。
  • 用户伪装技术:通过设置 User-Agent 和 Cookies 模拟真实用户行为,降低被识别的风险。

2. 关键步骤

  • 配置 Puppeteer 和代理 IP。
  • 设置用户伪装参数(User-Agent 和 Cookie)。
  • 模拟人类操作(滚动、延迟访问等),避免触发 Captcha。
  • 提取目标页面的商家信息数据。

实例代码

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

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、用户伪装等技术,不仅可以大幅提升爬虫的隐蔽性和稳定性,还能灵活应对复杂的反爬机制。

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

相关文章
|
3月前
|
数据采集 数据可视化 JavaScript
用 通义灵码和 PyQt5 爬虫智能体轻松爬取掘金,自动化采集技术文章和数据
本文介绍了如何利用智能开发工具通义灵码和Python的PyQt5框架,构建一个自动化爬取掘金网站技术文章和数据的智能爬虫系统。通过通义灵码提高代码编写效率,使用PyQt5创建可视化界面,实现对爬虫任务的动态控制与管理。同时,还讲解了应对反爬机制、动态内容加载及数据清洗等关键技术点,帮助开发者高效获取并处理网络信息。
|
2月前
|
数据采集 运维 监控
|
10月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
1747 10
|
6月前
|
数据采集 JSON 前端开发
GraphQL接口采集:自动化发现和提取隐藏数据字段
本文围绕GraphQL接口采集展开,详解如何通过`requests`+`Session`自动化提取隐藏数据字段,结合爬虫代理、Cookie与User-Agent设置实现精准抓取。内容涵盖错误示例(传统HTML解析弊端)、正确姿势(GraphQL请求构造)、原因解释(效率优势)、陷阱提示(反爬机制)及模板推荐(可复用代码)。掌握全文技巧,助你高效采集Yelp商家信息,避免常见误区,快速上手中高级爬虫开发。
108 3
GraphQL接口采集:自动化发现和提取隐藏数据字段
|
7月前
|
缓存 监控 API
微店商品详情API接口实战指南:从零实现商品数据自动化获取
本文介绍了微店商品详情API接口的应用,涵盖申请与鉴权、签名加密、数据解析等内容。通过Python实战演示了5步获取商品数据的流程,并提供了多平台同步、价格监控等典型应用场景。开发者可利用此接口实现自动化操作,提升电商运营效率,降低人工成本。文中还总结了频率限制、数据缓存等避坑指南,助力开发者高效使用API。
|
7月前
|
数据采集 消息中间件 API
微店API开发全攻略:解锁电商数据与业务自动化的核心能力
微店开放平台提供覆盖商品、订单、用户、营销、物流五大核心模块的API接口,支持企业快速构建电商中台系统。其API体系具备模块化设计、双重认证机制、高并发支持和数据隔离等特性。文档详细解析了商品管理、订单处理、营销工具等核心接口功能,并提供实战代码示例。同时,介绍了企业级整合方案设计,如订单全链路自动化和商品数据中台架构,以及性能优化与稳定性保障措施。最后,针对高频问题提供了排查指南,帮助开发者高效利用API实现电商数智化转型。适合中高级开发者阅读。
|
10月前
|
存储 人工智能 人机交互
PC Agent:开源 AI 电脑智能体,自动收集人机交互数据,模拟认知过程实现办公自动化
PC Agent 是上海交通大学与 GAIR 实验室联合推出的智能 AI 系统,能够模拟人类认知过程,自动化执行复杂的数字任务,如组织研究材料、起草报告等,展现了卓越的数据效率和实际应用潜力。
1147 1
PC Agent:开源 AI 电脑智能体,自动收集人机交互数据,模拟认知过程实现办公自动化
|
7天前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
29天前
|
运维 Linux 网络安全
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
63 4