VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
當前位置:
魔兽世界wow > 編程開發 > Python >
  • python基礎教程之python網絡爬蟲《Http和Https協議》

  • 2019-05-27 21:29 來源:未知

魔兽世界wow www.geyjm.icu 一.HTTP協議

  1.概念:

    Http協議就是服務器(Server)和客戶端(Client)之間進行數據交互(相互傳輸數據)的一種形式。

之間形成的特殊行話(黑話:(土匪)天王蓋地虎,(我)寶塔鎮河妖)稱為協議。

  2.Http工作原理:

    Http協議工作于客戶端-服務端架構上。瀏覽器作為Http客戶端通過URl 向Http服務器(web服務器)發送所有請求。Web服務器根據接收到的請求后,向客戶端發送相應信息。

  3.Http四點注意事項:

    -Http允許傳輸任意類型的數據對象。正在傳輸的類型油Content-Type加以標記。

    -Http是無連接的:無連接的含義是限制每次連接只處理一個請求。服務器處理完成客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。

    -Http是無狀態的:無狀態是指對處理事務沒有記憶功能,缺少狀態意味著如果處理以前處理過的信息必須要重新傳輸,導致每次連接傳送的數據量增大。另一方面在服務器不需要先前信息時他的應答比較快。

    - Http是媒體獨立的:這意味著,只要客戶端和服務器知道如何處理的數據內容,任何類型的數據都可以通過HTTP發送??突Ф艘約胺衿髦付ㄊ褂檬屎系腗IME-type內容類型。

  4.Http之request

    客戶端發送一個HTTP請求到服務器的請求消息包括以下組成部分:

  

    報文頭:常被叫做請求頭,請求頭中存儲的是該請求的一些主要說明(自我介紹)。服務器據此獲取客戶端的信息?! ?/p>

    常見的請求頭:

      accept:瀏覽器通過這個頭告訴服務器,它所支持的數據類型

      Accept-Charset:瀏覽器通過這個頭告訴服務器,它所支持哪種字符集

      Accept-Encoding:瀏覽器通過這個頭告訴服務器,支持的壓縮格式
      Accept-Language:瀏覽器通過這個頭告訴服務器,它的語言環境
      Host:瀏覽器通過這個頭告訴服務器,想訪問哪臺主機

      User-Agent:請求載體的身份標識

         Connection:瀏覽器通過這個頭告訴服務器,請求完后是斷開鏈接還是何持鏈接

     報文體:常被叫做請求體,請求體中存儲的是將要傳輸/發送給服務器的數據信息。

   4.Http之response

    服務器回傳一個HTTP響應到客戶端的響應消息包括以下組成部分:

   

 

     

  狀態碼:以“清晰明確”的語言告訴客戶端本次請求的處理結果。

  HTTP的響應狀態碼由5段組成: 

    1xx 消息,一般是告訴客戶端,請求已經收到了,正在處理,別急...

    2xx 處理成功,一般表示:請求收悉、我明白你要的、請求已受理、已經處理完成等信息.

    3xx 重定向到其它地方。它讓客戶端再發起一個請求以完成整個處理。

    4xx 處理發生錯誤,責任在客戶端,如客戶端的請求一個不存在的資源,客戶端未被授權,禁止訪問等。

    5xx 處理發生錯誤,責任在服務端,如服務端拋出異常,路由出錯,HTTP版本不支持等。

    響應頭:響應的詳情展示

        常見的相應頭信息:

            Location: 服務器通過這個頭,來告訴瀏覽器跳到哪里
            Server:服務器通過這個頭,告訴瀏覽器服務器的型號
            Content-Encoding:服務器通過這個頭,告訴瀏覽器,數據的壓縮格式
            Content-Length: 服務器通過這個頭,告訴瀏覽器回送數據的長度
            Content-Language: 服務器通過這個頭,告訴瀏覽器語言環境
            Content-Type:服務器通過這個頭,告訴瀏覽器回送數據的類型
            Refresh:服務器通過這個頭,告訴瀏覽器定時刷新
            Content-Disposition: 服務器通過這個頭,告訴瀏覽器以下載方式打數據
            Transfer-Encoding:服務器通過這個頭,告訴瀏覽器數據是以分塊方式回送的
            Expires: -1 控制瀏覽器不要緩存
            Cache-Control: no-cache 
            Pragma: no-cache

    相應體:根據客戶端指定的請求信息,發送給客戶端的指定數據

 二.Https協議:

  1. 概念:加密安全版的Http協議。

      

  2. Https采用的加密技術:

    2.1 SSL加密技術(對稱密鑰加密)

      SSL采用的加密技術叫做“共享密鑰加密”,也叫作“對稱密鑰加密”,這種加密方法是這樣的,比如客戶端向服務器發送一條信息,首先客戶端會采用已知的算法對信息進行加密,比如MD5或者Base64加密,接收端對加密的信息進行解密的時候需要用到密鑰,中間會傳遞密鑰,(加密和解密的密鑰是同一個),密鑰在傳輸中間是被加密的。這種方式看起來安全,但是仍有潛在的危險,一旦被竊聽,或者信息被挾持,就有可能破解密鑰,而破解其中的信息。因此“共享密鑰加密”這種方式存在安全隱患:

            

      

     2.2 非對稱密鑰加密技術

        “非對稱加密”使用的時候有兩把鎖,一把叫做“私有密鑰”,一把是“公開密鑰”,使用非對象加密的加密方式的時候,服務器首先告訴客戶端按照自己給定的公開密鑰進行加密處理,客戶端按照公開密鑰加密以后,服務器接受到信息再通過自己的私有密鑰進行解密,這樣做的好處就是解密的鑰匙根本就不會進行傳輸,因此也就避免了被挾持的風險。就算公開密鑰被竊聽者拿到了,它也很難進行解密,因為解密過程是對離散對數求值,這可不是輕而易舉就能做到的事。以下是非對稱加密的原理圖:

 

         

      但是非對稱秘鑰加密技術也存在如下缺點:

        第一個是:如何保證接收端向發送端發出公開秘鑰的時候,發送端確保收到的是預先要發送的,而不會被挾持。只要是發送密鑰,就有可能有被挾持的風險。

        第二個是:非對稱加密的方式效率比較低,它處理起來更為復雜,通信過程中使用就有一定的效率問題而影響通信速度

     2.3 Http證書機制

      

 在上面我們講了非對稱加密的缺點,其中第一個就是公鑰很可能存在被挾持的情況,無法保證客戶端收到的公開密鑰就是服務器發行的公開密鑰。此時就引出了公開密鑰證書機制。數字證書認證機構是客戶端與服務器都可信賴的第三方機構。證書的具體傳播過程如下:

      1:服務器的開發者攜帶公開密鑰,向數字證書認證機構提出公開密鑰的申請,數字證書認證機構在認清申請者的身份,審核通過以后,會對開發者申請的公開密鑰做數字簽名,然后分配這個已簽名的公開密鑰,并將密鑰放在證書里面,綁定在一起

                

 

 

   

       2:服務器將這份數字證書發送給客戶端,因為客戶端也認可證書機構,客戶端可以通過數字證書中的數字簽名來驗證公鑰的真偽,來確保服務器傳過來的公開密鑰是真實的。一般情況下,證書的數字簽名是很難被偽造的,這取決于認證機構的公信力。一旦確認信息無誤之后,客戶端就會通過公鑰對報文進行加密發送,服務器接收到以后用自己的私鑰進行解密。

 

 

備注:本文參考:https://www.cnblogs.com/bobo-zhang/p/9645715.html

相關教程