大話爬蟲之分析目標請求

內容提示

大話爬蟲之分析目標請求

協議是什麼?

人類世界中存在各種各樣的規則,約定,共識,它們存在的意義是為了方便人與人之間的溝通和交流,而在計算機或者說是互聯網的世界中,為了不同設備之間,不同網絡結構之間能夠互相通信,也約定好了一套規則,這些規則就是協議,也稱之為通信協議,也就是通信時所遵守的規則,只有雙方按照這個規則“說話”,對方才能理解或為之服務。

互聯網中存在很多協議,就好比人類世界中存在個漢語,英語。法語,不同的設備之間要採用不同的協議來進行交流。而這些協議也稱 OSI協議 ,這些協議共同構建出了計算機或通信系統間互聯的標準體系,人們把OSI分為七層。實際上這個七層是不存在的。沒有這七層的概念,只是人為的劃分而已。區分出來的目的只是讓你明白哪一層是幹什麼用的。自下而上分別是

  • 物理層
  • 數據鏈路層
  • 網絡層
  • 傳輸層
  • 會話層
  • 表示層
  • 應用層

為了更加有效的表示這7層協議,我們把圖老師請上來

大話爬蟲之分析目標請求

可能還是不明白,好,我們在表老師給請上來

大話爬蟲之分析目標請求

還不明白。好,我們再把例老師。請上來,額。。。例老師,說它有事。來不了、

為什麼來不了那,因為我在寫這篇文章時,我確實是把每一個層是幹嘛的。代表協議和設備都詳細的寫了一下,但是寫完之後我發現,篇幅太長了!,單單介紹這7層協議就差不多1000多字了,我知道你們一定也不喜歡讀。既然這樣,那我們就直接一點,作為一個爬蟲工程師,你需要掌握 傳輸層,表示層,和應用層,特別是應用層,因為作為程序的開發人員,無論是前端啊,還是後端或者 移動端啊,用的最多的就是應用層的東西。特別是Http協議,但是一些大廠的應用並不是這樣,我曾經嘗試反編譯過一個大廠的應用,但是發現裡面的通訊協議是看不到任何跟http相關的東西,好像是什麼JceStruct,目前我也還在研究中,等研究出結果後可以一起交流一下,不過對於web端的用的最多的http協議和websocket,那麼下面我們就重點來聊一下這個http

認識http協議

http協議,又名超文本傳輸協議,是用於從web服務器傳輸超文本到本地瀏覽器的傳送協議。我們平時看到各種www的網址啊,都是採用的http協議,http是在TCP連接基礎上所建立的

大話爬蟲之分析目標請求

既然Http通訊是在TCP連接的基礎上,那麼一個TCP連接又是如何建立的那,這就不得不提一個面試過程中經常問到的問題,請描述一下TCP的三次揮手和四次揮手,同樣,我們還是把圖老師請上來,

大話爬蟲之分析目標請求

嗯,說實話,你如果靠死記硬背來記憶 這個整個過程的話,一定會忘,還是得通過實踐觀察才能把整個過程都理解下來,怎麼觀察那,自己抓一次包,來分析一下整個TCP建立和關閉的過程,怎麼抓,後面會說到

HTTP1.0最早在網頁中使用是在1996年,主要就是為了將超文本標記語言(HTML)文檔從Web服務器傳送到客戶端的瀏覽器,但是到了 WEB2.0時代,頁面變得複雜,數據的格式也從單純的圖片和文字,走向了傳輸CSS,Javascript,文字圖片,視頻等不同格式的數據,HTTP1.0在每次請求一個數據時,都要經歷一整個TCP的建立過程,如果有100個請求,那麼這個網頁的響應速度可想而知,會變得如何的緩慢,所以HTTP1.1出現了,HTTP1.1是在1999年才開始廣泛應用於現在的各大瀏覽器網絡請求中,同時HTTP1.1也是當前使用最為廣泛的HTTP協議.比如下面這個

大話爬蟲之分析目標請求

當然這裡也會遇到一個面試常見的問題,http1.0和http1.1的區別記住以下這幾點

  • 加入host字段,用於標識主機
  • 默認開始長連接,減少了建立和關閉連接的消耗和延遲
  • 新增了請求很多方法PUT,PATCH,DELETE等

而至於http2.0,只用於https://網址相比http1.1又具有以下新特性

