PHP 7.2 无法真正运行 Vivaldi 浏览器,仅能通过 cURL 设置 Vivaldi 风格的 User-Agent 等请求头(如 Mozilla/5.0 ... Vivaldi/6.5.3203.58)伪装其 HTTP 请求,以绕过服务端 UA 检查;需确保 PHP 已启用 curl 扩展。

PHP 7.2 本身不模拟浏览器(如 Vivaldi),它只能模拟 HTTP 请求。所谓“模拟 Vivaldi”,实质是让 PHP 发出的 POST 请求在 请求头(User-Agent 等)上伪装成 Vivaldi 浏览器,从而绕过某些服务端的 UA 检查或兼容性限制。这不是真正运行 Vivaldi,而是“看起来像它”。关键在于手动设置符合 Vivaldi 特征的 HTTP 头。
设置 Vivaldi 风格的 User-Agent 和其他常见头
Vivaldi 当前主流版本(如基于 Chromium 120+)的典型 User-Agent 类似:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Vivaldi/6.5.3203.58你只需把它作为 User-Agent 加入请求头即可。完整示例如下(使用 cURL):
- 用
curl_setopt($ch, CURLOPT_USERAGENT, $ua)设置 UA 字符串 - 可选加
Accept、Accept-Language、Sec-Ch-Ua等增强“真实感”(非必须,但部分 API 会校验) - 注意:不要盲目复制全部 Chromium 头,
Sec-Ch-Ua等字段需与 UA 版本匹配,否则可能被识别为异常请求
用 cURL 发送带 Vivaldi UA 的 POST 请求
这是最常用、最可控的方式。以下代码发送表单数据,并伪装为 Vivaldi:
立即学习“PHP免费学习笔记(深入)”;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com/api/login');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, ['username' => 'test', 'password' => '123']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
// 关键:设置 Vivaldi User-Agent
$ua = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Vivaldi/6.5.3203.58';
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
// 可选:补充常见头(提高兼容性)
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: en-US,en;q=0.5',
'Connection: keep-alive',
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
发送 JSON 数据时同样适用
如果目标接口要求 JSON,只需把 CURLOPT_POSTFIELDS 改为 json_encode() 字符串,并显式设置 Content-Type,UA 不受影响:
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['id' => 123]));curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json', 'User-Agent: ...Vivaldi...']);- UA 字符串仍放在
HTTPHEADER或单独用CURLOPT_USERAGENT均可
注意事项
PHP 7.2 已停止官方支持(自 2020 年起),确保你的环境已启用 cURL 扩展(extension=curl 在 php.ini 中开启)。若遇到 SSL 错误,开发阶段可临时加:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);- 但上线前必须移除,改用正确证书(
CURLOPT_CAINFO)



















