一、先搞懂:电商爬虫的 3 大核心挑战(比普通爬虫更复杂的原因)
做电商爬虫前,必须先明确「为什么难」—— 淘宝、京东、拼多多的反爬体系是「多层级、动态化、行为导向」的,绝非简单的 UA 验证或 IP 封禁:
- 动态参数加密(最核心痛点)
三大平台的商品列表页 / 详情页接口,几乎都有「动态生成的签名参数」,且参数规则会定期更新:
-
- 淘宝:sign「tk_trace」参数,依赖 cookie 中的tb_token「cookie2」,且与请求时间戳、用户行为(如浏览轨迹)绑定;
-
- 京东:sign「venderId」参数,需逆向 JS 中的md5加密逻辑,且同一 IP 下频繁请求会导致 sign 失效;
-
- 拼多多:anti_content参数(俗称「防爬内容」),需模拟 APP 端的设备指纹(如imei「android_id」),PC 端几乎无法爬取详情页。
- 行为反爬(比参数更难对抗)
平台会通过「用户行为特征」识别爬虫,而非仅看请求头:
-
- 无浏览轨迹:直接请求商品详情页,未先访问首页→分类页→列表页,会被判定为「异常请求」;
-
- 请求频率刚性:同一 IP / 账号 1 秒内请求 > 5 次,或分页爬取时跳过中间页(如从第 1 页直接到第 10 页),会触发临时封禁;
-
- 设备指纹不一致:PC 端爬虫用固定 UA + 固定分辨率,或 APP 端爬虫未模拟真实设备的「传感器数据」(如加速度、陀螺仪),会被标记为「机器账号」。
- 数据动态性(爬取到的可能是「无效数据」)
电商商品数据有「实时性 + 地域性 + 账号相关性」:
-
- 价格:同一商品,不同地区(如北京 vs 上海)、不同账号(新用户 vs 老用户)、不同时段(大促 vs 日常)价格可能不同;
-
- 库存:秒杀商品库存每秒更新,爬取延迟 10 秒就可能导致数据失效;
-
- 评价:平台会对评价列表做「分页动态加载 + 内容屏蔽」,直接爬取前 10 页可能漏掉 80% 的真实评价。
二、分平台实战:淘宝 / 京东 / 拼多多的差异化爬虫方案
三大平台的反爬重点不同,不能用一套代码通吃,需针对性设计方案 —— 以下是经过验证的「低成本有效策略」(非黑产手段,聚焦合规爬取):
1. 淘宝:优先用「PC 端模拟真实用户 + cookie 池维护」
淘宝 PC 端的反爬强度低于 APP 端,适合中小规模数据爬取(如单品类商品监测):
- 核心步骤:解决 cookie 鲜活度问题
① 初始 cookie 获取:用「无头浏览器(Playwright 优于 Selenium,资源占用低)」模拟真实用户登录(扫码登录,避免账号密码登录被风控),获取包含tb_token「cookie2」「uc1」的完整 cookie;
② cookie 池维护:每个 cookie 绑定 1 个 IP,每天用「低频率行为(如浏览 3 个商品 + 收藏 1 个)」激活,避免 cookie 过期(淘宝 cookie 默认有效期 7-15 天,不激活会提前失效);
③ 接口选择:优先爬取「m 端(手机淘宝网页版,https://m.tmall.com)」接口,参数加密比 PC 端简单(如sign参数仅依赖时间戳 + cookie,无需逆向复杂 JS)。
- 避坑点:价格数据爬取
淘宝商品详情页的「原价」在 HTML 中可见,但「优惠价」需请求「https://mdskip.taobao.com/core/price/price.htm」接口,且需携带「商品 ID(itemId)+ 店铺 ID(sellerId)+cookie」,否则返回「-1」(未登录状态)。
2. 京东:逆向「sign 参数」+ 模拟 APP 端请求
京东 PC 端反爬极严(频繁触发滑块验证码),但 APP 端接口(通过 Charles 抓包获取)的参数逻辑更固定,适合大规模数据爬取:
- 核心步骤:破解 sign 参数加密
① 抓包分析:用「夜神模拟器 + Charles」抓取京东 APP 的商品列表接口(如「https://api.m.jd.com/api?functionId=search&...」),发现sign参数是关键;
② 逆向 JS:在 APP 安装目录中找到「jdmall.js」(或通过 FridaHook Hook 加密函数),拆解出sign的生成逻辑:sign = md5(secretKey + 拼接参数(functionId+timestamp+appid+参数) + secretKey),其中「secretKey」是固定值(不同 APP 版本可能变化,需定期更新);
③ 设备指纹模拟:APP 端接口需携带「deviceId」「uuid」「imei」,用 Python 的faker库生成符合京东格式的假设备信息(避免用固定值,否则会被识别为爬虫设备)。
- 实战技巧:库存数据爬取
京东商品库存接口(「https://c0.3.cn/stock」)需携带「skuId+area(地区编码,如北京是 1_0_0)」,且同一 IP 下请求不同地区库存,需间隔 30 秒以上,否则会被判定为「地域跳转异常」。
3. 拼多多:只能「APP 端模拟 + 设备指纹绕过」
拼多多是三大平台中反爬最严的,PC 端几乎无法爬取有效数据,必须聚焦 APP 端:
- 核心步骤:突破 anti_content 参数
① 设备环境模拟:用「雷电模拟器 + Xposed 框架」安装拼多多 APP,通过「JustTrustMe」绕过 SSL 证书验证,再用「Frida」Hook 生成anti_content的函数(anti_content是基于设备指纹 + 请求参数的加密字符串,无法直接逆向);
② 低频率请求:拼多多对「设备 + IP」的绑定关系极敏感,同一设备 + IP 每天爬取商品数不能超过 50 个,否则会触发「账号冻结」(即使是未登录状态);
③ 数据取舍:拼多多的「商品评价」接口做了「内容混淆」(如评价内容中插入特殊字符),爬取后需用正则清洗(如re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9]', '', content)),且仅能获取前 20 页评价(后续页面会返回空数据)。
三、爬虫工程师必看:3 个关键避坑点(比技术更重要)
- IP 池:别用免费代理,低成本选「动态拨号 + 隧道代理」
-
- 免费代理:90% 以上是「高风险 IP」(已被平台标记),用一次就会导致整个 cookie 池失效;
-
- 推荐方案:中小规模(日爬 1 万条数据)用「动态拨号 IP(如芝麻代理)」,每个 IP 绑定 1 个 cookie,请求间隔设置 5-10 秒;大规模(日爬 10 万 +)用「隧道代理(如阿布云)」,自动切换 IP,避免手动维护。
- 数据合规:3 条红线绝对不能碰
-
- 不爬「隐私数据」:用户手机号、收货地址、支付信息(即使能获取到,也属于违法,《个人信息保护法》明确禁止);
-
- 不商用「爬取数据」:若将数据用于商业分析,需先查看平台「robots 协议」(淘宝 robots 禁止爬取商品详情页,京东允许非商用爬取),且最好与平台沟通获取授权(如京东开放平台有官方 API,比爬虫更稳定);
-
- 不破坏平台规则:如不用爬虫抢购商品、刷评价,否则会被追究法律责任(2023 年有案例:某公司用爬虫刷拼多多销量,被判赔偿 200 万元)。
- 监控与容错:避免「爬了半天全是无效数据」
-
- 数据校验:爬取后立即校验「价格是否为数字」「库存是否合理(如 > 10000 可能是异常值)」,发现异常则切换 IP+cookie;
-
- 失败重试:用「指数退避算法」(如第 1 次失败等 1 秒,第 2 次等 2 秒,第 3 次等 4 秒)替代固定重试间隔,避免加重服务器负担;
-
- 日志记录:每一条请求都记录「IP+cookie + 请求参数 + 返回状态码」,出问题时能快速定位是「IP 被封」还是「参数失效」。
四、总结:电商爬虫的核心不是「技术多牛」,而是「平衡」
做淘宝、京东、拼多多的商品爬虫,从来不是「破解所有反爬」,而是在「爬取效率」「数据质量」「合规安全」之间找平衡:
- 小需求(如个人分析某品类价格):用 Playwright 模拟 PC 端,低频率爬取,无需复杂逆向;
- 中需求(如企业监测竞品价格):对接平台官方 API(如淘宝开放平台「item_get」接口),虽然有调用次数限制,但稳定合规;
- 大需求(如全品类数据爬取):组建「IP 池 + cookie 池 + 设备池」,配合行为模拟,且定期更新反爬策略(平台每 3-6 个月会调整一次参数加密规则)。
最后提醒:爬虫技术是工具,别为了「爬数据」而忽视合规 —— 现在电商平台都有专门的反爬团队,一旦被判定为「恶意爬虫」,不仅会封 IP 账号,还可能面临法律风险,得不偿失。