多路複用

即每一個request都是是用作連接共享機制的。一個request對應一個id,這樣一個連接上可以有多個request,每個連接的request可以隨機的混雜在一起,接收方可以根據request的 id將request再歸屬到各自不同的服務端請求裡面。

服務端推送

HTTP2.0也具有server push功能,以前都是服務器放在那裡,等待著客戶端去服務器尋找資源,2.0以後服務器可以主動的給客戶端發送消息了

頭部壓縮

無論是http1.0還是1.1其header中都會帶有大量的信息,而且每次都會重複發送,而http2.0使用encoder來減少需要傳輸的header的大小,通訊雙方各自cache一份header fields表,既避免了重複header的傳輸,又減小了需要傳輸的大小。

那麼一個標準的http協議由那些部分組成那,嗯,由4個部分組成

1.請求行,

2.請求頭

3.空行

4.消息主體

來。有請圖老師

大話爬蟲之分析目標請求

嗯,這樣看下起來,就清楚多了,至於請求頭裡面的字段是幹嘛的,篇幅所限就不一一介紹了,有興趣的同學自己瞭解一下,說下請求行的那麼GET

這個GET是Http協議最基礎的請求方法之一,

Http1.0規定了3個請求方法

  • GET
  • POST
  • HEAD

Http1.1又增加了幾個方法

  • OPTIONS,
  • PUT
  • DELETE
  • TRACE
  • CONNEC

最常見的就是GET和POST請求方法,那這倆個方法又有什麼區別那,標準回答哈,記住了,面試會問

  • GET在瀏覽器回退時是無害的,而POST會再次提交請求。
  • GET產生的URL地址可以被加入到書籤,而POST不可以。
  • GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。
  • GET請求只能進行url編碼,而POST支持多種編碼方式。
  • GET請求參數會被完整保留在瀏覽器歷史記錄裡,而POST中的參數不會被保留。
  • GET請求在URL中傳送的參數是有長度限制的,而POST麼有。
  • 對參數的數據類型,GET只接受ASCII字符,而POST沒有限制。
  • GET比POST更不安全,因為參數直接暴露在URL上,所以不能用來傳遞敏感信息。
  • GET參數通過URL傳遞,POST放在Request body中。
  • 大多數瀏覽器通常都會限制url長度在2K個字節,而大多數服務器最多處理64K大小的url。

剛剛說到http2.0只能用於https的請求中(其實也沒有那麼絕對),那麼這個https又是什麼鬼

https協議說明

剛剛上去那個解釋http構成的圖片大家也看到了,對於掌握抓包技能的人來說,http協議的內容的清晰可見的,哪怕使用的是POST請求,既然http的傳輸內容是可見的,那麼你輸入的支付密碼啊,登錄密碼啊,一些涉及到個人隱私的敏感信息啊,如果採用http來傳輸,那麼就等於暴露給了所有人,為了避免信息洩露,網景公司設計了SSL協議,SSL協議依靠證書來驗證服務器的身份,併為瀏覽器和服務器之間的通信加密,類比成生活中的實際例子就是,你想要在一個商家買東西,首先這個商家必須得有營業執照,然後這個商家的東西必須是包裝完好的,你才會去購買,而這個營銷執照就是對應的SSL證書,這個證書是要花錢的,而且價格可不便宜,就是你得從一些有話語權的機構中買這個證書,他們認為你這個網站的服務器是可靠的,可信任的,並且你花了錢的,那麼你才能得到這個證書,當然也有免費證書,有了這個證書,把它放到服務器上,當別人訪問你的服務器時,他客戶端的瀏覽器就不會給出不安全的信息提醒

大話爬蟲之分析目標請求

而下面這個圖片是採用了https的請求

大話爬蟲之分析目標請求

篇幅所限,具體的https加密過程就不詳細介紹了,有興趣的同學自己瞭解一下

SSL和TLS的區別

一句話就可以概括,TLS是更為安全的升級版的SSL,是SSL標準化的產物,提供更高的安全性。

寫到這裡已經3000多字了,根據這個篇幅來看,具體介紹抓包的方法得放到下一節中了,本文所提到的內容有些多,不過不用擔心,哪有什麼大師啊,都是時間堆出來的,堅持一下,慢慢來,你會得到不一樣的結果的,那咱們今天就到這,下回見

相關推薦

推薦中...