1、為什么能抓包
代理服務器,模擬客戶端向服務端發送請求。
2、抓包
2.1抓APP的包,手機和電腦在同一個局域網,然后cmd命令ipconfig查看IP,手機代理服務器設置為IP地址,端口號8888,保存
2.2抓web的包;三大設置,1:安裝證書-:tools-options-https,全部勾選
2:自動解壓HTTP響應--點擊decode,這樣就會自動解壓HTTP響應,否則我們看到的HTTP響應是亂碼
3:隱藏”Tunnel to “請求,步驟:rules-Hide CONNECIS,這樣Fiddler就不會捕獲大量無用的握手驗證請求。我們抓包是為了看HTTP請求和響應的數據內容,而不關心HTTPS的通信是怎么建立的。
2.3抓HTTP的包,
2.4抓HTTPS的包,需要下載安裝信任CA證書
2.5 抓不到包的原因:前端設置隱藏,所以抓不到包
3、改包--下斷點
方法1,rules--before requests改請求,rules--after responses改響應
方法2,左下角黑色輸入框,bpu+域名--該請求,bpafter+域名--改響應
方法3,左下角點一下,紅色“T”圖標是 改請求,再點一下“D”圖標是 改響應
4、分析包
1、判斷前后端是否做了校驗,前端是抓不到包,友好提示,后端根據請求內容返回正確的響應信息
2、定位BUG,用Fiddler抓包,請求有問題就是前端問題,響應有問題就是后端的問題;
看請求參數和響應參數,請求參數有問題是前端問題,響應參數有問題就是后端問題;
去看下數據庫,如果和數據庫不一致也是后端的問題。
4、弱網測試
1、Fiddler中script,找到上傳和下載的兩行代碼(搜索kb),修改網速,然后保存就可以了
2、項目比較急的話,會用手機自帶的2G、3G、4G、5G和WiFi進行測試
3、還有騰訊的qnet,修改網速,保存也可以
5、篩選
1、點擊Filters,
2、點擊show only the following hosts,
3、勾選use Filters,
4、輸入框填寫要抓包的域名,如果要抓多個位置的包,填寫多個域名,多個域名用英文分號 ; 隔開
5、點擊actions,就可以篩洗了
6、埋點
用Fiddler抓取埋點字段,在用戶行為管理系統中查詢該字段,以及數據庫查詢埋點字段,查到就是埋點成功,查不到埋點失敗
7、mock數據
7.1、使用場景?
1、無法控制第三方系統接口的返回,返回的數據不滿足要求
2、依賴系統還未開發完成,就需要對被測系統進行測試
3、模擬一些異常場景,比如服務器崩潰,返回503狀態碼
7.2、步驟?
1、創建一個tx文件,將目標響應數據寫入進去,注意:保存格式為utf-8,否則響應數據可能會亂碼
2、點擊目標請求---點擊右側的’autoresponder‘--'enable rules'
3、點擊add rules,rule editor 下方選擇 find a file
7、常見的content-type:文本格式,圖片格式,應用格式
文本格式:text/html:HTML格式
text/plain:純文本格式
text/xml:XML格式
圖片格式:image/gif:gif格式
image/jpeg:jpg格式
image/png:png圖片格式
應用: application/xhtml+xml:XHTML格式
application/xml:XML格式
application/atom+xml:Atom XML聚合格式
application/json:JSON格式
application/pdf:pdf格式
application/msword:word文檔格式
application/octet-stream:二進制流數據(如常見的文件下載)
application/x-www-form-urlencoded:<form encType=" ">中默認的encType,from表單數據被編碼為key/value格式發送到服務器(表單默認的提交數據的格式)
8、HTTP和HTTPS的區別
https是一種加密了的http協議,比http協議安全,通過ssl+http實現加密傳輸的。
1、 http協議需要用到CA信任證書,一般免費的比較少,因而需要一定的費用。
2、 http是超文本傳輸協議,信息是明文傳輸,HTTPS則是具有安全性的ssl加密傳輸的協議。
3、 HTTP和HTTPS使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443.
4、 HTTP的連接很簡單,是無狀態的;HTTPS是由ssl+http協議構建的,可進行加密傳輸,身份認證的網絡協議,比http更安全。
9、常見狀態碼
2XX 請求成功
3XX 重定向 301用久重定向 302臨時重定向
4XX 客戶端錯誤 403 對請求資源的訪問,被服務器拒絕了 404 服務器上無法找到請求的資源
5XX 服務器錯誤 500 服務器遇到錯誤,無法完成請求 503 服務器停機,維護,暫時的狀態
10、HTTP請求方法
get
post
put
head
delete
11、TCP和UDP的區別
TCP: 無連接,不可靠傳輸,不使用流量控制和擁塞控制;支持一對一,一對多,多對一或多對多交互通信;面向報文;首部開銷小,僅8字節;適用於實時應用(IP電話、視頻會議、直播等)
UDP :面向連接;可靠傳輸,使用流量控制和擁塞控制;只能是一對一通信;面向字節流;首部最小20字節,最大60字節;適用於要求可靠傳輸的應用,例如文件傳輸
TCP向上層提供面向連接的可靠服務 ,UDP向上層提供無連接不可靠服務。雖然 UDP 並沒有 TCP 傳輸來的准確,但是也能在很多實時性要求高的地方有所作為,對數據准確性要求高,速度可以相對較慢的,可以選用TCP
12、一次完成的HTTP過程
1、 對www.baidu.com這個網址進行DNS域名解析,得到對應的IP地址
2、 根據IP地址,找到對應的服務器,發起TCP的三次握手
3、 建立TCP連接后,發起HTTP請求
4、 服務器響應HTTP請求,瀏覽器得到html代碼
5、 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css圖片等)(先得到html代碼,才能去找這些資源)
6、 瀏覽器對頁面進行渲染呈現給用戶
13、TCP的三次握手
1、要求建立聯機,瀏覽器發送標有SYN的數據包給web服務器已讀,
2、確認聯機信息,web服務器返回標有SYN/ACK的數據包給瀏覽器,
3、確認建立聯機成功,瀏覽器發送標有ACK的數據包給web服務器
14、GET和POST的區別
1、GET在瀏覽器回退是無害的,而POST會再次提交請求
2、GET產生的URL地址可以被BookMark(給……保存為書簽),而Post不可以
3、GET請求會被瀏覽器主動給cache(緩存),而post不會,除非手動設置
4、GET請求只能進行URL編碼,而POST支持多種編碼方式
5、GET請求參數會被完整保留在瀏覽器歷史記錄里,而POST中的參數不會被保留
6、GET請求在URL中傳輸的參數是有長度限制的,而POST沒有
7、對參數的數據類型,GET只接受ASCII碼,而POST沒有限制
8、POST比GET更安全,因為GET參數直接暴露在URL上,所以不能用來傳遞敏感信息
9、GET參數通過URL傳遞,POST放在RequestBody(請求體)中