什麼是User-Agent?
說到瀏覽器指紋,最先被提及的往往就是User-Agent。它是瀏覽器傳送給網站伺服器的HTTP標頭,其中包含瀏覽器類型、版本、作業系統等資訊。
什麼是HTTP標頭?
當您在瀏覽器中輸入網址並按下Enter鍵時,瀏覽器會向伺服器傳送請求以獲取網頁內容。這個請求中附帶了一些額外資訊——這些資訊就是HTTP標頭。
您可以把HTTP標頭想像成您在餐廳裡遞給服務生的那張點菜單。您坐下來,填好您的需求,然後把它遞過去,廚房就知道您想要什麼了。同樣,HTTP標頭告訴伺服器您的瀏覽器在請求什麼,以及它有哪些特殊要求。
HTTP標頭包含多種資訊,例如:
User-Agent —— 就像告訴服務生您的名字,讓他知道是誰在點餐。它告訴伺服器您使用的瀏覽器和作業系統。
Accept —— 就像在點菜單上寫明您能接受的食物類型(例如中餐、西餐或素食)。它告訴伺服器您的瀏覽器能接受哪些回應格式,例如HTML網頁、圖片或影片。
Referer —— 就像告訴服務生您是經朋友推薦才來這家餐廳的。它告訴伺服器您是從哪個網頁跳轉過來的。
Cookie —— 就像在點菜單上寫下特殊要求,例如“不要辣”或“少鹽”。Cookie是儲存在瀏覽器中的小型文字檔案,包含與您網站存取相關的資訊。
HTTP標頭的目的很簡單:幫助伺服器理解您的請求,並返回最合適的內容——就像點菜單告訴服務生您想吃什麼一樣。
User-Agent由什麼組成?
User-Agent字串由多個部分組成,每一部分都承載著特定的資訊——從瀏覽器類型到作業系統版本。我們透過幾個例子來拆解一下:
範例 1(Windows 上的 Chrome):
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36
範例 2(Windows 上的 Firefox):
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0
範例 3(macOS 上的 Safari):
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15
各部分含義如下:
Mozilla/5.0 —— 通用識別碼,表示該User-Agent遵循Mozilla規範,版本為5.0。
作業系統資訊 —— 使用者作業系統的詳細資訊及版本。這對開發者很重要,因為不同作業系統可能有不同的特性或限制。例如 (Windows NT 10.0; Win64; x64) 表示 Windows 10 64位元系統。
渲染引擎資訊 —— 瀏覽器用來渲染網頁的核心元件。了解渲染引擎有助於開發者針對特定瀏覽器優化網站。例如AppleWebKit/537.36表示使用的是蘋果的WebKit引擎。
相容模式資訊 —— 表示瀏覽器是否處於某種特定的相容模式下執行,幫助開發者確保網站能適配不同的瀏覽器模式。(KHTML, like Gecko) 表示瀏覽器在處理頁面時使用了與KHTML和Gecko類似的渲染引擎。
應用程式資訊 —— 瀏覽器的具體名稱和版本號。例如Chrome/94.0.4606.81表示使用者正在使用 Chrome 94.0.4606.81版本。
所有瀏覽器的User-Agent都一樣嗎?
不完全一樣。雖然Chrome、Firefox、Safari和Edge等主流瀏覽器的User-Agent都包含作業系統、瀏覽器類型、版本和渲染引擎等資訊,但它們之間仍有細微差別。
比較一下:

