PHP 7.3 无法真正模拟 Brave 浏览器行为,仅能通过设置 User-Agent、Sec-Ch-Ua 等请求头在 HTTP 层拟态,配合 Cookie 管理和 Referer 可高度模拟 Brave 请求特征,但不支持 JS 渲染、WebGL 指纹等客户端能力。

PHP 7.3 本身不模拟浏览器(如 Brave),它只是在服务端发起 HTTP 请求。所谓“模拟 Brave”,实质是让 PHP 发出的请求看起来像 Brave 浏览器发出的——即通过设置合适的请求头(User-Agent、Accept、Referer 等),让目标服务器认为这是来自 Brave 的合法访问。
这在爬虫、登录模拟、绕过简单 UA 检查等场景中很常见,但注意:仅改 UA 不能真正“伪装成 Brave 用户行为”(比如 JavaScript 渲染、Cookie 同步、WebGL 指纹等),那些需用 Puppeteer 或 Playwright;PHP 做的是纯 HTTP 层的拟态。
设置 Brave 风格的 User-Agent
Brave 基于 Chromium,其 UA 字符串与 Chrome 高度相似,但含 `Brave` 标识。例如最新稳定版(2026 年常见)典型 UA:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Brave/128.0.0.0
在 cURL 中添加该 UA 即可:
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Brave/128.0.0.0');
✅ 关键点:
立即学习“PHP免费学习笔记(深入)”;
- 不要硬编码固定版本,生产环境建议动态读取或轮换 UA(防封)
- 若目标校验严格,还需补全
Accept,Accept-Language,Sec-Ch-Ua等 Chromium 系 headers(见下文)
补充常用 Brave 兼容请求头
仅设 UA 有时不够,部分接口会检查 `Sec-*` 头(Chromium 安全字段)。PHP cURL 可手动添加(注意:这些头对服务端无实际影响,仅用于“过检”):curl_setopt($ch, CURLOPT_HTTPHEADER, [
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Brave/128.0.0.0',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8',
'Sec-Ch-Ua: "Brave";v="128", "Not;A=Brand";v="24", "Chromium";v="128"',
'Sec-Ch-Ua-Mobile: ?0',
'Sec-Ch-Ua-Platform: "Windows"',
'Upgrade-Insecure-Requests: 1',
'Accept-Encoding: gzip, deflate',
]);⚠️ 注意:
-
Sec-Ch-Ua*等头是 Chromium 浏览器自动注入的,PHP 手动加只是“模仿”,不触发任何安全机制 - 若目标服务校验
Sec-Ch-Ua与User-Agent版本不一致,可能拒收 —— 务必保持数字统一(如都写128)
搭配 Cookie 与 Referer 更像真实浏览
单纯发 POST 不足以模拟一次完整浏览流程。若需维持登录态或绕过 Referer 校验,应:- 使用
CURLOPT_COOKIEJAR/CURLOPT_COOKIEFILE自动管理 Cookie - 设置
Referer为该站点的上一页(如登录页 URL) - 开启
CURLOPT_FOLLOWLOCATION自动跳转(模拟点击后重定向)
示例片段:
curl_setopt($ch, CURLOPT_REFERER, 'https://example.com/login'); curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/brave_cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/brave_cookie.txt'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
✅ 这样组合后,请求特征已高度接近 Brave 手动操作产生的流量(服务端日志里几乎无法区分)。
file_get_contents 方式(轻量但受限)
如不依赖 cURL,可用 `file_get_contents()` + `stream_context_create()`,但注意:- PHP ≥ 7.4 才支持
method => 'POST'以外的自定义头(包括 Sec-Ch-Ua) -
file_get_contents无法自动处理 Cookie 文件,需手动解析Set-Cookie并拼接Cookie:头
简易示例(仅基础 UA):
$data = http_build_query(['username' => 'test', 'password' => '123']);
$opts = [
'http' => [
'method' => 'POST',
'header' => "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Brave/128.0.0.0\r\n" .
"Content-type: application/x-www-form-urlencoded\r\n",
'content' => $data,
]
];
$response = file_get_contents('https://example.com/api/login', false, stream_context_create($opts));⚠️ 缺点:无法设 Sec-Ch-Ua,无 Cookie 自动管理,超时控制弱 —— 仅适合调试或极简场景。
不复杂但容易忽略



















