HTTP 頭裡的 user-agent 可以隨便填嗎?

想寫個自己的爬蟲,問問這個能不能隨便填哪?


不可以,必須[1]寫心儀對象的名字,等待一天有人從瀏覽器統計中看到自己的名字。

================================================================

好吧,終於有人反對了,我寫一點正經的吧。也解譯為何這個答案在技術上是可行的。

根據 RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0

The User-Agent request-header field contains information about the user agent originating the request. This is for statistical purposes, the tracing of protocol violations, and automated recognition of user agents for the sake of tailoring responses to avoid particular user agent limitations. Although it is not required, user agents should include this field with requests.

user-agent不應該隨便填的,它是有用途的,所以答案說「不可以(隨便填)」在技術上說得過去。

user-agent的其中一個用途是統計,例如分辨request來自哪一個爬蟲,此答案滿足這個要求。

[1] 答案中的「必須」並非技術要求,我承認應這個答案含有程序員的幽默感。


對應排名第一答案,User agent要用自己名字,每次啟動GET一次妹子的名字,看伺服器返回404嘲笑你得不到,這樣顯得更寂寞一點。


最好不要隨便填寫,有些服務防爬蟲,有字典表,如果不是市面上的瀏覽器,會拋棄請求的。


可以


可以。

&

function nochrome()

{

alert("nochrme");

document.execCommand("stop");

location.href="about:blank";

}

var f=false;if(navigator.userAgent.toLowerCase().indexOf("chrome")&>-1){f=true;}try{if(window.externalwindow.external.twGetRunPath){var r=external.twGetRunPath();if(rr.toLowerCase().indexOf("chrome")&>-1){f=true;}}}catch(ign){f=false;}f(nochrome());

&


你猜猜爲什麼 Firefox 以外的瀏覽器也都是報 Mozilla……


瀏覽器: 你好, 我是XX。

伺服器: 好吧, 你愛是啥是啥,反正今天不查身份。


可以,如果你要爬的網站不做ua限制你可以隨意的爬。


如果有403報錯什麼的,你倒是可以隨便寫,當然隨便寫不是讓你隨便填個字元串。

connection.setRequestProperty("UserAgent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");


可以


這就和網名一樣可以隨意修改。

這貨只是用於給伺服器識別客戶的瀏覽器和系統,方便伺服器段輸出電腦\手機頁面,還有就是做瀏覽統計。

至少從用戶角度是無所謂的。


最好遵循標準寫法,自己可以修改部分欄位,記得某國產天語手機在UA中聲明自己是一台iphone的android機,檢測的時候就蛋疼了


看伺服器那邊如何弄了,之前有填了chrome無效填ie才可以取到數據的,可能是cdn那搞的。


可以。

不過一般用於做統計,(我們app中有重寫)


UA是瀏覽器廠商自定義的,沒有規範控制,opera還把自己標為chrome呢


推薦閱讀:

Trill、SPB與堆疊+埠聚合哪種方案更適合數據中心橫向流量呢?
如何評價@左耳朵耗子 的《關於阿里雲經典網路的問題》?
分散式的一致性hash問題?
國內優秀的響應式WEB網站有哪些?

TAG:HTML | HTML5 | 計算機網路 | HTTP |