HTTP 抓包之接口自動化測試

肖佳

  • HTTP 抓包之接口自動化測試-preview-1
  • HTTP 抓包之接口自動化測試-preview-2
HTTP 抓包之接口自動化測試-preview-1

買這商品的人也買了...

商品描述

本書內容來自作者多年從事接口測試的經驗總結,貼近實際,能幫助讀者解決實際工作中的難題。本書的主要內容有HTTP的基礎知識;如何使用Fiddler來抓HTTP包;如何分析HTTP包;如何通過JMeter和Postman等發送HTTP包,從而實現軟件自動化測試和接口的自動化測試;如何使用抓包工具來實現安全測試和性能測試等;幾個日常生活中應用比較廣泛的綜合實例。

本書圖文並茂、實例豐富,方便讀者參考並動手實踐,適合前端開發工程師、測試工程師、線上故障技術人員、接口開發人員和Web開發人員閱讀。

作者簡介

肖佳,Vmware高级测试工程师,博客园知名博主(网名小坦克),《HTTP抓包实战》一书的作者,软件测试培训构“佳猫教育”创始人;从事软件开发测试工作十余年,有丰富的手动测试和自动化测试经验;个人博客阅读量已经超过500万,乐于分享,善于用浅显的语言来讲解技术。

目錄大綱

第 1章 抓包的用處 1
1.1 Fiddler抓包的應用 1
1.2 學習HTTP 2
1.2.1 HTTP請求的結構 3
1.2.2 HTTP響應的結構 3
1.3 爬蟲 3
1.4 Fiddler在測試中的作用 5
1.4.1 抓包用於性能測試 5
1.4.2 抓包用於安全測試 5
1.4.3 抓包用於接口測試 6
1.4.4 大量製造測試數據 6
1.4.5 異常測試 6
1.4.6 排除故障和定位Bug 6
1.5 前端開發人員使用Fiddler調試Web 8
1.5.1 後端接口Mock 8
1.5.2 AJAX調試 9
1.5.3 線上調試 9
1.6 後端開發人員使用Fiddler抓包 9
1.7 安全測試 9
1.8 檢查網站的簡單問題 10
1.8.1 Fiddler檢查404錯誤 10
1.8.2 Fiddler檢查大響應 10
1.9 自動化小工具的開發 11
1.9.1 購票助手 11
1.9.2 自動申請賬號工具 12
1.9.3 Fiddler找回密碼 12
1.9.4 網絡游戲助手 13
1.10 概念的區別 13
1.10.1 抓包和錄制的區別 13
1.10.2 自動化測試和爬蟲的區別 13
1.10.3 自動化測試和外掛的區別 13
1.11 本章小結 13

第 2章 Fiddler如何抓包 14
2.1 Fiddler必須要做的3個設置 14
2.1.1 第 1個設置:在Fiddler中安裝證書 14
2.1.2 第 2個設置:自動解壓HTTP響應 14
2.1.3 第3個設置:隱藏“Tunnel to”請求 15
2.2 不允許抓包 16
2.2.1 某些App抓不到包 16
2.2.2 HTTP請求和響應全部加密 16
2.2.3 不讓抓包 16
2.3 Fiddler抓不到包 17
2.3.1 Fiddler的抓包開關 17
2.3.2 瀏覽器抓不到包 17
2.3.3 能抓HTTP不能抓HTTPS的請求 18
2.3.4 抓不到手機中的包 19
2.3.5 經過上面的設置,還是抓不到包 20
2.3.6 在macOS中抓包 20
2.3.7 Fiddler證書安裝不成功 20
2.3.8 iOS 10.3以上,手動信任證書 21
2.4 Fiddler包太多找不到自己想要的 22
2.4.1 停止抓包 22
2.4.2 只抓手機,不抓本地的包 22
2.4.3 過濾會話 23
2.4.4 只抓特定的進程 23
2.4.5 觀察URL和HOST 23
2.4.6 查看進程發包 24
2.5 HTTPS是否安全 24
2.6 電腦連接手機熱點抓包 24
2.7 用Fiddler測試App升級 25
2.7.1 App升級原理 25
2.7.2 App升級的測試 26
2.7.3 堅果雲的升級 26
2.8 短鏈接 27
2.8.1 短鏈接原理解析 27
2.8.2 使用短鏈接 27
2.8.3 用Fiddler抓包短鏈接 28
2.9 本章小結 28

