1. 程式人生 > >Network 【Charles 抓包(原理篇)】

Network 【Charles 抓包(原理篇)】

目前網上提供了很多篇文章是用來介紹在mac上使用Charles抓取手機App的網路包(簡而言之就是——抓包)。抓包操作是我們必須掌握的一項技能,但是我發現網上整理的抓包方法不是太詳細,所以我在此重新寫一下抓包的步驟。

(1)抓包首先是要安裝mac端的Charles。(Charles是在Mac下常用的擷取網路封包的工具,在做iOS開發時,我們為了除錯與伺服器端的網路通訊協議,常常需要擷取網路封包來分析。Charles通過將自己設定成系統的網路訪問代理伺服器,使得所有的網路訪問請求都通過它來完成,從而實現了網路封包的擷取和分析。)

對於下載和安裝在這裡不多介紹,網上有太多這樣的帖子了。大家記得安裝完軟體之後需要破解一下(否則是30天試用期),在應用程式中顯示包內容然後在Java資料夾中替換charles.jar這個檔案。

(2)其次要將mac和iPhone連線在同一個區域網內。在同一個區域網內是可以相互連線到對方的廣播的,也可以冒認接收端來擷取資料。或者混亂arp資料包,進行全部抓取。那麼如何將mac和iPhone連線到同一個區域網呢?方法一,將兩個裝置都連線一個wifi路由器;方法二,將mac連線乙太網,然後在 系統偏好設定——共享 中設定共享乙太網來源的連線,然後用wifi埠共享給電腦(手機)。然後再將手機去連線電腦發散出的wifi。

(3)接著在Mac上開啟Charles Proxy,選單欄操作:Proxy→Proxy Setting,檢查埠,一般保持預設,HTTP Proxy 埠號為8888。

★在這裡要著重解釋說明一下,什麼是埠?我們這裡所指的埠不是指物理意義上的埠

,而是特指TCP/IP協議中的埠,是邏輯意義上的埠。在網上我查詢到這麼一個有趣的比喻:如果把IP地址比作一間房子,埠就是出入這間房子的門。真正的房子只有幾個門,但是一個IP地址的埠可以有65536個之多(255*255)!埠是通過埠號來標記的,埠號只有整數,範圍是從0到65535。(如果超出這個範圍,就會抓包失效)

另外我們知道,一臺擁有IP地址的主機可以提供許多服務,比如Web服務、FTP服務、SMTP服務等,這些服務完全可以通過1個IP地址來實現。那麼,主機是怎樣區分不同的網路服務呢?顯然不能只靠IP地址,因為IP地址與網路服務的關係是一對多的關係。實際上是通過 “IP地址+埠號” 來區分不同的服務的。所以說我們設定好埠號為8888後再去設定iPhone端。

(4)最後設定iPhone端的IP地址和埠號,開啟網路,然後檢視你連線mac的wifi資訊,在最下面HTTP代理的手動設定中設定伺服器為mac端IP地址,埠號和剛剛第三步中的埠號保持一致。這樣一來我們就可以進行抓包操作了。