可以看出,除了通用識別碼之外,各個瀏覽器的User-Agent存在明顯差異。
為什麼會有兩個User-Agent?
當您使用realfp等工具檢測瀏覽器的User-Agent指紋時,可能會發現顯示了兩個不同的User-Agent。這是為什麼呢?
實際上,獲取使用者User-Agent有兩種方式:
透過HTTP請求獲取 —— 在伺服器端進行,伺服器解析HTTP標頭中的User-Agent欄位。
透過JavaScript獲取 —— 在用戶端(使用者瀏覽器)進行,使用window.navigator.userAgent等JavaScript函數,不依賴伺服器端HTTP請求。
舉個例子:假設您有一台沒有連網的電腦,瀏覽器無法向任何網站發起請求。但您仍然想知道這個瀏覽器的User-Agent——您可以打開Chrome,按F12打開開發者工具,點擊Console標籤,在控制台中輸入window.navigator.userAgent,就能直接看到該瀏覽器的User-Agent。
如果您經常編寫腳本爬取網站內容,確保這兩個User-Agent被一致修改是非常重要的。您應該始終使用realfp之類的工具來驗證修改後的User-Agent是否符合真實場景。
User-Agent有什麼用?
在當今的數位環境中,User-Agent有著廣泛的實際應用:
網站流量分析 —— 分析工具利用User-Agent資料追蹤訪客的瀏覽器、作業系統和裝置類型,幫助網站營運者了解受眾並優化使用者體驗。
網站相容性 —— 開發者透過分析User-Agent資訊,確保網站能在不同瀏覽器和裝置上都能正常運作。
惡意活動偵測 —— 安全團隊和管理員利用User-Agent資料偵測可疑或異常活動,因為某些User-Agent字串可能暗示攻擊或濫用行為。
廣告精準投放 —— 行銷團隊利用User-Agent資料更好地定向投放廣告,因為不同裝置和瀏覽器的使用者對廣告形式的反應可能不同。
資料分析與市場研究 —— 研究人員和分析師利用User-Agent資料了解使用者在不同瀏覽器和裝置上的行為,從而洞察使用者偏好和趨勢。
多帳號管理
從前面的討論可以看出,網站透過User-Agent可以獲取大量關於使用者裝置和瀏覽習慣的資訊,包括:
·瀏覽器類型和版本
·作業系統(Windows、macOS、Android 等)
·裝置類型(電腦還是手機)
如果您管理多個帳號,務必確保各帳號之間的資訊特徵存在差異。否則,網站可能會根據這些資訊將您的多個帳號關聯起來。
使用瀏覽器擴充功能來修改User-Agent並不能有效地偽裝您的瀏覽器,這種防範措施並不安全。尤其是當User-Agent指紋與其他指紋資訊結合時,它需要與真實裝置的特徵相匹配。
相比之下,指紋瀏覽器可以產生與真實裝置特徵一致的指紋,並讓您每個帳號都在獨立、隔離的環境中執行。這不僅保護了您的隱私,也確保了帳號的安全性。
什麼是HTTP標頭?
當您在瀏覽器中輸入網址並按下Enter鍵時,瀏覽器會向伺服器傳送請求以獲取網頁內容。這個請求中附帶了一些額外資訊——這些資訊就是HTTP標頭。
您可以把HTTP標頭想像成您在餐廳裡遞給服務生的那張點菜單。您坐下來,填好您的需求,然後把它遞過去,廚房就知道您想要什麼了。同樣,HTTP標頭告訴伺服器您的瀏覽器在請求什麼,以及它有哪些特殊要求。
HTTP標頭包含多種資訊,例如:
User-Agent —— 就像告訴服務生您的名字,讓他知道是誰在點餐。它告訴伺服器您使用的瀏覽器和作業系統。
Accept —— 就像在點菜單上寫明您能接受的食物類型(例如中餐、西餐或素食)。它告訴伺服器您的瀏覽器能接受哪些回應格式,例如HTML網頁、圖片或影片。
Referer —— 就像告訴服務生您是經朋友推薦才來這家餐廳的。它告訴伺服器您是從哪個網頁跳轉過來的。
Cookie —— 就像在點菜單上寫下特殊要求,例如“不要辣”或“少鹽”。Cookie是儲存在瀏覽器中的小型文字檔案,包含與您網站存取相關的資訊。
HTTP標頭的目的很簡單:幫助伺服器理解您的請求,並返回最合適的內容——就像點菜單告訴服務生您想吃什麼一樣。
User-Agent由什麼組成?
User-Agent字串由多個部分組成,每一部分都承載著特定的資訊——從瀏覽器類型到作業系統版本。我們透過幾個例子來拆解一下:
範例 1(Windows 上的 Chrome):
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36
範例 2(Windows 上的 Firefox):
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0
範例 3(macOS 上的 Safari):
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15
各部分含義如下:
Mozilla/5.0 —— 通用識別碼,表示該User-Agent遵循Mozilla規範,版本為5.0。
作業系統資訊 —— 使用者作業系統的詳細資訊及版本。這對開發者很重要,因為不同作業系統可能有不同的特性或限制。例如 (Windows NT 10.0; Win64; x64) 表示 Windows 10 64位元系統。
渲染引擎資訊 —— 瀏覽器用來渲染網頁的核心元件。了解渲染引擎有助於開發者針對特定瀏覽器優化網站。例如AppleWebKit/537.36表示使用的是蘋果的WebKit引擎。
相容模式資訊 —— 表示瀏覽器是否處於某種特定的相容模式下執行,幫助開發者確保網站能適配不同的瀏覽器模式。(KHTML, like Gecko) 表示瀏覽器在處理頁面時使用了與KHTML和Gecko類似的渲染引擎。
應用程式資訊 —— 瀏覽器的具體名稱和版本號。例如Chrome/94.0.4606.81表示使用者正在使用 Chrome 94.0.4606.81版本。
所有瀏覽器的User-Agent都一樣嗎?
不完全一樣。雖然Chrome、Firefox、Safari和Edge等主流瀏覽器的User-Agent都包含作業系統、瀏覽器類型、版本和渲染引擎等資訊,但它們之間仍有細微差別。
比較一下:

