Python爬蟲第一個難關:HTTPS請求與響應
1. HTTP和HTTPS
HTTP: 一種釋出和接受HTML頁面方法,埠號為80
HTTPS: HTTP的安全版,在HTTP上加入了SSL層,埠號為443
SSL: 用於Web的安全傳輸協議,在傳輸層對網路連線進行加密,保障在Internet上資料傳輸的安全
網路爬蟲可以理解為模擬瀏覽器操作的過程
瀏覽器的主要功能是向伺服器傳送請求,在瀏覽器視窗展示您選擇的網路資源,HTTP是一套計算機通過網路進行通訊的規則
1.1. HTTP的請求和響應流程:開啟一個網頁的過程
主要流程
1.2. URL
基本格式: scheme://host[:port]/path/.../[?query-string][#anchor]
scheme:協議, http,https
host: 伺服器的IP地址或者域名
port#: 伺服器的埠(如果是協議預設埠,預設埠為80)
path : 訪問資源的路徑
query-string : 引數,傳送給http伺服器的資料
anchor : 錨(跳轉到網頁的而制定錨點位置)
2. 客戶端HTTP請求
URL只是標識資源的位置,而HTTP是用來提交和獲取資源. 客戶端傳送一個HTTP請求到伺服器請求訊息,包括如下格式
請求行、請求頭部、空行、請求資料
請求行
由請求方法欄位、URL欄位和HTTP協議版本欄位組成,通過空格分隔,例如:GET /index.html HTTP/1.1
HTTP協議的請求方法主要有GET,POST方法
1) GET:從伺服器獲取資料
定義: 最常見的一種請求方式,當客戶端要從伺服器中讀取文件時,當點選網頁上的連結或者通過在瀏覽器的位址列輸入網址來瀏覽網頁的,使用的都是GET方式
GET請求引數顯示,都顯示在瀏覽器網址上,HTTP伺服器根據該請求所包含的URL引數來闡述響應內容,即GET請求的引數是URL的一部分:
"Get" 請求的引數 是URL的一部分
2) POST:向伺服器傳送資料
POST請求引數在請求體中,訊息長度沒有限制且以隱式的方式進行傳送,通過用來向HTTP伺服器提交資料(上傳檔案等),請求的引數放在Content-Type訊息頭中,指明該訊息的媒體型別和編碼
"POST"請求的引數 不在URL中,而在請求體中。
3. Fiddler抓包工具的使用
Fiddler是一款強大Web除錯工具,它能記錄所有客戶端和伺服器的HTTP請求。 Fiddler啟動的時候,預設IE的代理設為了127.0.0.1:8888,而其他瀏覽器是需要手動設定。
3.1. 工作原理
Fiddler 是以代理web伺服器的形式工作的,它使用代理地址:127.0.0.1,埠:8888
3.2. Fiddler抓取HTTPS設定
首先需要在官網上下載Fiddler安裝程式:網頁連結
啟動Fiddler,開啟選單欄中的 Tools > Telerik Fiddler Options,開啟“Fiddler Options”對話方塊。
對Fidder進行設定
開啟工具欄->Tools->Fiddler Options->HTTPS,
選中Capture HTTPS CONNECTs (捕捉HTTPS連線),
選中Decrypt HTTPS traffic(解密HTTPS通訊)
另外我們要用Fiddler獲取本機所有程序的HTTPS請求,所以中間的下拉選單中選中...from all processes (從所有程序)
選中下方Ignore server certificate errors(忽略伺服器證書錯誤)
Fiddler 主選單 Tools -> Fiddler Options…-> Connections
重啟Fidder
3.3. Fiddler抓取Chorme的對話
使用chorme的SwitchOmega外掛 + 搭配使用SwitchOmega和Fiddler抓取資料
3.4. Fidder介面介紹
設定好後,本機HTTP通訊都會經過127.0.0.1:8888代理,也就會被Fiddler攔截到。
請求 (Request) 部分詳解
Headers —— 顯示客戶端傳送到伺服器的 HTTP 請求的 header,顯示為一個分級檢視,包含了 Web 客戶端資訊、Cookie、傳輸狀態等。
Textview —— 顯示 POST 請求的 body 部分為文字。
WebForms —— 顯示請求的 GET 引數 和 POST body 內容。
HexView —— 用十六進位制資料顯示請求。
Auth —— 顯示響應 header 中的 Proxy-Authorization(代理身份驗證) 和 Authorization(授權) 資訊.
Raw —— 將整個請求顯示為純文字。
JSON - 顯示JSON格式檔案。
XML —— 如果請求的 body 是 XML 格式,就是用分級的 XML 樹來顯示它。
響應 (Response) 部分詳解
Transformer —— 顯示響應的編碼資訊。
Headers —— 用分級檢視顯示響應的 header。
TextView —— 使用文字顯示相應的 body。
ImageVies —— 如果請求是圖片資源,顯示響應的圖片。
HexView —— 用十六進位制資料顯示響應。
WebView —— 響應在 Web 瀏覽器中的預覽效果。
Auth —— 顯示響應 header 中的 Proxy-Authorization(代理身份驗證) 和 Authorization(授權) 資訊。
Caching —— 顯示此請求的快取資訊。
Privacy —— 顯示此請求的私密 (P3P) 資訊。
Raw —— 將整個響應顯示為純文字。
JSON - 顯示JSON格式檔案。
XML —— 如果響應的 body 是 XML 格式,就是用分級的 XML 樹來顯示它 。
3.5. 例項:捕捉訪問百度時候的請求和響應
請求頭(www.baidu.com)
響應的內容(www.baidu.com)
這跟我們右擊遊覽器檢視原始碼出來的程式碼是一摸一樣的
4. 其他內容
4.1 Cookie和Session
Cookie: 通過客戶端記錄的資訊確定使用者的身份
Session: 通過伺服器記錄的資訊確定使用者的身份