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

Chrome 113+版本下通过Bash获取navigator.userAgent的问题求助

解决Chrome 113+无头模式下获取navigator.userAgent的管道失效问题

Chrome 113版本切换到新无头模式(--headless=new)后,原REPL交互逻辑发生变化,直接通过echo管道传递命令时,Chrome还未完成初始化准备,导致命令无法被接收,进而卡住等待输入。以下是几种可行的解决方法:

方法1:延迟发送命令(无需额外工具)

通过sleep给Chrome预留初始化时间,再发送命令和退出指令:

{ sleep 2; echo "navigator.userAgent"; echo "quit"; } | /opt/google/chrome/chrome --headless=new --repl --remote-allow-origins=* | perl -pe 's/^>>> //; s/HeadlessChrome/Chrome/g' | jq -r '.result.value'
  • 可根据实际情况调整sleep时长(1-3秒均可),确保Chrome完成REPL初始化;
  • echo "quit"会让Chrome执行完命令后自动退出,避免持续卡住。

方法2:直接执行脚本输出结果(无需REPL)

绕开REPL,通过加载数据URI直接执行脚本并提取结果:

/opt/google/chrome/chrome --headless=new --dump-dom "data:text/html,<script>document.write(navigator.userAgent.replace('HeadlessChrome','Chrome'))</script>" | sed -e 's/<html><head><\/head><body>//' -e 's/<\/body><\/html>//'
  • 利用--dump-dom输出页面渲染后的内容,再通过sed剔除多余HTML标签,仅保留UserAgent字符串;
  • 无需依赖jq和perl,命令更简洁。

方法3:用Expect工具精确控制交互(最可靠)

安装expect工具监听Chrome的REPL提示符,确保命令在正确时机发送:

  1. 安装expect:
sudo apt update && sudo apt install expect -y
  1. 创建get_user_agent.exp脚本:
#!/usr/bin/expect
spawn /opt/google/chrome/chrome --headless=new --repl --remote-allow-origins=*
expect ">>> "
send "navigator.userAgent\r"
expect ">>> "
send "quit\r"
expect eof
  1. 赋予执行权限并运行:
chmod +x get_user_agent.exp
./get_user_agent.exp | perl -pe 's/^>>> //; s/HeadlessChrome/Chrome/g' | jq -r .result.value
  • Expect会等待Chrome输出>>>提示符后再发送命令,完全避免时机匹配问题,稳定性最高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:42:20