日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从http协议看百度360大战

發布時間:2023/12/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从http协议看百度360大战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前段時間甚囂塵上的3B大戰,慢慢退出人們的視線,但是兩家公司的戰爭才剛剛開始,一家是資金技術實力雄厚的搜索引擎巨頭,一家是攜客戶端之威,行事詭譎的數字公司。誰會取得最后的勝利?我們在看熱鬧之外,也來學習一下云端和客戶端是如何通過HTTP協議過招的。

360以客戶端見長,360安全衛士,以安全為名,占據著用戶電腦的最高權限,用戶通過360瀏覽器上網,用戶的所有上網行為,360完全知曉。而百度作為一家網站,在用戶電腦上只是一些文本文件,所能做的實在不多,360占據天時地利。百度所選擇的策略是,拒絕360spider的抓取,提醒通過360瀏覽器,和360搜索過來的用戶,將百度設置為主頁等很被動的措施。

這里百度首先需要解決下面幾個問題:

1.如何判斷360spider對百度網站的抓取

2.怎么判斷用戶是通過360瀏覽器訪問過來的

3.怎么判斷用戶是通過360搜索過來的

先來看看http協議

http協議是萬維網(worldwide web)交換信息的基礎,工作在TCP/IP協議體系中的TCP協議上。

HTTP協議的主要特點可概括如下:

1、支持客戶/服務器模式。

2、 簡單快速: HTTP協議簡單,使得HTTP服務器的程序規模小,通信速度很快。

3、靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。

4、無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。

5、無狀態:HTTP協議是無狀態協議。無狀態是指協議對于事務處理沒有記憶能力。



HTTP請求淺析

???????? http請求由三部分組成,分別是:請求行、請求報頭,消息正文(可選)組成,由瀏覽器進行拼裝,不同瀏覽器行為略有差異。

我們使用firebug來看看,當我們在瀏覽器中輸入www.baidu.com時,瀏覽器到底干了什么?

首次訪問(訪問之前清除了cookie):


第二次訪問:


第二次訪問與第一次訪問的區別是多了Cookie:一行。我們看看第二次訪問的請求頭:

GET / HTTP/1.1 Host: www.baidu.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive Cookie: BAIDUID=CFA7693D654C7B6963AE9E59412B841A:FG=1

?

第一行為請求行

請求行以一個方法符號開頭,以空格分開,后面跟著請求的URI和協議的版本,格式如下:Method Request-URI HTTP-Version CRLF 正對上面例子中的 GET / HTTP/1.1

第二行開始為請求報頭:

一個空行表示請求報頭結束

Host: www.baidu.com? 該報頭域是必須的,指明域名地址

User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0)Gecko/20100101 Firefox/15.0.1 該報頭域將瀏覽器、操作系統信息告訴服務器

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8該報頭域用于指定客戶端接受哪些類型的信息 Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 報頭域用于指定客戶端接受哪些語言的信息,服務器根據

Accept-Encoding: gzip, deflate 用于指定可接受的內容編碼。deflate編碼是由RFC 1950 [31]定義的"zlib"編碼格式與RFC 1951 [29]里描述的"deflate"壓縮

機制的組合的產物。 Connection: keep-alive Keep-Alive模式(又稱持久連接、連接重用)時,Keep-Alive功能使客戶端到服 務器端的連接持續有效,當出現對服務器的后繼請求時,Keep-Alive功能避免了建立或者重新建立連接。 Cookie: BAIDUID=CFA7693D654C7B6963AE9E59412B841A:FG=1 cookie是網頁在本地留下的小片段信息,記錄登陸用戶ID等信息。

?我們看user-Agent報頭域,指明了瀏覽器和操作系統等信息,user-agent,用戶代理,顧名思義,瀏覽器和spider作為用戶的代理向網站服務器請求頁面,所以在這個報頭域中指明了自己的身份,不同的瀏覽器或者搜索引擎的spider都會有自己的標志,百度可以根據這個值,拒絕360蜘蛛的抓取和區別對待來自360瀏覽器的訪問。當然360spider會千方百計的隱藏自己的身份,那么百度就需要靠另外的辦法來進行甄別了,spider訪問會有一些與正常訪問不一樣的行為,這里不細表。



從360搜索里面進入百度主頁,與直接進入百度主頁展示是不一樣的,百度是怎么知道用戶是從360進入的呢?

我們從360搜索里面進入百度主頁,看請求信息,發現了端倪:

GET / HTTP/1.1 Host: www.baidu.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive Referer: http://www.so.com/s?q=%E7%99%BE%E5%BA%A6&pq=%E8%B4%B4%E5%90%A7&_xv=331&_re=0&src=srp Cookie: BAIDUID=CFA7693D654C7B6963AE9E59412B841A:FG=1

區別就在這個Referer報頭域上,referer報頭域,記載用戶是從哪個URL出發訪問當前請求的頁面,這個是由瀏覽器自動填寫的。百度可以在web服務器層面針對referer報頭域不同的值進行判斷處理,給來自360搜索的頁面請求,加上一些提醒。

HTTP響應

響應也分為三個部分狀態行、響應報頭、響應正文

HTTP/1.1 200 OK Date: Sun, 07 Oct 2012 17:47:42 GMT Server: BWS/1.0 Content-Length: 5027 Content-Type: text/html;charset=gbk Cache-Control: private Expires: Sun, 07 Oct 2012 17:47:42 GMT Content-Encoding: gzip Connection: Keep-Alive

?

第一行為狀態行:

狀態行格式如下:HTTP-VersionStatus-Code Reason-Phrase CRLF

HTTP/1.1 200 OK?? http協議版本 狀態碼200? 狀態碼含義OK 第二行開始為響應報頭: Date: Sun, 07 Oct 2012 17:47:42 GMT 響應時間 Server: BWS/1.0???? 服務器信息? BWS為百度自己開發或定制的,安全性很高 Content-Length: 5027??? 響應正文長度 Content-Type: text/html;charset=gbk? 正文類型 Cache-Control: private用于指定緩存指令,緩存指令是單向的(響應中出現的緩存指令在請求中未必會出現),且是獨立的(一個消息的緩存指令不會影響另一個消息處理的緩存機制) Expires: Sun, 07 Oct 2012 17:47:42 GMT? 實體報頭域給出響應過期的日期和時間。與date時間一致,說明是不需要緩存的。 Content-Encoding: gzip? 編碼類型,gzip壓縮類型,可提高響應速度 Connection: Keep-Alive? 保持連接模式

?

以空行隔開的第三部分為響應正文:

也就是網頁信息

?

參考:

http://my.oschina.net/u/260739/blog/66464

http://www.phpben.com/?post=77

http://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE




總結

以上是生活随笔為你收集整理的从http协议看百度360大战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。