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

Delphi TWebBrowser访问Cloudflare保护站点触发验证码如何解决

解决Delphi TWebBrowser触发Cloudflare人机验证的方案

Cloudflare的人机验证核心基于浏览器指纹识别,包括UA特征、JS运行环境特性、TLS握手特征等,默认配置的TWebBrowser因基于旧IE兼容模式,指纹和主流浏览器差异极大,因此会被优先判定为非真实浏览器触发验证,可按以下步骤修改配置:

1. 修改IE内核兼容模式

TWebBrowser默认调用系统IE内核,默认运行在IE7兼容模式,是触发验证的最常见原因,需要修改注册表配置强制你的程序使用IE11原生模式:

  • 若你的程序是32位,打开注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
  • 若你的程序是64位,打开注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
    在对应路径下新建DWORD值,名称为你的可执行文件全名(例如myprogram.exe),十进制值设置为11001,保存后重启程序生效。

2. 替换自定义User-Agent

默认IE11的UA仍然有明显特征,可将TWebBrowser的UA修改为和你本地正常访问的Edge/Chrome UA一致,调用Windows API UrlMkSetSessionOption即可全局修改:

uses Winapi.UrlMon;

procedure SetCustomUA(const UA: string);
var
  Res: HResult;
begin
  Res := UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, PChar(UA), Length(UA) * SizeOf(Char), 0);
  if Failed(Res) then RaiseLastOSError;
end;

调用时传入当前主流浏览器UA即可,例如:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0

3. 开启IE内核的必要特性

打开系统自带的IE浏览器,进入「设置-高级」选项卡,确认以下配置已开启:

  • 启用JavaScript
  • 允许第一方、第三方Cookie
  • 启用TLS 1.2、TLS 1.3
  • 关闭所有兼容性视图相关开关
    以上配置会被TWebBrowser直接继承,是Cloudflare JS指纹校验的必要前提。

4. 最优替代方案

如果以上修改后仍有验证问题,建议直接替换TWebBrowser组件:Delphi 10.4及以上版本自带TEdgeBrowser组件,基于Chromium内核,指纹和主流Edge浏览器完全一致,基本不会触发Cloudflare的人机验证规则。

额外提示:如果你的公网IP已经被Cloudflare标记为高风险,哪怕用真实浏览器也可能触发验证,可切换网络环境后再测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:24:02