賞金將在 6 天后到期。此問題的答案有資格獲得 100聲望賞金。 馬里奧·帕倫博想引起更多人對這個問題的關注。
我想從 bash 的新 Google Chrome 瀏覽器會話(剛剛打開)中獲取用戶代理 HTTP 請求標頭字串并將其放入變數中。
這是偽代碼:
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命令執行此操作,那么等效的解決方法是什么?
uj5u.com熱心網友回復:
帶有命令列選項的無頭模式下的Chrome--repl評估 Javascript 運算式。您可以嘗試以下方法來獲取用戶代理字串:
echo navigator.userAgent | /opt/google/chrome/chrome --headless --repl 2> /dev/null | sed 's/^>>> //' | jq -r .result.value
注意:請直接運行chrome二進制檔案(例如/opt/google/chrome/chrome)而不是google-chromeshell 腳本,因為 shell 腳本似乎不支持傳遞標準輸入。
該sed命令從輸出中洗掉提示,并jq從 Chrome 列印的 JSON 字串中提取值。
但是請注意,使用--headless命令列標志運行 Chrome 時的用戶代理字串與定期運行時的用戶代理字串不同。至少 Chrome 105 似乎有“HeadlessChrome”而不是“Chrome”。
uj5u.com熱心網友回復:
這是一種替代方法,它并非特定于 Chrome,也適用于許多其他瀏覽器和 http 客戶端。它涉及使用 netcat 設定 HTTP 服務器并捕獲 User-Agent 標頭值:
echo -e 'HTTP/1.1 200 OK\r\n\r\n' | nc -q 0 -l localhost 8080 | sed -n '/^User-Agent: /Is/.*: //p' & google-chrome --headless http://localhost:8080 2>/dev/null
您可以用另一個瀏覽器或 http 客戶端替換最后的 google-chrome 呼叫。
uj5u.com熱心網友回復:
另一個基于 Jukka Matilainen 的回答:
USER_AGENT=$(
while read request; do
[[ $request =~ ^User-Agent:.*$ ]] && { echo "${request//User-Agent: }"; break; }
done < <(nc -q0 -l -p 8080) &
curl http://localhost:8080 2> /dev/null # change curl to whatever cli browser
)
echo "$USER_AGENT"
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504912.html
標籤:重击 谷歌浏览器 命令行 ubuntu-22.04
上一篇:解決:在使用Tomcat的MavenWeb應用程式中,找不到適用于jdbc:mysql://localhost:3306/test錯誤的驅動程式