第3章 Session分類和查詢 29
3.1 Session的概念 29
3.2 為什麽Fiddler中有這麽多Session 29
3.3 Session的類型 30
3.4 搜索Session 31
3.4.1 搜索登錄的會話 31
3.4.2 在請求搜索框中搜索 32
3.5 用命令行工具查詢Session 32
3.5.1 通過select命令過濾 32
3.5.2 通過allbut過濾 33
3.5.3 通過“ ”過濾 33
3.5.4 通過Session類型的大小來過濾 34
3.5.5 通過“=HTTP方法”過濾 35
3.5.6 通過@Host過濾 35
3.5.7 通過“=狀態碼”過濾 35
3.6 給Session下斷點 36
3.6.1 下斷點攔截HTTP請求 36
3.6.2 下斷點攔截HTTP響應 37
3.6.3 及時取消斷點 37
3.7 本章小結 37

第4章 FiddlerScript的高級用法 38
4.1 FiddlerScript的界面 38
4.2 Fiddler的事件函數 38
4.3 在FiddlerScript中使用正則表達式 39
4.4 忽略抓包 39
4.5 顯示客戶端和服務器的IP 40
4.6 顯示響應時間 41
4.7 讀寫本地txt文件 42
4.8 保存請求 42
4.9 重新發送請求 43
4.10 本章小結 43

第5章 常見的抓包工具 44
5.1 常見的抓包工具 44
5.2 瀏覽器開發者工具 44
5.2.1 調出開發者工具 44
5.2.2 用Chrome測試網頁加載時間 45
5.2.3 用Chrome捕獲網站登錄的POST請求 45
5.2.4 用Chrome測試接口的響應時間 46
5.2.5 過濾請求 47
5.3 vConsole 47
5.4 Charles抓包工具 48
5.4.1 Charles工具的安裝與使用方法 48
5.4.2 在Charles中安裝根證書 48
5.4.3 Charles配置規則 50
5.4.4 用Charles捕捉網站登錄的請求 50
5.5 Wireshark抓包工具 51
5.5.1 用Wireshark捕捉HTTP 51
5.5.2 用Wireshark捕捉HTTPS 53
5.6 本章小結 55

第6章 用Python發送HTTP請求 56
6.1 requests框架介紹 56
6.1.1 在pip中安裝requests框架 56
6.1.2 在PyCharm中安裝requests框架 56
6.2 發送GET請求 57
6.2.1 用Fiddler捕獲Python發出的HTTP請求 58
6.2.2 發送HTTPS請求 59
6.2.3 發送帶參數的GET請求 59
6.2.4 發送帶信息頭的請求 60
6.3 發送POST請求 61
6.3.1 發送普通POST請求 61
6.3.2 發送JSON的POST請求 61
6.4 會話維持 62
6.5 用Python發送各種請求 62
6.6 用Python下載文件 63
6.6.1 用Python下載圖片 63
6.6.2 用Python下載視頻 63
6.7 本章小結 63

第7章 用正則表達式提取數據 64
7.1 正則表達式測試工具 64
7.2 利用正則表達式提取數據 64
7.3 提取訂單號 64
7.4 提取token字符串 66
7.5 從JSON字符串中提取 67
7.6 提取Cookie字符串 67
7.7 爬蟲提取數據 68
7.8 本章小結 68

第8章 HTTP的9種請求方法 69
8.1 HTTP常見的9種請求方法 69
8.2 HTTP冪等性 69
8.3 9種請求方法的特性 70
8.4 HTTP和數據的增刪改查操作的對應關系 70
8.5 PUT方法 70
8.5.1 POST方法和PUT方法的區別 71
8.5.2 PUT方法和POST方法的選擇 71
8.6 DELETE方法 71
8.7 HEAD方法 72
8.8 OPTIONS方法 73
8.9 CONNECT方法 73
8.10 PATCH方法 74
8.11 TRACE方法 74
8.12 本章小結 75

