1. 程式人生 > >什麼是http和https協議

什麼是http和https協議

HTTP協議:全稱是HyperText Transfer Protocol,中文意思是超文字傳輸協議,是一種釋出和接收HTML頁面的方法。伺服器埠號是80埠。

HTTPS協議:是HTTP協議的加密版本,在HTTP下加入了SSL層。伺服器埠號是443埠。

在瀏覽器中傳送一個http請求的過程:

  1. 當用戶在瀏覽器的位址列中輸入一個URL並按回車鍵之後,瀏覽器會向HTTP伺服器傳送HTTP請求。HTTP請求主要分為GetPost兩種方法。
  2. 當我們在瀏覽器輸入URL http://www.baidu.com 的時候,瀏覽器傳送一個Request請求去獲取 
    http://www.baidu.com
     的html檔案,伺服器把Response檔案物件傳送回給瀏覽器。
  3. 瀏覽器分析Response中的 HTML,發現其中引用了很多其他檔案,比如Images檔案,CSS檔案,JS檔案。 瀏覽器會自動再次傳送Request去獲取圖片,CSS檔案,或者JS檔案。
  4. 當所有的檔案都下載成功後,網頁會根據HTML語法結構,完整的顯示出來了。

url詳解:

URLUniform Resource Locator的簡寫,統一資源定位符。一個URL由以下幾部分組成:

scheme://host:port/path/?query-string=xxx#anchor
  • scheme:代表的是訪問的協議,一般為http或者https以及ftp等。
  • host:主機名,域名,比如www.baidu.com
  • port:埠號。當你訪問一個網站的時候,瀏覽器預設使用80埠。
  • path:查詢路徑。比如:www.jianshu.com/trending/now,後面的trending/now就是path
  • query-string:查詢字串,比如:www.baidu.com/s?wd=python,後面的wd=python就是查詢字串。
  • anchor:錨點,後臺一般不用管,前端用來做頁面定位的。

在瀏覽器中請求一個url,瀏覽器會對這個url進行一個編碼。除英文字母,數字和部分符號外,其他的全部使用百分號+十六進位制碼值進行編碼。

常用的請求方法:

Http協議中,定義了八種請求方法。這裡介紹兩種常用的請求方法,分別是get請求和post請求。

  1. get請求:一般情況下,只從伺服器獲取資料下來,並不會對伺服器資源產生任何影響的時候會使用get請求。
  2. post請求:向伺服器傳送資料(登入)、上傳檔案等,會對伺服器資源產生影響的時候會使用post請求。 以上是在網站開發中常用的兩種方法。並且一般情況下都會遵循使用的原則。但是有的網站和伺服器為了做反爬蟲機制,也經常會不按常理出牌,有可能一個應該使用get方法的請求就一定要改成post請求,這個要視情況而定。

請求頭常見引數:

http協議中,向伺服器傳送一個請求,資料分為三部分,第一個是把資料放在url中,第二個是把資料放在body中(在post請求中),第三個就是把資料放在head中。這裡介紹在網路爬蟲中經常會用到的一些請求頭引數:

  1. User-Agent:瀏覽器名稱。這個在網路爬蟲中經常會被使用到。請求一個網頁的時候,伺服器通過這個引數就可以知道這個請求是由哪種瀏覽器傳送的。如果我們是通過爬蟲傳送請求,那麼我們的User-Agent就是Python,這對於那些有反爬蟲機制的網站來說,可以輕易的判斷你這個請求是爬蟲。因此我們要經常設定這個值為一些瀏覽器的值,來偽裝我們的爬蟲。
  2. Referer:表明當前這個請求是從哪個url過來的。這個一般也可以用來做反爬蟲技術。如果不是從指定頁面過來的,那麼就不做相關的響應。
  3. Cookiehttp協議是無狀態的。也就是同一個人傳送了兩次請求,伺服器沒有能力知道這兩個請求是否來自同一個人。因此這時候就用cookie來做標識。一般如果想要做登入後才能訪問的網站,那麼就需要傳送cookie資訊了。

常見響應狀態碼:

  1. 200:請求正常,伺服器正常的返回資料。
  2. 301:永久重定向。比如在訪問www.jingdong.com的時候會重定向到www.jd.com
  3. 302:臨時重定向。比如在訪問一個需要登入的頁面的時候,而此時沒有登入,那麼就會重定向到登入頁面。
  4. 400:請求的url在伺服器上找不到。換句話說就是請求url錯誤。
  5. 403:伺服器拒絕訪問,許可權不夠。
  6. 500:伺服器內部錯誤。可能是伺服器出現bug了。

Chrome抓包工具:

Chrome瀏覽器是一個非常親近開發者的瀏覽器。可以方便的檢視網路請求以及傳送的引數。對著網頁右鍵->檢查。然後就可以開啟開發者選項。以下用圖片來說明。

更多Python實戰原始碼請關注 朝南而行 公眾號

朝南而行

上一篇:什麼是網路爬蟲
下一篇:網路請求之urllib網路請求庫