利用百度云防护WAF识别无头爬虫:HTTP请求头指纹拦截科普

很多网站都面临自动化爬虫、无头浏览器(Playwright/Puppeteer)批量采集数据的困扰。这类爬虫依托Chromium无头模式模拟浏览器访问,抓取页面内容。我们可以借助百度云防护 WAF自定义规则,通过HTTP请求头指纹识别这类爬虫,实现基础Bot防护。

一、无头爬虫标志性Header指纹

普通真实浏览器与无头自动化浏览器,在请求头细节上存在明显差异,其中最典型特征:

  1. sec-ch-ua:无头浏览器默认会携带HeadlessChrome字符串,正常桌面Chrome浏览器不会出现这个标识。
  2. Priority:HTTP/2协议下,无头爬虫请求经常出现u=0,i这类Priority头,普通网民浏览器极少携带。
  3. sec-ch-ua-platform-version:新版真实Chrome会自带该请求头,大量无头实例直接缺失。

注意:Sec-Fetch系列请求头是现代浏览器原生自带,不可单独用来拦截,仅可作为辅助判断。

二、百度云防护 WAF规则配置思路

核心原则:禁止单条请求头直接拦截,采用多条件「且」组合,降低误杀正常访客风险

推荐生产拦截规则(SaaSWAF)

  • 规则名称:bot_headless_chrome_header拦截
  • 接入类型:SaaSWAF
  • 优先级:10(数值越小优先级越高,不要设置0,避免干扰内置安全规则)
  • 匹配逻辑:同时满足下面两个条件(且关系) 条件1:Header sec-ch-ua 包含 HeadlessChrome 条件2:Header Priority 包含 i
  • 生效模式:永久生效
  • 处置动作:拦截
利用百度云防护WAF识别无头爬虫:HTTP请求头指纹拦截科普

观察审计规则(上线前测试用,不直接拦截)

  • 规则名称:bot_headless_log观察
  • 接入类型:SaaSWAF
  • 优先级:50
  • 匹配条件:Header sec-ch-ua 包含 HeadlessChrome
  • 处置动作:仅记录使用建议:新规则先设置为「观察」,观察1-3天访问日志,确认无误杀后,再切换成拦截动作。
利用百度云防护WAF识别无头爬虫:HTTP请求头指纹拦截科普

三、实操步骤(百度WAF控制台)

  1. 进入WAF控制台,web防护,打开【自定义规则】→【添加规则】,选择SaaSWAF接入类型;
  2. 填写规则名称,设置优先级;
  3. 匹配条件选择Header,填入sec-ch-ua,匹配方式选「包含」,内容填写HeadlessChrome;
  4. 点击添加「且」条件,新增Header条件Priority包含i;
  5. 选择永久生效,设置处置动作,勾选防护站点,保存发布。
利用百度云防护WAF识别无头爬虫:HTTP请求头指纹拦截科普

四、重要避坑提醒

  1. 请求头指纹可以被爬虫伪造,该规则只能拦截基础无头爬虫,需要搭配JA4指纹、访问频率、IP信誉、验证码等多层防护;
  2. 提前添加百度搜索引擎爬虫、监控拨测IP到白名单,防止误杀正规流量;
  3. 不要单独依靠Priority头拦截,少量正常HTTP/2客户端也会携带该请求头,必须组合HeadlessChrome特征一起判断。

五、小结

基于HTTP Header指纹的WAF规则,是网站对抗基础无头爬虫成本最低的第一道防护。多条件组合策略可以平衡防护效果与误杀风险,适合中小站点快速落地爬虫防护。

很多站长会担心:百度、谷歌这类搜索引擎渲染蜘蛛同样基于 Chromium 无头内核,会不会命中 HeadlessChrome 规则被误拦?答案是不会。 正规搜索引擎爬虫虽然使用 Chromium 内核解析 JS 页面,但厂商会在内核层面定制处理,清除HeadlessChrome指纹标识,不会在sec-ch-ua中出现该字符串。 只有第三方 Playwright、Puppeteer 开发的采集爬虫,默认配置才会携带 HeadlessChrome。 注意:有不少恶意爬虫会伪造 Baiduspider 的 UA 冒充搜索引擎蜘蛛,这类假冒爬虫反而大概率会保留 HeadlessChrome 指纹,会被我们的 WAF 规则识别拦截。

给TA打赏
共{{data.count}}人
人已打赏
在线客服
在线客服
热线电话
QQ客服
电子邮箱
suduwangluo