第9章 內容類型 76
9.1 Content-Type介紹 76
9.1.1 Content-Type的格式 76
9.1.2 常見的Content-Type 77
9.2 POST提交數據的方式 77
9.3 3種常見的POST提交數據的方式 78
9.3.1 application/x-www-form-urlencoded 78
9.3.2 application/json 79
9.3.3 text/xml 79
9.4 HTTP中的負荷 79
9.4.1 請求負荷 80
9.4.2 響應負荷 81
9.5 錯誤的POST提交方法 81
9.6 根據接口文檔調用接口實例 81
9.7 鍵值對和JSON的混合 82
9.8 本章小結 83

第 10章 HTTP上傳和下載 84
10.1 HTTP上傳文件的兩種方式 84
10.2 multipart/form-data 84
10.2.1 對禪道上傳圖片的操作進行抓包 85
10.2.2 使用JMeter模擬上傳圖片 87
10.2.3 使用Python上傳圖片 88
10.3 application/octet-stream 88
10.3.1 在博客園的文章中上傳圖片 88
10.3.2 用JMeter模擬博客園上傳圖片 90
10.3.3 用Python模擬博客園上傳圖片 91
10.4 用HTTP下載文件 92
10.4.1 用JMeter下載文件 92
10.4.2 用Python實現下載文件 93
10.5 HTTP斷點續傳 94
10.5.1 HTTP請求信息頭 94
10.5.2 HTTP分段實例 94
10.6 本章小結 95

第 11章 HTTP對各種類型程序的抓包 96
11.1 用Fiddler抓取視頻 96
11.2 用Fiddler抓音頻文件 97
11.3 用Fiddler抓Flash 97
11.4 用Fiddler抓公眾號 98
11.5 用Fiddler抓包小程序 99
11.6 用AJAX抓包 99
11.7 用Fiddler抓包C# 100
11.8 用Fiddler抓包Java 100
11.9 用Fiddler抓包Postman 101
11.10 用Fiddler捕獲macOS 101
11.11 用Fiddler捕獲Linux系統 103
11.12 用Fiddler抓包堅果雲 103
11.13 本章小結 104

第 12章 自動登錄和登錄安全 105
12.1 登錄的較量 105
12.2 登錄的風險 105
12.2.1 冒用他人賬戶登錄 106
12.2.2 賬戶和密碼在傳輸過程中被截獲 106
12.2.3 密碼被破解 106
12.2.4 系統被爬蟲軟件或者腳本自動登錄 106
12.3 登錄的風控 106
12.4 登錄用GET還是POST 106
12.4.1 GET方法的缺點 107
12.4.2 POST比GET安全 107
12.4.3 使用GET方法登錄的網站 108
12.5 安全的原則 108
12.6 使用POST方法登錄的網站 109
12.7 登錄響應攜帶隱藏的token字符串 110
12.8 用JavaScript中的MD5給密碼加密 112
12.9 用JavaScript動態加密密碼 114
12.9.1 繞開JS混淆密碼 115
12.9.2 JS混淆密碼總結 116
12.10 短信驗證碼登錄 116
12.11 二維碼掃碼登錄 117
12.12 拼圖登錄 117
12.13 普通圖片驗證登錄 117
12.14 獨特的驗證方式 118
12.15 本章小結 119

第 13章 圖片驗證碼識別 120
13.1 圖片驗證碼 120
13.1.1 圖片驗證碼原理 121
13.1.2 圖片識別介紹 121
13.1.3 Tesseract的安裝與使用 121
13.1.4 Tesseract的使用 122
13.1.5 pytesseract的使用 122
13.2 用Python實現圖片驗證碼登錄 123
13.3 本章小結 124

第 14章 綜合實例——自動點贊 125
14.1 給文章自動點贊 125
14.1.1 拼圖驗證方式 125
14.1.2 直接使用Cookie繞過登錄 126
14.1.3 分析點贊的HTTP請求 126
14.2 用JMeter實現博客園文章自動點贊 129
14.3 使用Python實現博客園文章自動點贊 130
14.4 本章小結 131

