You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何识别并拦截cURL请求?解析竞品反爬虫机制

网站反爬识别手段分析及落地建议

从你给出的响应头差异和场景描述来看,目标网站的反爬核心是在首次请求时校验请求来源的真实性,只有通过校验的请求才会生成有效会话Cookie(如spid/spsc),否则返回空页面。具体的识别手段和可落地的反爬方案如下:

一、目标网站的核心识别逻辑

1. TLS指纹(JA3/JA3S)校验

浏览器和cURL/Postman的TLS握手参数差异极大:

  • 浏览器会发送特定的加密套件列表、ALPN扩展、EC点格式等参数,形成唯一的JA3哈希指纹
  • cURL默认的TLS配置和浏览器完全不匹配,哪怕你复制了所有请求头,握手阶段的指纹已经暴露了非浏览器身份
  • 网站通过对比请求的JA3哈希和预存的浏览器指纹库,不匹配就拒绝生成有效会话

2. 请求元数据的完整性校验

除了可见的请求头,网站还可能检查这些细节:

  • 请求头顺序:浏览器发送请求头有固定顺序(比如先Host再User-Agent),cURL/Postman的头顺序往往不一致
  • 隐式请求头:浏览器会自动携带Sec-Fetch-*系列头(如Sec-Fetch-Site: none)、Accept-Language的标准值,这些你可能没完全复制
  • 请求上下文:首次访问时浏览器无Cookie,但网站可能会检查请求中是否有非法Cookie格式,或者结合IP、UA生成临时校验逻辑,cURL环境不满足要求

3. 会话预绑定机制

网站在首次响应前会完成合法性验证:

  • 只有通过校验的请求才会下发spid/spsc这类会话标识
  • 后续请求必须携带该标识,且校验标识和请求来源的绑定关系(比如TLS指纹是否和首次请求一致)
  • 无有效会话的请求直接返回空页面,阻断爬虫

二、自身网站的反爬落地方案

1. 实现TLS指纹校验

  • 收集Chrome、Firefox、Safari等主流浏览器的JA3/JA3S哈希值,存到服务器白名单
  • 在Nginx或应用层拦截请求时,计算当前请求的JA3哈希,不在白名单内的直接返回空页面
  • 可以用Nginx的开源ngx_http_ja3_module快速集成,无需大量代码开发

2. 强化请求头校验

  • 强制校验请求头的顺序和完整性:要求必须携带Sec-Fetch-Site、Accept-Language等隐式头,且Accept-Encoding必须包含gzip, br
  • 拒绝缺失关键头或头格式不符合浏览器规范的请求

3. 会话绑定防护

  • 首次请求通过校验后,结合TLS指纹、IP、UA生成唯一会话标识(如spid),通过set-cookie下发
  • 后续所有请求必须携带该会话标识,且校验标识对应的TLS指纹、IP是否和首次请求一致,不一致则拒绝服务
  • 对无有效会话的请求返回空页面,避免爬虫绕过校验

4. 动态内容校验

  • 在页面中嵌入JS生成的动态token,爬虫如果不执行JS就无法获取该token,后续提交请求会被拒绝
  • 服务端渲染页面时,只有通过初始校验的请求才能获取包含有效token的内容

响应头对比参考

浏览器响应头:

HTTP/1.1 200 
Server: nginx
Date: Tue, 19 Sep 2023 15:42:12 GMT
Content-Type: text/html;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=15
set-cookie: spid=some_spid_value; Path=/; Secure; SameSite=None
set-cookie: spsc=some_spsc_value; Path=/; Secure; SameSite=None
vary: Accept-Encoding
content-encoding: gzip
strict-transport-security: max-age=15724800; includeSubDomains
X-SP-CRID: 1909462187:1

cURL响应头(复制浏览器请求头):

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 19 Sep 2023 15:43:28 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=15
access-control-allow-origin: *
cache-control: no-cache
expires: Tue, 19 Sep 2023 15:4327 GMT
pragma: no-cache
content-type: text/html
X-SP-CRID: 1913083470:1

内容的提问来源于stack exchange,提问作者QuestionMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:05:17