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

非IP封禁场景下Cloudflare拦截PHP CURL请求的解决方案

问题根因

该拦截为Cloudflare自动化机器人防护触发,和IP封禁无关。真实浏览器访问目标站点时,会自动完成Cloudflare下发的JS挑战、携带匹配的TLS握手指纹、发送符合浏览器规范的完整请求特征;当前PHP发起的请求存在多处典型自动化脚本特征,因此被统一拦截,这也是更换服务器、更换运营商网络、替换file_get_contents/Guzzle等基础请求库依然无法正常访问的核心原因。
现有测试代码存在的低级错误:

  • 携带Cookie的测试方法错误开启CURLOPT_POST => 1配置,目标地址为GET请求,错误的请求方法会直接触发拦截规则
  • 请求头配置不符合真实浏览器特征:首次访问静态页面时携带X-Requested-With: XMLHttpRequest、content-type: text/plain;charset=UTF-8属于异常请求头,且头字段排列顺序和真实Chrome浏览器的请求头顺序不匹配
  • 原生PHP CURL扩展的TLS握手JA3指纹、HTTP/2帧特征和真实浏览器差异极大,Cloudflare无需校验UA、Cookie等应用层内容,仅靠传输层指纹就能识别出自动化脚本请求,仅修改应用层参数完全无法绕过该层检测。
可行解决方案

按落地成本从低到高、绕过成功率从低到高排序:

  • 优先对接官方数据源
    investing.com本身提供官方公开的行情数据API,无需爬取前端嵌入的widget页面,访问合规稳定,完全不会触发防护拦截。
  • 修正基础请求配置
    移除代码中错误的POST请求配置,删除不符合真实GET页面请求的多余请求头,补全最新版Chrome浏览器默认携带的sec-ch-ua、sec-fetch-*系列标准请求头,严格对齐真实浏览器的请求头排列顺序。该方案仅能绕过Cloudflare最低防护等级的规则,对当前站点的防护策略基本无效。
  • 替换支持指纹模拟的请求库
    弃用原生PHP CURL,选用支持自定义JA3指纹、HTTP/2协议特征模拟的请求组件,将请求的TLS握手参数、HTTP协议层特征配置为和最新版Chrome完全一致,可绕过大部分常规Cloudflare防护规则。
  • 无头浏览器兜底方案
    若上述方案依然被拦截,使用真实浏览器内核发起请求:可通过chrome-php等PHP可直接调用的无头Chrome库,或独立部署Playwright/Puppeteer渲染服务,由PHP调用服务让真实Chrome内核完成页面加载、自动通过Cloudflare JS挑战,最终返回渲染完成的页面内容。该方案的请求特征和真人手动打开浏览器访问完全一致,只要控制好访问频率,拦截通过率最高。

注意:请严格控制请求频率,短时间高频访问哪怕是真实用户也会触发Cloudflare的验证码拦截;抓取行为请遵守目标站点的robots协议及相关版权规定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:18:49