第 15章 前端和後端 132
15.1 Web架構圖 132
15.2 前端開發和後端開發的區別 133
15.2.1 展示方式不同 133
15.2.2 運行不同 133
15.2.3 全棧工程師 133
15.2.4 前端和後端分離 134
15.3 前端驗證和後端驗證 134
15.3.1 前端驗證 134
15.3.2 後端驗證 135
15.3.3 前端驗證和後端驗證都需要 136
15.4 後端驗證的Bug 136
15.5 Fiddler繞過前端實現投票 137
15.6 後台和後台管理的區別 138
15.7 本章小結 139

第 16章 接口和接口測試 140
16.1 接口的概念 140
16.1.1 後端接口 140
16.1.2 在線英語App示例 141
16.1.3 “我的訂單”的前端和接口 141
16.2 登錄接口示例 142
16.3 接口文檔的維護 143
16.3.1 用Word文檔維護 143
16.3.2 用Wiki頁面維護 143
16.3.3 Swagger 143
16.3.4 調用接口的方式 145
16.4 接口測試的工具 145
16.5 接口測試的本質 146
16.6 接口測試的目的 147
16.6.1 接口測試的優勢 147
16.6.2 接口測試是必需的嗎 147
16.6.3 接口測試需要的知識 148
16.6.4 接口測試的流程 148
16.6.5 接口測試的測試內容 148
16.6.6 後端接口和前端測試是否重復 149
16.7 登錄接口的測試用例 149
16.8 接口測試是自動化測試嗎 149
16.9 如何設計接口測試用例 150
16.10 接口內部狀態碼 151
16.11 本章小結 152

第 17章 JSON數據格式 153
17.1 JSON格式在接口中的應用 153
17.2 JSON的概念 153
17.3 JSON的應用場合 153
17.4 JSON的語法 154
17.5 JSON值的類型 154
17.6 JSON應該使用雙引號 154
17.7 JSON數組 155
17.8 JSON的嵌套 155
17.9 JSON格式錯誤 156
17.10 JSON解析工具 156
17.10.1 在線的解析工具 156
17.10.2 Notepad++格式化JSON 156
17.10.3 在JMeter中格式化JSON 157
17.10.4 在Fiddler中格式化JSON 157
17.11 拼接JSON字符串 158
17.12 JMeter中的JSON提取器 159
17.13 本章小結 160

第 18章 HTTP和RESTful服務 161
18.1 什麽是RESTful 161
18.2 RESTful的優點 162
18.3 RESTful的主要原則 162
18.3.1 以資源為核心 162
18.3.2 每個資源分配唯一的URL 163
18.3.3 通過標準的HTTP(HTTPS)方法操作資源 163
18.3.4 過濾信息 164
18.3.5 資源的表現層可以是XML、JSON或者其他 164
18.3.6 認證機制 165
18.3.7 錯誤處理 165
18.4 本章小結 165

第 19章 用Postman測試分頁接口 166
19.1 接口介紹 166
19.2 設計測試用例 167
19.3 用Postman實現接口自動化 167
19.3.1 Postman介紹 167
19.3.2 Postman的使用 167
19.4 接口測試的發展方向 170
19.5 本章小結 170

第 20章 用JMeter測試單個接口 171
20.1 JMeter介紹 171
20.2 添加客房接口介紹 171
20.3 設計接口的測試用例 172
20.4 JMeter的操作過程 172
20.5 數據驅動測試 175
20.6 本章小結 177

第 21章 接口的token認證 178
21.1 接口的認證 178
21.2 token認證 178
21.2.1 調用天氣預報接口 180
21.2.2 token和Cookie的區別 181
21.3 token和Cookie一起用 182
21.4 在JMeter中如何處理token字符串 182
21.5 接口的三大安全性問題 185
21.6 請求參數被篡改 186
21.7 重放攻擊 186
21.7.1 在Fiddler中進行重放攻擊 187
21.7.2 UNIX時間戳 187
21.7.3 接口帶時間戳和簽名 188
21.8 本章小結 188

