这是我学习了在Ubuntu 22.04上使用bash输出userAgent的过程的站点:
Get the "user agent" string from a new Google Chrome browser session from bash
我得到了命令
echo navigator.userAgent | /opt/google/chrome/chrome --headless --repl | perl -pe 's/^>>> //; s/HeadlessChrome/Chrome/g' | jq -r .result.value
直到Chrome 113之前的版本,它工作得很完美,之后它只给出错误:
[0531/154816.789187:WARNING:bluez_dbus_manager.cc(247)] Floss manager not present, cannot set Floss enable/disable.
[0531/154816.807959:WARNING:sandbox_linux.cc(393)] InitializeSandbox() called with multiple threads in process gpu-process.
[0531/154816.812699:ERROR:command_buffer_proxy_impl.cc(128)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
感谢链接:
How to Supress "Floss manager not present, cannot set Floss enable/disable."
但是使用这段代码,即使没有更多的错误出现:
echo navigator.userAgent | /opt/google/chrome/chrome --headless=new --repl --remote-allow-origins=* | perl -pe 's/^>>> //; s/HeadlessChrome/Chrome/g' | jq -r .result.value
命令shell需要输入,但我已经通过管道给出了输入,这显然不起作用。
如何解决这个问题?
1条答案
按热度按时间eyh26e7m1#
所以我终于想明白了。
新的
--headless
模式没有--repl
选项,旧的模式缺少“Floss manager”,因此您访问User Agent的唯一选项是设置--remote-debugging-port
,如下所示:但是现在你不能获得任何数据,因为所有的命令都需要通过websockets执行,你可以使用
websocat
或socat
来执行,但是调试端口也允许你通过访问一些HTTP端点来获得一些信息。其中一个端点是
/json/version
,它显示了您正在查找的User-Agent
属性。下面是一个简短的例子:旧方法的值:
{"id":2,"result":{"result":{"type":"string","value":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/110.0.5481.77 Safari/537.36"}}}
您不需要将“HeadlessChrome”替换为“Chrome”。
在Chrome 112上也可以看到:
:)