bash - 从 bash 的新 Google Chrome 浏览器 session 中获取 "user agent"字符串

标签 bash google-chrome command-line ubuntu-22.04

我想得到 User Agent HTTP request header来自 bash 的新 Google Chrome 浏览器 session (刚刚打开)的字符串,并将其放入变量中。

伪代码如下:

USER_AGENT="$(google-chrome --user-agent)"
echo "$USER_AGENT"

输出示例:

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36

如果无法使用 google-chrome 命令执行此操作,有什么等效的解决方法?

最佳答案

Chrome headless使用 --repl 命令行选项的模式计算 Javascript 表达式。您可以尝试类似以下的操作来获取 user agent string :

echo navigator.userAgent | /opt/google/chrome/chrome --headless --repl 2> /dev/null | sed 's/^>>> //' | jq -r .result.value

注意:请直接运行 chrome 二进制文件(例如 /opt/google/chrome/chrome)而不是 google-chrome shell脚本,因为shell脚本好像不支持标准输入通过。

sed 命令从输出中删除提示,jq 命令从 Chrome 打印的 JSON 字符串中提取值。

但是请注意,使用 --headless 运行 Chrome 时的用户代理字符串定期运行时,命令行标志与用户代理字符串不同。至少 Chrome 105 似乎有“HeadlessChrome”而不是“Chrome”。

关于bash - 从 bash 的新 Google Chrome 浏览器 session 中获取 "user agent"字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73571131/

相关文章:

php - 如何从命令行运行 php 静态函数?

windows - 重命名没有扩展名的文件

linux - 创建嵌套在不可用目录中的文件的简单方法

windows - Windows 和 Linux 上的 GUI 应用程序

linux - cp/rsync 命令,目标为目录的符号链接(symbolic link)

Angular:当使用 innerHTML 并禁用缓存时,图像会在单击时重新加载

java - Chrome 重新初始化 HttpSession

arrays - Bash 中的可变列表或数组结构?我怎样才能轻松附加到它?

regex - Shell 脚本 Sed - 如何仅在第一次出现字符串时读取文件并写入另一个文件?

javascript - Web Worker 内存泄漏?