第 22章 發包常見的錯誤 189
22.1 發包的本質 189
22.2 對比HTTP請求 189
22.3 用JMeter發包常見的錯誤 190
22.3.1 輸入的網址錯誤 190
22.3.2 埠號填錯 191
22.3.3 協議錯誤 191
22.3.4 變量取值錯誤 191
22.3.5 服務器返回404錯誤 192
22.3.6 服務器返回400錯誤 192
22.3.7 服務器返回500錯誤 192
22.4 Postman發包常見問題 193
22.5 JMeter和Postman的區別 193
22.6 接口測試尋求幫助 194
22.7 本章小結 195

第 23章 秒殺活動的壓力測試 196
23.1 秒殺活動的壓力測試方案 196
23.1.1 秒殺的原理 196
23.1.2 測試目標 197
23.1.3 業務分析 197
23.1.4 測試指標 197
23.2 使用Fiddler來測試秒殺活動 198
23.2.1 用Fiddler重新發送HTTP請求 198
23.2.2 用Fiddler測試秒殺活動的思路 198
23.2.3 用Fiddler測試優惠券 199
23.2.4 單線程還是多線程 201
23.2.5 分辨腳本和用戶 201
23.3 捕獲App上的優惠券活動 201
23.4 使用JMeter來測試秒殺活動 202
23.5 壓力測試報告 203
23.6 本章小結 204

第 24章 用Fiddler和JMeter進行 性能測試 205
24.1 性能測試概述 205
24.2 Web頁面加載時間測試 206
24.2.1 258原則 206
24.2.2 實例:博客園頁面加載時間測試 206
24.3 接口的響應時間測試 208
24.4 視頻播放的性能測試 210
24.5 模擬5個用戶同時登錄網站 210
24.6 模擬5個不同的用戶同時登錄網站 212
24.7 本章小結 213

第 25章 HTTP中的支付安全測試 214
25.1 修改支付價格 214
25.2 漏洞發生的原因 215
25.3 支付漏洞的解決方法 216
25.3.1 前端不傳遞金額 216
25.3.2 簽名防止數據被篡改 217
25.4 修改充值金額測試 217
25.5 多線程提現測試 218
25.6 轉賬金額修改測試 219
25.7 重復支付 220
25.8 本章小結 221

第 26章 Web安全滲透測試 222
26.1 敏感信息泄露測試 222
26.2 重置密碼測試 222
26.3 修改任意賬號的郵箱密碼 225
26.4 Cookie是否是HttpOnly屬性 225
26.5 越權訪問漏洞 226
26.6 資源必須登錄才能訪問 227
26.7 修改VIP會員到期時間 228
26.8 本章小結 229

第 27章 綜合實例——自動提交訂單 230
27.1 背景 230
27.2 回歸測試 230
27.3 讓回歸測試自動化 231
27.4 產品的架構 231
27.5 自動化測試方案 231
27.6 哪些測試用例可以自動化 232
27.7 下單的測試用例 233
27.8 用JMeter實現自動提交訂單 233
27.9 用Python實現自動提交訂單 236
27.10 用JMeter實現自動取消訂單 237
27.11 用Python實現自動取消訂單 239
27.12 模擬100個用戶同時下1000個訂單 240
27.13 本章小結 241

第 28章 綜合實例——自動申請賬號 242
28.1 一鍵申請賬號 242
28.2 用JMeter實現自動創建用戶 245
28.3 本章小結 248

第 29章 綜合實例——自動簽到領積分 249
29.1 自動簽到的思路 249
29.2 手機抓包 249
29.3 某電商簽到領豆子 249
29.4 某金融App簽到 251
29.5 自動運行腳本 252
29.5.1 Python腳本利用Windows計劃定時執行 252
29.5.2 在Jenkins中定時執行 253
29.6 本章小結 253

第30章 綜合實例——App約課助手 254
30.1 App約課助手的思路 254
30.2 自動化方案 254
30.3 模擬App端還是Web端 254
30.4 網課約課助手開發 255
30.4.1 第 1步:模擬登錄 255
30.4.2 第 2步:獲取課程ID 258
30.4.3 第3步:約課 259
30.5 本章小結 260