A. 四大網路抓包神器,總有一款適合你~
無論是開發還是測試,在工作中經常會遇到需要抓包的時候。本篇文章 主要介紹如何在各個平台下,高效的抓包。
目前的抓包軟體總體可以分為兩類:
一種是設置代理抓取http包,比如Charles、mitmproxy這些軟體。
另一種是直接抓取經過網卡的所有協議包,其中最出名就是大名鼎鼎的wireshark以及linux自帶的抓包軟體tcpmp。
下面重點介紹一下這四個抓包工具的特點以及使用。
wireshark想必大多數程序員都不會陌生。wireshark在各個平台都可以安裝使用,它 可以抓取經過指定網卡的所有協議。 wireshark雖然很強大,但是對初學者其實不是很友好。
這也正是由於它太強大,它可以抓取所有包,所以初學者在使用時面對茫茫數據流不知所措。初學者需要認真的去學習怎麼過濾得到自己感興趣的包,但是如果不熟悉wireshark的過濾語法,要過濾數據包將舉步維艱。
過濾語法簡單介紹
wireshark的過濾語法總結起來其實也很簡單,就是 以協議開頭,後面可以跟著協議的屬性,然後加上一些判斷符號, 比如contains、==、>、<等等。比如只想展示http的協議內容,則直接在過濾器輸入框中輸入http即可。
如下圖:
比如我 只想看http協議的請求頭中uri包含』/api』的協議,就可以這么寫:
如果想通過目標ip或者來源ip來過濾包,就不可以以http協議為前綴了,因為這些是ip協議的相關屬性。 通過目標ip來過濾可以這么寫:
上面表示目標機器的ip是61.135.217.100並且協議是http的包。
wireshark支持很多種協議,我們可以通過右上角的expression來打開搜索支持的協議,還可以找出協議支持的屬性,然後填入期待的值,軟體會自動為我們構建過濾語句。
優點:
功能強大,可以抓取所有協議的包
抓到的包容易分析
缺點:
由於線上伺服器沒有GUI,只有命令行,因此無法在線上伺服器使用
無法分析https數據包,由於wireshark是在鏈路層獲取的數據包信息,所以獲取到的https包是加密後的數據,因此無法分析包內容。當然,我們可以對https數據包進行解密, 但是操作具有一定的復雜度,可能要消耗很多時間。
tcpmp是linux上自帶的一個抓包軟體(mac也有),功能強大,也可以抓取經過指定網卡的所有協議包。
由於是命令行工具,tcpmp抓取到的包不易於分析,一個常見的做法是將tcpmp抓到的包輸出到某個文件,然後將文件拷貝下來用wireshark分析。
一些簡單的過濾參數:
抓包內容輸出到文件:
之後我們可以把test.cap直接用wireshark打開,就可以很直觀的分析包了。
用tcpmp輸出cap文件包:
tcpmp-r test.cap
Charles是一款http抓包工具,它是通過代理來實現的抓包。也就是我們在訪問網頁時需要配置代理,將代理指向Charles監聽的埠,之後我們的http請求都會發向Charles的埠,之後Charles會幫我們轉發並記錄協議內容。
Charles的使用非常簡單,配置好代理後,Charles就開始抓包了。
我們可以直接通過Charles的GUi查看包的內容:
上圖中的unknown表示https加密後的數據,所以看到不協議的具體內容。我們可以通過安裝Charles的證書,讓Charles也可以查看https協議的具體內容。
優點 :
使用簡單,只需配置一下代理地址就可以
要抓取https協議的配置也很簡單,只要安裝下charles的證書就可以了
mitmproxy是python寫的一款http抓包工具,雖然只支持http抓包,但是它的特性非常強大,它不僅可以抓包,還可以對請求進行攔截、重現等操作。和Charles一樣,它的原理也是基於代理,使用的時候需要設置代理指向它。
mitmproxy是命令行工具,但是也自帶了mitmweb工具,可以讓用戶在網頁上操作。另外,mitmproxy還支持用戶自行編寫插件,可以編寫腳本對請求進行處理,然後把修改後的請求發出去。
1、安裝
首先需要在機器安裝python3以及pip3.之後通過pip3安裝
pip3 install mitmproxy
如果安裝mitmproxy過程中報錯MoleNotFoundError: No mole named '_ssl',就需要安裝一下OpenSSL,然後再重新編譯安裝一下python3。
安裝好openSSL後再執行pip3 install mitmproxy
2、使用
安裝後,直接在命令行輸入mitmproxy就會進入它的交互界面:
這時候mitmproxy已經開始監聽8080埠(默認),接著,我們可以去瀏覽器設置代理。瀏覽器設置代理的方式有很多,這里不多做介紹。
設置完代理後,訪問瀏覽器的請求都會被發到mitmproxy上,mitmproxy根據規則對請求進行攔截(不配置攔截規則的話則都不攔截),所有經過的請求都會被輸出:
在交互界面上可以通過快捷鍵操作請求。輸入問號』?』,可以查看快捷鍵的文檔。
3、下面介紹一些常用的快捷鍵和功能
① 請求過濾
在請求列表交互界面,按下f鍵後,可以輸入一些過濾規則:
具體的過濾語法可以按下』?『鍵後,再按下方向鍵右』—>』或者l鍵。
② 請求攔截
按下i鍵後,可以對指定的請求進行攔截。按mitmproxy收到指定條件的請求時,不會立馬把它轉發出去,而是等待我們執行resume操作後,才會把請求轉發出去——在這期間我們甚至可以對請求進行手動修改。
紅色字體表示該請求被攔截,之後我們可以按入a鍵來恢復該請求,可以輸入A鍵恢復所有被攔截的請求。
③ 查看/編輯請求
把指示游標移動到某個請求上,按回車可以查看請求的內容。或者滑鼠直接點擊請求也可以。
之後通過左右方向鍵可以查看request、response、detail等信息。
如果要編輯請求,可以在這個界面輸入e,然後會讓我們選擇編輯哪塊內容:
之後就會進入vim編輯界面編輯相應的內容了(保存後會生效)。
④ 重發請求
mitmproxy的游標指向某個請求時,按下r鍵可以重發這個請求(重發前可以對該請求進行編輯)。
按下』:』鍵後,可以輸入命令,這樣我們就可以通過過濾規則批量的重發請求
replay.client是mitmproxy內置的一個命令,我們也可以自行編寫命令。命令的編寫可以參考官網文檔,這里不做介紹。
⑤ 插件開發
我們可以編寫插件,然後再啟動的時候指定插件,mitmproxy處理請求的時候會執行一個插件的鏈,這樣我們就可以對請求進行編輯然後再發送出去了。
借用官網的插件demo:
這個方法對每一個請求進行處理,然後列印序號。通過mitmproxy -s test.py來讓插件生效。通過插件可以綁定各種連接事件。感興趣的朋友可以自行去mitmproxy官網看文檔,這里不多做介紹。
⑥ 保存抓到的請求數據
通過w快捷鍵我們可以把這次抓到的請求包保存到文件上。
通過mitmproxy -r file可以讀取以前抓取的請求信息進行分析。
優點:
命令行操作,可以在無GUI界面的伺服器上使用
對於這幾個抓包神器,我總結了下使用場景:
只抓http協議的話:
推薦使用mitmproxy。mitmproxy豐富的功能不僅可以滿足我們的抓包需求,還可以提升我們的工作效率。比如測試可以抓包後一鍵重發請求來重現bug,開發調試的時候可以修改請求內容等等。
如果是在線上的沒有GUI的伺服器:
推薦使用tcpmp,雖然mitmproxy也可以支持命令行抓包,但是生產環境的伺服器最好不要亂安裝第三方插件。另外,大多數伺服器都有裝tcpmp。我們可以通過把請求的內容輸出到文件,然後拷貝會自己的電腦用wireshark分析。
想要抓取http以外的協議的話:
直接上wireshark。功能強大。對於Charles,感覺用了mitmproxy之後,就基本用不上Charles了。Charles好像也可以編輯後再發送,但是感覺不是很好用,可能我用的不是很熟吧。
B. 如何使用wireshark抓包
你好,方法如下
抓取報文:
下載和安裝好Wireshark之後,啟動Wireshark並且在介面列表中選擇介面名,然後開始在此介面上抓包。例如,如果想要在無線網路上抓取流量,點擊無線介面。點擊Capture Options可以配置高級屬性,但現在無此必要。
點擊介面名稱之後,就可以看到實時接收的報文。Wireshark會捕捉系統發送和接收的每一個報文。如果抓取的介面是無線並且選項選取的是混合模式,那麼也會看到網路上其他報文。
上端面板每一行對應一個網路報文,默認顯示報文接收時間(相對開始抓取的時間點),源和目標IP地址,使用協議和報文相關信息。點擊某一行可以在下面兩個窗口看到更多信息。逗+地圖標顯示報文裡面每一層的詳細信息。底端窗口同時以十六進制和ASCII碼的方式列出報文內容。
需要停止抓取報文的時候,點擊左上角的停止按鍵。
色彩標識:
進行到這里已經看到報文以綠色,藍色,黑色顯示出來。Wireshark通過顏色讓各種流量的報文一目瞭然。比如默認綠色是TCP報文,深藍色是DNS,淺藍是UDP,黑色標識出有問題的TCP報文——比如亂序報文。
報文樣本:
比如說你在家安裝了Wireshark,但家用LAN環境下沒有感興趣的報文可供觀察,那麼可以去Wireshark wiki下載報文樣本文件。
打開一個抓取文件相當簡單,在主界面上點擊Open並瀏覽文件即可。也可以在Wireshark里保存自己的抓包文件並稍後打開。
過濾報文:
如果正在嘗試分析問題,比如打電話的時候某一程序發送的報文,可以關閉所有其他使用網路的應用來減少流量。但還是可能有大批報文需要篩選,這時要用到Wireshark過濾器。
最基本的方式就是在窗口頂端過濾欄輸入並點擊Apply(或按下回車)。例如,輸入逗dns地就會只看到DNS報文。輸入的時候,Wireshark會幫助自動完成過濾條件。
也可以點擊Analyze菜單並選擇Display Filters來創建新的過濾條件。
另一件很有趣的事情是你可以右鍵報文並選擇Follow TCP Stream。
你會看到在伺服器和目標端之間的全部會話。
關閉窗口之後,你會發現過濾條件自動被引用了——Wireshark顯示構成會話的報文。
檢查報文:
選中一個報文之後,就可以深入挖掘它的內容了。
也可以在這里創建過濾條件——只需右鍵細節並使用Apply as Filter子菜單,就可以根據此細節創建過濾條件。
C. js 怎麼抓包
抓包大致有以下兩種途徑:
可以用第三方軟體,比如fiddler(本機需要有.net 運行環境):
D. wireshark怎麼抓包伺服器
這個很簡單,直接在電腦上安裝抓包軟體wireshark,將電腦與路由器連接好,點開wireshark,開始採集,此時界面會彈出一個小窗口,需要你選擇要抓包的網卡,你應該選擇與路由器互聯的網卡。准備就緒,直接登錄web界面,wireshark會抓取到所有從選定網卡收發的報文了。
E. 我是網路方面的新手,希望請教各位一個問題:如何抓取機內的數據包 就是說我的資料庫伺服器在自己的機器
一般來說抓包都是用軟體,抓包軟體是抓去進,出設備的數據包。所以如果數據沒有流動那就抓不到。不知道你想要查看些什麼內容,如果你想看數據伺服器與其他設備都傳遞些什麼數據包那就得把數據伺服器和另一個設備連在一起,讓他們處於信息交互的狀態,這樣才能抓包。
比較有名的抓包工具有sniffer,etherpeak,wireshake(可能拼寫有誤,網路會為你糾正^_^)
而個人pc抓包一般都是抓取網卡上的數據,一般抓包軟體會讓你選擇抓哪個網卡的數據,那就選你連接伺服器和另一設備的那張網卡就行了。
抓取的包是所有通過網卡的數據,所以准確的篩選就要看你自己的知識夠不夠了。
F. Fiddler抓包基本使用
Fiddler_官方網站
Fiddler_官方文檔
Fiddler_官方視頻
Fiddler_官方插件
1、Filddler簡介
Fiddler是最強大最好用的Web調試工具之一,它能記錄所有客戶端和伺服器的http和https請求,允許你監視,設置斷點,甚至修改輸入輸出數據,Fiddler包含了一個強大的基於事件腳本的子系統,並且能使用.net語言進行擴展。
2、Filddler工作原理
Fiddler是以代理WEB伺服器的形式工作的,瀏覽器與伺服器之間通過建立TCP連接以HTTP協議進行通信,瀏覽器默認通過自己發送HTTP請求到伺服器,它使用代理地址:127.0.0.1, 埠:8888. 當Fiddler開啟會自動設置代理, 退出的時候它會自動注銷代理,這樣就不會影響別的程序。不過如果Fiddler非正常退出,這時候因為Fiddler沒有自動注銷,會造成網頁無法訪問。解決的辦法是重新啟動下Fiddler.
4、界面介紹
4.1 Fiddler主界面
4.2 工具面板
工具欄說明:說明注釋、重新請求、刪除會話、繼續執行、流模式/緩沖模式、解碼、保留會話、監控指定進程、尋找、保存會話、切圖、計時、打開瀏覽器、清除IE緩存、編碼/解碼工具、彈出控制監控面板、MSDN、幫助。
兩種模式:
1、 緩沖模式(Buffering Mode): Fiddler直到HTTP響應完成時才將數據返回給應用程序。可以控制響應,修改響應數據。但是時序圖有時候會出現異常
2、流模式(Streaming Mode): Fiddler會即時將HTTP響應的數據返回給應用程序。更接近真實瀏覽器的性能。時序圖更准確。但是不能控制響應。
4.3會話面板
4.4 監控面板
統計報表
(1) 請求總數、請求包大小、響應包大小;
(2) 請求起始時間、響應結束時間、握手時間、等待時間、路由時間、TCP/IP傳輸時間;
(3) HTTP狀態碼統計;
(4) 返回的各種類型數據的大小統計以及餅圖展現。
時間軸
每個網路請求都會經歷域名解析、建立連接、發送請求、接受數據等階段。把多個請求以時間作為 X 軸,用圖表的形式展現出來,就形成了瀑布圖。在Fiddler 中,只要在左側選中一些請求,右側選擇Timeline標簽,就可以看到這些請求的瀑布圖
1)綠色的請求表示這是一個「有條件的請求」。HTTP 協議定義了 5 個條件請求頭部,最常見的兩個是「If-Modified-Since」和「If-None-Match」。伺服器根據這兩個頭部來驗證本地緩存是否過期,如果過期則正常返回資源的最新版本;否則僅返回 304 Not Modified,瀏覽器繼續使用本地緩存。包含條件請求頭部的請求用綠色顯示,否則用黑色。
2)有陰影線的請求是緩沖模式下的請求,實心的是流模式下的請求。Fiddler 提供了緩沖(Buffering)和流(Streaming)兩種抓包模式:緩沖模式下,Fiddler 會在響應完成時才將數據返回給應用程序(通常是瀏覽器),這種模式下可以控制響應,方便地修改響應內容;流模式下,Fiddler 會實時返回響應數據給瀏覽器,但沒辦法控制響應。一般使用流模式,瀑布圖會更真實一些。這兩種模式可以通過 Fiddler 的工具欄選擇。特別的,通過 Fiddler 的「AutoResponder」功能返回的響應,只能是緩沖模式。
3)請求條的不同顏色對應著不同類型的響應,根據響應頭的 MIME Type 來歸類。如淺綠色表示圖片類型的響應;深綠色是 JavaScript;紫色是 CSS;其它都是藍色。
4)請求中的黑色豎線,表示的是瀏覽器收到服務端響應的第一個位元組這一時刻。這個時間受 DNS 解析、建立連接、發送請求、等待服務端響應等步驟的影響。
5)請求條後面的圖標表示響應的某些特徵。如軟盤圖標表示這個響應正文從本地獲得,也就是說服務端返回了 304;閃電表示這是 Fiddler 的「AutoResponder」的響應;向下的箭頭表示響應是 302,需要重定向;紅色感嘆號說明這個請求有錯誤發生(狀態碼是 4XX 或 5XX)。特別的,如果請求條後面有一個紅色的X,說明服務端響應完這個請求之後,斷開了連接。出現這種情況一般有兩種可能:HTTP/1.0 的響應中沒有 Connection: Keep-Alive;或者是 HTTP/1.1 的響應中包含了 Connection: close。使用持久連接可以省去建立連接的開銷,也可以減小 TCP 慢啟動和其它擁塞控制機制帶來的影響,總之是好處多多。
6)請求前面的紅色圓圈表示這個連接是新建的,綠色表示是復用的。上面的圓圈表示的是瀏覽器到 Fiddler 的連接,下面的圓圈是 Fiddler 到服務端的連接。
4.5 狀態面板
控制台
Fiddler的左下角有一個命令行工具叫做QuickExec,允許你直接輸入命令。
help 打開官方的使用頁面介紹,所有的命令都會列出來
cls 清屏 (Ctrl+x 也可以清屏)
select 選擇會話的命令
?.png 用來選擇png後綴的圖片
bpu 截獲request
bpafter 截獲response
5、HTTP協議簡介
5.1、HTTP消息的結構
5.1.1、Request
先看Request 消息的結構, Request 消息分為3部分,第一部分叫Request line, 第二部分叫Request header, 第三部分是body. header和body之間有個空行。第一行中的Method表示請求方法,比如"POST","GET", Path-to-resoure表示請求的資源, Http/version-number 表示HTTP協議的版本號,當使用的是"GET" 方法的時候, body是為空的。
5.1.2、Response
5.2 狀態碼
Response 消息中的第一行叫做狀態行,由HTTP協議版本號, 狀態碼, 狀態消息 三部分組成。
狀態碼用來告訴HTTP客戶端,HTTP伺服器是否產生了預期的Response.
HTTP/1.1中定義了5類狀態碼, 狀態碼由三位數字組成,第一個數字定義了響應的類別
1XX —— 提示信息,表示請求已被成功接收,繼續處理
2XX —— 成功,表示請求已被成功接收,理解,接受
3XX —— 重定向,要完成請求必須進行更進一步的處理
4XX —— 客戶端錯誤,請求有語法錯誤或請求無法實現
5XX —— 伺服器端錯誤,伺服器未能實現合法的請求
常見響應碼說明:
200:響應成功,這表明該請求被成功地完成,所請求的資源發送回客戶端
302:重定向,新的URL會在response 中的Location中返回,瀏覽器將會自動使用新的URL發出新的Request
304:代表上次的文檔已經被緩存了, 還可以繼續使用,例如打開博客園首頁, 發現很多Response 的status code 都是304
[提示:如果你不想使用本地緩存可以用Ctrl+F5 強制刷新頁面]
400 : 客戶端請求與語法錯誤,不能被伺服器所理解
403:伺服器收到請求,但是拒絕提供服務
404 :找不到網頁,請求的資源不存在
500 : 伺服器發生了不可預期的錯誤
503 :伺服器當前不能處理客戶端的請求,一段時間後可能恢復正常
6、 常用功能
6.1 監聽HTTPS
6.3 模擬各類場景
通過GZIP壓縮,測試性能
模擬Agent測試,查看服務端是否對不同客戶端定製響應
模擬慢速網路,測試頁面的容錯性
禁用緩存,方便調試一些靜態文件或測試服務端響應情況
6.4 Compare(對比文本)
Fiddler中設置斷點修改Response跟斷點修改Request用法差不多。
參考文檔: http://www.cnblogs.com/FounderBox/p/4653588.html?utm_source=tuicool&utm_medium=referral
http://kb.cnblogs.com/page/130367/
G. 如何抓取指定網站後台伺服器數據
先打開wireshark監聽指定的網卡就是上網的那一張網卡,開始抓包,然後使用瀏覽器訪問你想要的網站,當瀏覽器顯示網站數據傳輸完畢,停止抓包,將所抓的數據保存下來即可
H. 如何使用Charles抓包
你好,方法如下:
HTTP抓包1、打開Charles程序2、查看Mac電腦的IP地址,系統偏好設置->網路就可以查看到了,比如我的ip地址是:192.168.1.73、打開iOS設置,進入當前wifi連接(Mac在一個區域網內),設置HTTP代理Group,將伺服器填為上一步中獲得的IP,即192.168.1.7,埠填8888:4、iOS設備打開你要抓包的app進行網路操作5、Charles彈出確認框,點擊Allow按鈕即可
I. 如何在linux伺服器上抓包
tcpmp -s 0 -i any host 抓包的IP -w test.pcap //抓包完成後按Ctrl+C結束抓包