可以看出,除了通用識別碼之外,各個瀏覽器的User-Agent存在明顯差異。
為什麼會有兩個User-Agent?
當您使用realfp等工具檢測瀏覽器的User-Agent指紋時,可能會發現顯示了兩個不同的User-Agent。這是為什麼呢?
實際上,獲取使用者User-Agent有兩種方式:
透過HTTP請求獲取 —— 在伺服器端進行,伺服器解析HTTP標頭中的User-Agent欄位。
透過JavaScript獲取 —— 在用戶端(使用者瀏覽器)進行,使用window.navigator.userAgent等JavaScript函數,不依賴伺服器端HTTP請求。
舉個例子:假設您有一台沒有連網的電腦,瀏覽器無法向任何網站發起請求。但您仍然想知道這個瀏覽器的User-Agent——您可以打開Chrome,按F12打開開發者工具,點擊Console標籤,在控制台中輸入window.navigator.userAgent,就能直接看到該瀏覽器的User-Agent。
如果您經常編寫腳本爬取網站內容,確保這兩個User-Agent被一致修改是非常重要的。您應該始終使用realfp之類的工具來驗證修改後的User-Agent是否符合真實場景。
User-Agent有什麼用?
在當今的數位環境中,User-Agent有著廣泛的實際應用:
網站流量分析 —— 分析工具利用User-Agent資料追蹤訪客的瀏覽器、作業系統和裝置類型,幫助網站營運者了解受眾並優化使用者體驗。
網站相容性 —— 開發者透過分析User-Agent資訊,確保網站能在不同瀏覽器和裝置上都能正常運作。
惡意活動偵測 —— 安全團隊和管理員利用User-Agent資料偵測可疑或異常活動,因為某些User-Agent字串可能暗示攻擊或濫用行為。
廣告精準投放 —— 行銷團隊利用User-Agent資料更好地定向投放廣告,因為不同裝置和瀏覽器的使用者對廣告形式的反應可能不同。
資料分析與市場研究 —— 研究人員和分析師利用User-Agent資料了解使用者在不同瀏覽器和裝置上的行為,從而洞察使用者偏好和趨勢。
多帳號管理
從前面的討論可以看出,網站透過User-Agent可以獲取大量關於使用者裝置和瀏覽習慣的資訊,包括:
·瀏覽器類型和版本
·作業系統(Windows、macOS、Android 等)
·裝置類型(電腦還是手機)
如果您管理多個帳號,務必確保各帳號之間的資訊特徵存在差異。否則,網站可能會根據這些資訊將您的多個帳號關聯起來。
使用瀏覽器擴充功能來修改User-Agent並不能有效地偽裝您的瀏覽器,這種防範措施並不安全。尤其是當User-Agent指紋與其他指紋資訊結合時,它需要與真實裝置的特徵相匹配。
相比之下,指紋瀏覽器可以產生與真實裝置特徵一致的指紋,並讓您每個帳號都在獨立、隔離的環境中執行。這不僅保護了您的隱私,也確保了帳號的安全性。
