我有一個面試的這個問題。 你能告訴我一個服務器如何知道我用於特定網站的標籤或瀏覽器?服務器如何知道我正在使用哪個瀏覽器或選項卡?
回答
有一個header
調用User-Agent
當用戶從瀏覽器發出請求時發送到服務器。它看起來像這樣:
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0
它清楚地告訴你的是,瀏覽器是Mozilla瀏覽器,雖然有歷史的原因,你souldn't擔心一些額外的信息。
A header
是一種元信息,用戶看不到,但通過共享這種信息幫助服務器與客戶端通信。因此,如果客戶端使用過時的瀏覽器,則可以爲不同的頁面提供不同的頁面。
您無法知道客戶端正在使用哪個選項卡。
看到這個Wikipedia article。
在計算中,用戶代理是代表用戶操作的軟件(軟件代理),代理用戶是 。該術語的一種常見用法是指瀏覽器告訴網站有關瀏覽器和操作系統的信息。這允許網站自定義特定設備的功能的內容,但也會引發隱私問題。
術語「用戶代理」還有其他用途。例如,電子郵件 閱讀器是郵件用戶代理。在許多情況下,用戶代理在客戶端 - 服務器分佈式計算系統內的通信中使用的網絡協議中充當客戶端。特別地,即使當用戶不操作客戶端時,使用用戶代理報頭,超文本傳輸協議(HTTP)也識別發起該請求的客戶端軟件 。會話初始協議 (SIP)協議(基於HTTP)遵循此用法。在SIP中,術語用戶代理引用通信會話的兩個端點。
用戶代理標識當一個軟件代理中的網絡 協議操作,所以經常標識自身,它的應用類型,操作 系統,軟件供應商,或者軟件修訂,通過提交 特性標識字符串到其操作對等體。在HTTP, SIP和NNTP協議中,此標識在 標題字段User-Agent中傳輸。諸如網絡爬蟲之類的機器人通常也包括URL和/或電子郵件地址,以便網站管理員可以聯繫機器人的操作員 。
在HTTP中使用在HTTP中,用戶代理字符串通常用於內容 協商,其中原始服務器爲響應選擇合適的內容或 操作參數。例如,Web服務器可能會使用User-Agent 字符串根據特定版本的客戶端軟件的已知功能來選擇變體。內容剪裁的概念構建在RFC 1945中的HTTP標準中,以便定製響應以避免特定的用戶代理限制。「
用戶代理字符串是使用 機器人排除標準(robots.txt文件)從網站的某些部分中排除網絡爬蟲可能排除的條件之一。
與許多其他HTTP請求頭,在 「用戶代理」的字符串中的信息有助於客戶端 發送到服務器中,由於字符串可以從用戶 到用戶顯着地變化的信息。
用於人爲操作的網絡瀏覽器的格式用戶代理字符串格式是當前由HTTP/1.1語義的第5.5.3節和 內容指定的 。 HTTP中用戶代理字符串的格式是包含可選註釋的 產品標記(關鍵字)的列表。例如,如果 用戶的產品被稱爲WikiBrowser,則其用戶代理字符串 可能是WikiBrowser/1.0 Gecko/1.0。首先列出「最重要」產品組件 。
此字符串的部分如下:
產品名稱和版本(WikiBrowser/1.0)佈局引擎和版本 (壁虎/ 1.0)在所述第一瀏覽器戰爭,許多web服務器是 配置爲僅請將需要高級功能的網頁發送至包含框架的 ,並將其標識爲某些版本爲 Mozilla的客戶端。其他瀏覽器被認爲是較舊的產品,如 馬賽克,大提琴或Samba,並會發送一個純粹的骨骼HTML文檔。
出於這個原因,大多數Web瀏覽器使用的User-Agent字符串值作爲 如下:
的Mozilla/[版本]([系統和瀏覽器信息])[平臺] ([平臺詳細信息])擴展。例如,Safari瀏覽器上iPad已經 使用以下:
的Mozilla/5.0(ipad公司; U; CPU OS 3_2_1像的Mac OS X; EN-US) 爲AppleWebKit/531.21.10(KHTML,例如Gecko)移動/ 7B405該字符串的組件 如下:
Mozilla/5.0:以前用於表示與Mozilla渲染引擎兼容的 。 (iPad; U; CPU操作系統3_2_1,如Mac OS X; zh-cn):瀏覽器運行系統的詳細信息。 AppleWebKit/531.21.10:瀏覽器使用的平臺。 (KHTML,如 壁虎):瀏覽器平臺的詳細信息。 Mobile/7B405:這被 瀏覽器用於指示可直接在瀏覽器或第三方中使用的特定增強功能 。其中一個示例是 Microsoft Live Meeting,它註冊了一個分機號碼,以便Live服務知道該軟件是否已安裝,其中的 意味着它可以提供精簡的體驗來加入會議。 在遷移到Chromium代碼庫之前,Opera是使用最廣的 使用的Web瀏覽器,它沒有帶有「Mozilla」的 User-Agent字符串(而是以「Opera」開頭)。自2013年7月15日起, Opera的用戶代理字符串以「Mozilla/5.0」開頭,爲避免 遇到舊版服務器規則,不再包含單詞「Opera」 (而不是使用字符串「OPR」表示Opera版)。
自動代理(機器人)的格式自動網絡爬行工具 使用簡化的形式,其中重要的領域是聯繫信息 在出現問題的情況下。按照慣例,「機器人」一詞包含在代理人名字中[]。例如:
Googlebot/2.1(+ http://www.google.com/bot.html)自動代理程序是 預期遵循名爲「robots.txt」的特殊文件中的規則。
用戶代理欺騙的各種Web瀏覽器產品的普及 改變整個網絡的歷史,這也影響了 設計的網站在這樣一種方式,網站有時 設計,以及只與特定的瀏覽器上運行而不是根據萬維網聯盟(W3C) 或互聯網工程任務組(IETF)統一標準的 。網站通常會包含 代碼來檢測瀏覽器版本,以根據收到的用戶代理字符串調整發送的 的頁面設計。這可能意味着 不受歡迎的瀏覽器不會發送複雜的內容(儘管它們可能能夠正確處理),或者在極端情況下拒絕 所有內容。因此,各種瀏覽器具有隱藏或欺騙其識別以強制某些服務器端內容的功能。例如,對於 示例,Android瀏覽器將自己標識爲Safari(以及其他 ),以便提供兼容性。
其他HTTP客戶端程序,如下載管理器和離線瀏覽器,通常可以更改用戶代理字符串。
垃圾郵件機器人和網頁垃圾郵件通常使用假用戶代理。
有時它一直流行的Web開發者中發起可視 任何瀏覽器活動,鼓勵開發者設計出與任何瀏覽器同樣出色的工作網頁 。
用戶代理欺騙的結果可能是收集的統計信息 Web瀏覽器的使用不準確。
用戶代理嗅探主要文章:瀏覽器嗅探術語用戶代理 嗅探是指在用特定用戶代理查看時,網站顯示不同內容 的做法。在互聯網上,當使用 特定瀏覽器瀏覽頁面時,將會顯示 不同的網站。其中一個示例是Microsoft Exchange Server 2003的Outlook Web Access功能。使用Internet Explorer 6或更新版本進行查看時,與其他瀏覽器中的相同頁面 相比,顯示的功能更多。用戶代理嗅探現在被認爲是不好的 的做法,因爲它鼓勵瀏覽器特定的設計,並懲罰 具有無法識別的用戶代理標識的新瀏覽器。相反,W3C建議創建標準HTML標記,允許在儘可能多的瀏覽器中正確呈現 ,並測試 特定的瀏覽器功能,而不是特定的瀏覽器版本或 品牌。
專門針對移動電話的網站,如NTT DoCoMo的I-Mode或Vodafone的Vodafone Live!門戶,經常依賴 重上的用戶代理嗅探,由於移動瀏覽器通常彼此不同 很大。在移動瀏覽許多事態發展 在過去的幾年中已經取得,[什麼時候?],而許多老年人手機, 不具備這些新技術仍然大量使用。 因此,移動門戶網站往往會產生完全不同的視手機 標記代碼用來瀏覽。這些 差異可能較小,例如,調整某些圖像,以適應 更小的屏幕,還是相當廣泛,例如,在 WML而不是XHTML渲染頁面的。
加密強度符號在美國 國建立的Web瀏覽器,如Netscape Navigator和Internet Explorer,以前 使用的字母U,I,和N指定在 用戶代理字符串加密強度。直到1996年,當要導出的密鑰比40位長,美國政府不允許 加密, 廠商出貨各種版本的瀏覽器有不同的加密 優勢。 「U」代表「美國」(與128位 加密的版本),「I」代表「國際」 - 瀏覽器具有40位 加密,並且可以在世界任何地方使用 - 和「N」對於「無」(不加密),表示(事實上爲 )。在解除導出 限制之後,大多數供應商都支持256位加密。
- 1. 調用PHP時,瀏覽器或瀏覽器選項卡關閉
- 2. 如何知道瀏覽器選項卡是否已經使用Javascript打開?
- 3. 如何識別使用JavaScript或jQuery的瀏覽器選項卡?
- 4. 軌道服務器如何知道使用哪個route.rb?
- 5. 如何知道用戶正在使用的瀏覽器?
- 6. 如何在瀏覽器或選項卡上關閉實現Session.Abandon()?
- 7. OCSP:驗證者如何知道使用哪個OCSP服務器?
- 8. 如何知道我的.net應用程序在哪個瀏覽器上運行?
- 9. 如何在瀏覽器或選項卡關閉時獲取Web通知
- 10. 如何使用JavaScript獲取瀏覽器的選定選項卡?
- 11. 在IE瀏覽器中等效的選項卡式瀏覽器
- 12. 如何知道在Qt中選擇了哪個選項卡?
- 13. Google Analytics目標 - 如何知道用戶是否使用多個瀏覽器選項卡/窗口?
- 14. 如何知道哪個選項卡在Android ActionBar選項卡式活動
- 15. 瀏覽器在請求時如何知道發送給服務器的cookie?
- 16. 使瀏覽器選項卡閃爍通知
- 17. ui.bootstrap.tabs如何知道哪個選項卡是活躍在angularjs控制器
- 18. 如何使用FFMPEG捕獲瀏覽器的選項卡內容
- 19. Web瀏覽器如何知道要打開哪個連接,HTTP或HTTP?
- 20. PL/SQL:如何檢測正在使用哪個瀏覽器?
- 21. 瀏覽器如何知道scss文件?
- 22. 瀏覽器如何知道哪個響應屬於哪個請求?
- 23. Django正在使用哪個服務器?
- 24. 我怎麼知道服務器在哪個狀態?
- 25. 檢測哪個選項卡/正集中窗口谷歌瀏覽器
- 26. 如何知道瀏覽器選項卡是否集中在使用Javascript加載時?
- 27. 如何讓Atom.io知道我正在開發服務器?
- 28. 我如何知道Mongodb服務器正在運行--auth?
- 29. 如何知道網站通過瀏覽器發佈到服務器的信息?
- 30. 瀏覽器選項卡操作