java網路爬蟲學習記錄(二)抓包分析

2021-07-23 09:46:49 字數 2992 閱讀 9215

1.1 按面向的物件分類

瀏覽器抓包工具和全域性抓包工具

瀏覽器抓包工具:

ie developer(自帶)

chrome developer(自帶)

firefox developer(自帶)

firefox firebug:只針對firefox

httpwatch: 只針對ie瀏覽器

firefox httpfox:只針對firefox

自帶抓包,簡單易用,但不利於複雜應用。

1.2 選擇方法

1、功能穩定和齊全(根據它就排除掉了瀏覽器自帶抓包工具)

2、熟悉習慣

跟個人相關,我一直習慣用httpwatch,主要是能滿足當前實際應用的需求。

在實際開發當中,一般選擇瀏覽器自帶+第三方抓包,即我用ie developer+httpwatch8.5版本配合來搞定問題。

1、web專案的開發測試,(比較簡單,不用第三方抓包工具亦可)

2、非爬蟲性質的抓包分析 (比較簡單,不用第三方抓包工具亦可)

3、爬蟲的抓包分析 (情況相對比較複雜,一般要採用瀏覽器自帶+第三方抓包)

1、主要以ie developer+httpwatch為工具,

簡單的特點:

1).內容基本在直接請求的url中。

2).沒有特定的許可權驗證。

3).沒有特別的js等內容動態解析。

複雜的特點:

1).內容的構成往往源於多個請求。

2). 資料的組織方式多樣,偶爾涉及到ajax請求和js的資料動態填充。

2、http協議小介

(1)http協議包括的method,主要為get,post,put,delete。

get代表是查,post代表是更新,put代表上傳,delete代表刪除。

後續在落實時,人們把這幾件事都歸在了get、post當中,

很少有相應去專門符合協議去傳送method request。

(2)http協議status code

1** : 代表的是伺服器已收到資訊,但還沒處理完,將繼續。

最原始的ajax請求中,以判斷status code來決定是否該次的ajax非同步請求完成,或狀態。

2** : 返回狀態,一般是代表成功終止,即正常的一次請求完成。

等於200,代表ok

3** : 請求的轉移。

301:永久轉移,會在響應頭中跟隨location這個key,

來標誌下次該跳轉的目標url位址。

302:臨時轉移,。。。

304:無更新,從快取中取資料。

4** : 客戶端錯誤。

400客戶端格式錯誤。401無許可權。403禁止訪問。

404:file not found,檔案找不到。

5** :伺服器錯誤。

500:伺服器端處理當中出現異常。

(3)http header引數

http header send部分

accept: 客戶端可接受的資料型別。

text/html,即html的文字

accept-encoding: 客戶端要求伺服器返回的資料編碼格式,

一般設為gzip,deflate的為多,

gzip壓縮,其演算法為deflate。肯定是無失真壓縮。

accept-language:要求的自然語言,注意語言和編碼的概念不同。

connection: 代表client與server的鏈結性,是keep-alive或是none

cookie :client與server之間的溝通狀態資訊。

host : client發過去請求後,由哪個位址來解析該請求。

if-modified-since :代表該網頁自哪個時間開始,沒有再改變過。

user-agent: 即ua,客戶端把os、browser type等封裝成ua傳送給伺服器端。

下邊為http header received部分

age: 代表該頁是從快取中取出後的多長時間。

cache_control:伺服器要求客戶端是否快取該網頁。

content-encoding:server給client的資料的編碼格式,往往為gzip。

content-length: server 給client端傳送資料的總位元組數,經常用於判斷是否接收結束。

content-type:返回資料的型別,一般為text/html,即純文字型別

(4)http cookie引數

cookie包括兩部分,一部分sent,一部分是receive。

要嚴格區分開,在爬蟲開發的過程中,構建cookies時尤為重要。

cookie中往往包括n多的key,要盡量找出其關鍵的key。

(5) etag和if-modified-since

都跟過期時間有關。很多**是不更新if-modified-since,

而是通過乙個hash值或是時間值來給etag,標誌該資源是否有過更新,從

而使資源的更新與時間無關,而與這個key有關。

(6) get和post的區別

引數傳遞方式不一樣:get較簡單,

post是不在位址列中顯示的,而且相應的生成對應掩碼的方式,較安全。

引數的傳遞渠道不同,get走的是http協議頭,往往被瀏覽器、os限制了長度,往往小於2kb。

post走的是http訊息體,長度不限制。

這是我用firefox抓到的一組request頭和response頭

抓包分析是爬蟲研發的最基礎和關鍵的步驟。

要足夠細心和耐心,開發時應採取循序漸進的步驟,並在每個關鍵環節留有日誌輸出,方便爬蟲問題的問題跟蹤與追根溯原。

Wireshark網路抓包 二 過濾器

圖 img 圖 img 1 捕獲單個ip位址 2 捕獲ip位址範圍 圖 img 3 捕獲廣播或多播位址 圖 img 4 捕獲mac位址 圖 img 5 捕獲所有埠號 圖 img 6 捕獲特定icmp資料 當網路 現效能或安全問題時,將會看到icmp 網際網路控制訊息協議 在這種情況下,使用者必須使用...

Python網路爬蟲學習(二)

十五.京東商品頁面的爬取 import requests r requests.get r.status code r.encoding r.text 1000 十六.亞馬遜商品頁面的爬取 import requests def main url try kv r requests.get url,...

網路爬蟲學習筆記(二) 例項

例項一,不需要修改頭部直接爬取 import requests url try r requests.get url r.raise for status print r.text 1000 except print 爬取失敗 例項二,有的 可能會檢測到頭部 user agent python re...