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

使用chrome-php/headless-chromium触发HandshakeException异常求助

排查chrome-php与headless-chromium握手异常问题

正常使用chrome-php与headless-chromium库数月后,近期突然触发以下致命错误:

Fatal error: Uncaught Wrench\Exception\HandshakeException: No accept header receieved on handshake response in C:\Users\kamurj\vendor\chrome-php\wrench\src\Protocol\Protocol.php:469 
Stack trace: #0 C:\Users\kamurj\vendor\chrome- php\wrench\src\Client.php(243): Wrench\Protocol\Protocol->validateResponseHandshake('HTTP/1.1 403 Fo...', 'oMHZ8u72RCw63G9...')                 
 #1 C:\Users\kamurj\vendor\chrome- php\chrome\src\Communication\Socket\Wrench.php(99): Wrench\Client->connect() #2 C:\Users\kamurj\vendor\chrome- php\chrome\src\Communication\Connection.php(186): HeadlessChromium\Communication\Socket\Wrench->connect() #3 C:\Users\kamurj\vendor\chrome-php\chrome\src\Browser\BrowserProcess.php(146): HeadlessChromium\Communication\Connection->connect() #4 C:\Users\kamurj\vendor\chrome-php\chrome\src\BrowserFactory.php(81): HeadlessChromium\Browser\BrowserProcess->start('C:\\Program File...', Array) #5 C:\xampp\htdocs\zmeta.php(266): HeadlessChromium\BrowserFactory->createBrowser(Array) #6 {main} thrown in C:\Users\kamurj\vendor\chrome-php\wrench\src\Protocol\Protocol.php on line 469

排查方向及解决方案:

  • Chrome版本适配问题:Chrome自动更新后,headless模式的通信协议或权限逻辑可能发生变化,导致握手失败。先尝试更新chrome-php到最新版本:
    composer update chrome-php/chrome
    
    若更新后仍有问题,可在启动浏览器时添加兼容参数:
    $browser = $browserFactory->createBrowser([
        'args' => [
            '--no-sandbox',
            '--disable-gpu',
            '--remote-debugging-port=9222' // 指定可用端口
        ]
    ]);
    
  • 网络/安全拦截:错误栈中显示返回HTTP/1.1 403 Forbidden,说明握手请求被拦截。排查本地防火墙、杀毒软件是否阻止了Chrome的网络请求,或是否有代理设置干扰了WebSocket通信,暂时关闭相关软件测试。
  • 依赖库握手逻辑冲突:wrench库的握手验证逻辑可能与新版Chrome不兼容,优先通过更新依赖解决,若无法更新,可尝试调整wrench的验证逻辑(需谨慎修改源码)。
  • 文件权限问题:Chrome的临时目录或用户数据目录权限不足,导致启动异常。手动指定一个有读写权限的目录:
    $browser = $browserFactory->createBrowser([
        'userDataDir' => 'C:/Users/kamurj/AppData/Local/Temp/chrome-php-data' // 确保该目录可读写
    ]);
    
  • 端口占用问题:检查--remote-debugging-port指定的端口是否被其他进程占用,更换一个未被使用的端口测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:40:12