輯導語:User Agent,簡稱UA,中文名為用戶代理,是一種向訪問網站提供你所使用的瀏覽器類型及版本、操作系統及版本、瀏覽器內核、等信息的標識。通過這個標識,用戶所訪問的網站可以顯示不同的排版從而為用戶提供更好的體驗或者進行信息統計。接下來,本文作者為我們總結了其發展的趣味史。
最近在看《給產品經理講技術》,其中有一段簡要的提到了瀏覽器UserAgent的含義和作用。在最后作者暗示UserAgent的變遷是一段充滿趣味性的歷史,為了滿足我的好(吃)奇(瓜)心理,我去深扒了一下。
結果不扒不知道,一扒嚇一跳。今天就給大家分享一下這個陳年老瓜。
首先,我們先簡要了解一下各大瀏覽器的出生日期:
大家先對這些瀏覽器的出生時間有一個概念,然后大家把板凳和西瓜拿好,讓我們開始吧~
1989年,超級大神伯納斯·李教授發明了萬維網(World Wide Web,簡稱3W),然而大神并不滿足于此,為了大家能更方便地訪問萬維網,大神大手一揮,推出了世界上第一款瀏覽器。
李大神尋思給它起個什么名字呢?
此時,李大神可能是懶蟲上身,想也不想,要不就叫World Wide Web,跟大兒子(萬維網)一個名字吧!
后來大神感覺交流起來不是很方便,經常不知道World Wide Web指的是誰,而且這么偷懶的行為有點對不起小兒子,于是把小兒子的名字改成了Nexus。
由于是瀏覽器的祖師爺,沒有競爭對手,Nexus馬上就流行了起來。
由于是最早的瀏覽器,Nexus只支持文字展示,還不支持圖片展示,而這恰好給了競爭對手可乘之機,同時也是UserAgent的由來。
1993年,伊利諾伊的NCSA組織認為沒有圖片的網頁就像失去顏色的世界!作為一群完美主義者,這完全不能忍!
因此他們發明了第一個可以顯示圖片的瀏覽器:Mosaic(馬賽克),能顯示圖片,但大神們偏偏任性取名叫馬賽克!眾多吃瓜群眾不禁直呼內行!
由于能顯示圖片的特性,Mosaic迅速流行了起來。但是到這里,大家可能會發現,此時的霸主是Nexus,它是不能顯示圖片的,而Mosaic能顯示,這就叫html的開發陷入了兩難的境地。
正當html開發者抓耳撓腮的時候,體貼的Mosaic想到了一個辦法:這本質上就是一個身份的問題嘛,那我就在給你發請求的時候告訴你們我的身份,和Nexus區分開來不就行了?
這就是UserAgent的由來,它最初的作用只是向服務器表明自己的身份——Mosaic的UserAgent為:NCSA_Mosaic/2.0 (Windows 3.1)
NCSA_Mosaic代表自己是什么瀏覽器,2.0代表版本號,Windows 3.1表示自己可以在什么系統下運行。
這樣一來,html開發者該怎么開發還是怎么開發,只是如果UserAgent表明是Mosaic就發送帶圖片的網頁,如果不是,就發送不帶圖片的網頁。
但是,伊利諾伊的大神們到死也不會想到,就這么簡單的一個UserAgent,竟然被后輩們玩出了花。
看到Mozilla,大家是不是很眼熟?隨便打開一個瀏覽器,查看它的UserAgent,都會發現帶有Mozilla標記。是不是很奇怪,為什么不同公司的瀏覽器,不管是IE、谷歌、Safari等,都帶有Mozilla呢?聽我慢慢道來。
在Mosaic如日中天的時候,一頭初生怪獸偏偏不服,它為自己設立了一個偉大的目標:推翻Mosaic的霸主地位!
這頭初生怪獸就是后來大名鼎鼎的網景公司,他們發明了一款瀏覽器,希望能夠取代Mosaic!而不愧是初生怪獸,沒別的,就是頭鐵,大神們給他們的瀏覽器取名為:Mozilla。
什么意思呢? Mozilla由“Mosaic Killa”(Killa是俚語中Killer的拼法)變化而來,并且是怪獸Godzilla(哥斯拉)的諧音,即“Godzilla eat the Mosaic!”
這就是赤果果的挑釁啊!你看,互聯網的源頭就充斥著血腥!
Mozilla大聲喝問道:Mosaic你這老頭子怕不怕!Mosaic瑟瑟發抖(不知道是氣的,還是怕的)地看著這頭狂妄的小怪獸,勃然大怒(惱羞成怒)到:“給老子滾粗!”
于是網景礙于當時Mosaic的江湖地位,不得已“從心”的把名字改成了Netscape Navigator(網景航海家)。
但是“小怪獸”口服心不服,仍然偷偷地在自己的UserAgent后面寫上了Mozilla/1.0 (Win3.1)。
小怪獸還是有點本事的,NetScape最先支持html框架顯示,就是簡單的table布局,內外邊距之類,僅僅這點在體驗上就遠超Mosaic。
所以,最后Mozilla如愿”吃掉了”Mosaic,成為了霸主。
開發者為了區別這兩個瀏覽器,還是用的UserAgent。約定如果是UserAgent里含有“Mozilla”字樣,就發送支持框架的頁面,否則就發送不含框架的頁面。
瀏覽器作為萬維網的入口,從來都是戰略必爭之地,競爭自然無法避免。微軟率先使出了”不要臉“戰術”,仗著自己的操作系統地位,開發了一款強行和系統綁定的瀏覽器。
古語云:流氓不可怕,就怕流氓有文化!古人誠不欺我!
那么這個瀏覽器叫什么好呢?
吃瓜群眾:Mozilla killer?
微軟大神:滾蛋,能不能像我們一樣成熟一點?!
務實的微軟大神們取名可不搞這些花里胡哨的,直接取名叫IE,即Internet Explore,雖然沒有Mozilla這么霸氣,但是簡單易懂且易記啊。
要想和Mozilla競爭,IE肯定也是支持html框架的,但是開發者們才不管,開發者們只會給UserAgent帶有Mozilla的瀏覽器發送帶框架的頁面。
但是你以為這點小事就能難倒我大微軟,天真!
微軟眼咕嚕一轉,呵呵一笑:切,既然如此,那我易容成Mozilla不就行了?
于是,微軟給IE披上了一層怪獸皮,把自己的UserAgent改成了:Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)。
你看,我也是Mozilla,這樣你就可以把帶框架的頁面發給我了~
嘗到耍流氓甜頭的微軟一發不可收拾,利用自己操作系統的優勢,將易容后的IE強制和操作系統綁定:你就用我的系統免費贈送的IE瀏覽器,還要啥自行車?!
憑借不輸Mozilla的性能和流氓的手段,IE最終戰勝了Mozilla,但是從此IE也永久帶上了Mozilla的標記。
但是,怪獸不愧是怪獸,強大的怪獸怎么能被流氓輕易擊敗呢?!
曾經Mozilla的大神們卷土重來,他們使用瀏覽器排版引擎Gecko(壁虎)發明了另一款優秀的瀏覽器,它在插件拓展和開發調試領域做出的貢獻,絕對可以載入互聯網歷史。
這么跨時代的創造,叫什么好呢?眾所周知,Mozilla的大神們總是對怪獸情有獨鐘,既然我們從失敗中浴火重生,那么其名曰:Phoenix(鳳凰)!!
但是Phoenix(鳳凰)還沒起飛就遭遇了折翼,旁邊一家叫鳳凰科技的公司強烈抗議:魂淡,是我先叫Phoenix(鳳凰)的,你們侵權了!
大神們很無奈,沒辦法,那我們叫Firebird(火鳥),總行了吧?!雖然聽起來挺中二的,但是也不行。因為有一款數據庫也叫這個名字。
大神們抓狂,起個名字怎么這么難?!淚流滿面的大神們最終給這款劃時代的瀏覽器起名叫FireFox(火狐)。
FireFox(火狐)至今還是最常用的瀏覽器之一,可見其優秀程度竟恐怖如斯!
大神們為了告訴開發者們,我是如此的優秀,你們可以給我更好更炫酷的頁面了!
于是,FireFox(火狐)標志自己的UserAgent為:Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0。
雖然這個UserAgent看起來很長,但是信息還是比較清晰,表明了自己的身份是Moziila5.0和Firefox/1.0,支持的系統和使用的Gecko的引擎。
和之前一樣,開發者們只會給作為開創者的FireFox(火狐)發送更優質的html頁面。FireFox(火狐)憑借優秀的性能,發展非常迅速,雖然沒有打敗IE,但是也能和IE分庭抗禮。
而在IE和FireFox(火狐)互掐的時候,其實市場上還存在另外一個著名的操作系統Linux。Linux看著Window的IE瀏覽器非常眼紅,于是尋思著也開發一款基于Linux的瀏覽器。
大神就是大神,開發瀏覽器就是小菜一碟!成功以后,Linux大神們一樣不能免俗,要為自己的孩子起一個響亮且霸氣的名字。
前有Moziila(哥斯拉),后有IE(探索者),那我們…..嗯,就叫:Konqueror(Conqueror的變體,低調低調)征服者吧!(666666)。
但是,Konqueror使用的是KHTML排版引擎,失去了先發優勢。所以,Konqueror也遇到了和IE類似的問題:開發者們只認UserAgent里面帶有Gecko的瀏覽器,不帶就休想獲得帶有良好排版的頁面!
小Konqueror非常無奈,萬分糾結之下,做出了一個又騷又賤但是又特別萌的操作,把自己的UserAgent寫成:Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)。
就這樣,偉大的Konqueror為了獲取更優質的頁面,也不得不耍了點小心機。從此,(KHTML,like Gecko) 與IE的Mozilla一樣成了一道抹不去的印記。
發展到這,你以為就結束了嗎?天真!在互聯網這個狂熱的世界,只有你想不到,沒有你做不到!
腦洞大開的Opera覺得IE和Konqueror的做法真的太棒了,甚得吾心!那咱也不能示弱啊:既然有這么多可以選擇的UserAgent(馬甲),那我們是不是可以想變成誰就變成誰?!(Opera的大神們可能是百變小櫻的忠實粉絲)。
Opera直接在菜單提供了三個選擇項:
第一個是IE,第二個是火狐,第三個才是自己,芭芭拉小魔仙,你想變誰就變誰!
與此同時,在科技的貴圈里,怎么能少得了我大Apple?!蘋果公司依靠“自己的”WebKit,開發出Safari,并將UserAgent命名為:Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。
誒?!仔細一看,這不對啊,AppleWebKit不是蘋果公司自己的嗎,為啥還會帶有(KHTML, like Gecko)?!
蘋果邪魅一笑:呵呵,大驚小怪,因為我們的內核Webkit排版引擎的核心叫WebCore,而WebCore是KHTML衍生而來的。也就是說,WebCore是KHTML的兒子,子承父業,蘋果公司只能在UserAgent加上 (KHTML, like Gecko) 。
在越發混亂的瀏覽器貴圈里,谷歌也不甘寂寞,跳出來大聲宣布:我大谷歌也開發了一款瀏覽器,它叫Chrome!
而Chrome設定的UserAgent為:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13。
Safari一看:臥槽,從未見過如此厚顏無恥之徒!你怎么也在后面寫有Safari?
Chrome呵呵一笑,你懂的——原來Chrome瀏覽器的內核也是Webkit。
所以,最后讓我們來順一下:
至此,現在的瀏覽器,你隨便打開一個,查看他們的UserAgent,都會發現或多或少帶有這些印記。
大家現在應該明白瀏覽器中那長長的UserAgent是怎么來的了吧。
作者:Jarvan;公眾號:產品叨比叨
本文由 @Jarvan 原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
論您是SEO,營銷人員還是Web開發人員,通常都可能需要更改瀏覽器的用戶代理以測試其他內容。
例如,您正在運行特定于MAC-OS的活動。要確定您的廣告系列是否正常運行并且未針對Linux用戶,更改瀏覽器的用戶代理可以幫助您進行測試。
對于Web開發人員來說,更改用戶代理幾乎是日常工作,以測試網站在不同瀏覽器和設備上的行為。
用戶代理是HTTP請求標頭字符串,用于標識連接到服務器的瀏覽器,應用程序或操作系統。
瀏覽器不僅具有用戶代理,還具有機器人,搜尋器(例如搜索引擎Googlebot,Google AdSense等)。
在這里,我們將學習如何更改瀏覽器的用戶代理。
該過程稱為用戶代理欺騙。
是的,當瀏覽器或任何客戶端發送與他們不同的用戶代理HTTP標頭并對其進行偽造(稱為欺騙)時。
雖然該術語可能令人震驚,但這不是危險的活動,不會給您造成任何問題。(因此,您可以隨意欺騙用戶代理。)
由于Microsoft Edge 現在使用Chromium,因此Chrome和Edge的設置相同。
另外,您可以在Windows上使用CTR + Shift + I,在Mac 上使用Cmd + Opt + J。
單擊右上角的三個垂直點。
如果所需的用戶代理不存在,則可以在列表下方的字段中輸入所需的任何字符串。
例如,您可以在自定義字段中輸入以下內容(Googlebot的用戶代理)。
Mozilla / 5.0(兼容; Googlebot / 2.1; + http://www.google.com/bot.html)
當網頁顯示的內容與Googlebot和網站訪問者的內容不同時,這對于SEO專業人員識別網站上是否存在偽裝很有用。
另外,您也可以使用Chrome擴展程序User-Agent Switcher and Manager。
就是說,當瀏覽器實際上可以執行我想要的操作時,我盡量不要使用瀏覽器擴展。這是為了避免大量的加載項使瀏覽器過載。
此外,擴展程序有時會意外破壞網站。
盡管您可能認為所訪問的網站存在問題,但根本原因可能是您使用的附加組件之一。
轉到“ 高級”, 然后選中菜單欄中的“顯示開發”菜單。
您可以再次從預定義列表中選擇,也可以通過選擇“其他…”輸入自定義用戶代理字符串。
在Firefox中,可以通過瀏覽器的內置設置來更改用戶代理。
但是,它不像在Chrome或Safari上那樣易于使用。
使用瀏覽器的內置功能確實很痛苦。
相反,我們將使用名為User-Agent Switcher的Firefox附加組件。
安裝插件后,您將在右上角看到一個圖標。
您可以選擇預定義的用戶代理之一,也可以通過單擊下面的筆圖標輸入自定義用戶代理。
您可以使用的另一個擴展是User-Agent Switcher and Manager。
用戶代理很容易被欺騙,任何人都可以使用這些簡單的技巧對其進行更改。
此功能對于在各種設備上測試Web應用程序非常有用,尤其是當針對移動設備或平板電腦設備使用不同的HTML時。
一個人不需要擁有許多物理設備就可以進行測試。
此功能對SEO專業人員很有用,例如,識別與Google網站站長指南相抵觸的偽裝問題或對外觀有所不同(取決于設備)的網站進行審核。
過前面的文章我們知道,UserAgent(用戶代理)是HTTP請求的一部分,用于告訴服務器發起請求的客戶端類型和屬性等信息。同時,也了解了常見的UserAgent。
今天,我們來看一下一些常見的爬蟲UserAgent,包括百度、Google、必應等 UserAgent 信息。
搜索引擎:360搜索
360Spider
搜索引擎:DuckDuckGo
Mozilla/5.0 (compatible; DuckDuckBot/1.0; +http://duckduckgo.com)
搜索引擎:好搜
Soso spider/4.0(+http://help.soso.com/webspider.htm)
搜索引擎:必應
Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
搜索引擎:必應國際
Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 BingWeb/11.12.1.5 Mobile/15E148 Safari/604.1 BingPreview/1.0b
搜索引擎:搜狗
Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)
搜索引擎:有道
Mozilla/5.0 (compatible; YoudaoBot/1.0; http://www.youdao.com/help/webmaster/spider/; )
搜索引擎:百度
Mozilla/5.0 Baiduspider-render/2.0 (+http://www.baidu.com/search/spider.html)
搜索引擎:神馬
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SMX)
搜索引擎:谷歌
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
搜索引擎:雅虎
Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
爬蟲框架:Apache HttpClient (Java)
Apache-HttpClient/4.5.13 (Java/11.0.10)
爬蟲框架:Beautiful Soup
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
爬蟲框架:Colly (Go)
Mozilla/5.0 (compatible; colly; +https://github.com/gocolly/colly)
爬蟲框架:Go HTTP Client
Go-http-client/2.0
爬蟲框架:Jsoup (Java)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
爬蟲框架:OkHttp (Java)
okhttp/4.9.1
爬蟲框架:Python Requests
python-requests/2.26.0
爬蟲框架:Scrapyests
Scrapy/2.6.0 (+https://scrapy.org)
在編寫爬蟲時,合理使用UserAgent可以幫助爬蟲繞過一些簡單的反爬蟲機制。同理,在識別爬蟲時,也不能完全依賴UserAgent,因為UserAgent可以被偽造。在實際應用中,可以結合其他方法如IP地址、請求頻率等來識別和阻止爬蟲。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。