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

如何在Cloudflare Worker服务器判断HTTP请求是否来自浏览器?

如何在Cloudflare Worker中区分网页浏览器与curl类工具的请求?

1. User-Agent校验方案的可靠性

你提到的ChatGPT代码示例本质是通过User-Agent头识别浏览器特征,但这种方案并非绝对可靠:

addEventListener('fetch', (event) => {
  const userAgent = event.request.headers.get('User-Agent');
  if (userAgent && userAgent.includes('Mozilla') && userAgent.includes('AppleWebKit')) {
    // 大概率来自浏览器
  } else {
    // 非常见浏览器请求
  }
});
  • curl等工具可以轻松伪造User-Agent,比如执行curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"就能模拟浏览器请求。
  • 部分隐私浏览器、小众浏览器会修改User-Agent格式,可能导致误判。

2. 更优的判断方法

可以通过多种维度组合校验,提升判断准确性:

组合校验多请求头

浏览器通常会发送一系列标准请求头,而curl默认只携带少量头。可同时校验多个头的存在与格式:

addEventListener('fetch', (event) => {
  const headers = event.request.headers;
  const isLikelyBrowser = 
    headers.get('User-Agent')?.includes('Mozilla') &&
    headers.get('Accept')?.includes('text/html') &&
    headers.has('Accept-Language') &&
    headers.has('Accept-Encoding');
    
  if (isLikelyBrowser) {
    // 处理浏览器请求逻辑
  } else {
    // 处理非浏览器请求逻辑
  }
});

利用Cloudflare Bot Management

Cloudflare的Bot Management功能可识别自动化工具(包括curl),在Worker中可通过cf.botManagement对象获取机器人评分等信息:

addEventListener('fetch', (event) => {
  const botInfo = event.request.cf?.botManagement;
  if (botInfo) {
    // 评分越高,越大概率是正常浏览器请求(阈值可根据业务调整)
    if (botInfo.score >= 50) {
      // 正常处理请求
    } else {
      // 疑似自动化工具请求,可拦截或限制
    }
  } else {
    // 未开启Bot Management时,回退到其他校验方式
  }
});

Cookie标记校验

首次浏览器请求时设置专属Cookie,后续请求检查该Cookie是否存在。但此方法对首次请求无效,且Cookie也可被伪造,仅作为辅助手段。

3. Cloudflare专属请求头

Cloudflare提供了部分专属头可辅助判断请求来源:

  • CF-Bot-Management-Score:请求的机器人评分,需开启Bot Management功能,分数越低越可能是自动化工具。
  • CF-Bot-Management-Verified-Bot:标记是否为Cloudflare验证过的友好机器人(如搜索引擎爬虫)。
  • CF-Device-Type:识别设备类型(桌面/移动/平板),但无法直接区分浏览器与curl。

注意事项

没有100%绝对可靠的区分方法,任何请求头和标识都可被伪造。建议根据业务需求,组合使用多种校验方式平衡安全性与可用性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:20:01