Python 3反爬蟲原理與繞過(guò)實(shí)戰(zhàn)
定 價(jià):89 元
- 作者:韋世東
- 出版時(shí)間:2020/1/1
- ISBN:9787115528735
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.561
- 頁(yè)碼:377
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
本書首先介紹了開(kāi)發(fā)環(huán)境的配置,接著討論了Web網(wǎng)站的構(gòu)成和頁(yè)面渲染、動(dòng)態(tài)網(wǎng)頁(yè)和靜態(tài)網(wǎng)頁(yè)對(duì)爬蟲造成的影響,緊接著詳細(xì)介紹了信息校驗(yàn)型反爬蟲、動(dòng)態(tài)渲染反爬蟲、文本混淆反爬蟲知識(shí)、特征識(shí)別反爬蟲的原理、實(shí)現(xiàn)和繞過(guò),然后概覽了App數(shù)據(jù)爬取的關(guān)鍵和常用的反爬蟲手段,最后介紹了常見(jiàn)的編碼和加密原理、JavaScript代碼混淆知識(shí)、前端禁止事件以及與爬蟲相關(guān)的法律知識(shí)和風(fēng)險(xiǎn)點(diǎn)。
【人氣推薦】《Python 3 網(wǎng)絡(luò)爬蟲開(kāi)發(fā)實(shí)戰(zhàn)》作者、微軟小冰工程師崔慶才作序,騰訊、馬蜂窩工程師傾力推薦。
【干貨滿滿】爬蟲工程師不可錯(cuò)過(guò)的“武功秘籍”,內(nèi)容包括但不限于Cookie 反爬蟲、WebSocket 反爬蟲、字體反爬蟲、WebDriver 反爬蟲、App 反爬蟲、驗(yàn)證碼反爬蟲。
【反爬蟲原理+爬蟲實(shí)戰(zhàn)】從實(shí)戰(zhàn)出發(fā),印證國(guó)內(nèi)互聯(lián)網(wǎng)企業(yè)內(nèi)部加密原理,側(cè)重講解反爬蟲的原理以及繞過(guò)方法。
【21個(gè)反爬蟲示例】結(jié)合練習(xí)平臺(tái) Steamboat,幫助讀者隨時(shí)復(fù)現(xiàn)書中的 21個(gè)爬蟲示例,鞏固所學(xué)知識(shí)。
韋世東,資深爬蟲工程師,2019年華為云·云享專家,掘金社區(qū)優(yōu)秀作者,GitChat認(rèn)證作者,夜幕團(tuán)隊(duì)(NightTeam)成員。擁有七年互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn),擅長(zhǎng)反爬蟲的設(shè)計(jì)和繞過(guò)技巧。
第 1章 開(kāi)發(fā)環(huán)境配置 1
1.1 操作系統(tǒng)的選擇 1
1.1.1 Ubuntu 簡(jiǎn)介 1
1.1.2 VirtualBox 的安裝 2
1.1.3 安裝 Ubuntu 3
1.1.4 全屏設(shè)置 8
1.1.5 Python 設(shè)置 9
1.2 練習(xí)平臺(tái) Steamboat 10
1.2.1 安裝 Docker 11
1.2.2 安裝 Steamboat 12
1.2.3 Steamboat 使用說(shuō)明 14
1.3 第三方庫(kù)的安裝 15
1.3.1 Requests 15
1.3.2 Selenium 15
1.3.3 瀏覽器驅(qū)動(dòng) 16
1.3.4 Splash 18
1.3.5 Puppeteer 18
1.3.6 PyTesseract 20
1.4 常用軟件的安裝 21
1.4.1 nginx 21
1.4.2 Charles 22
1.4.3 PC端 SSL 證書 23
1.4.4 iOS 系統(tǒng)的證書設(shè)置 26
1.4.5 Andriod 模擬器的安裝與證書設(shè)置 27
1.4.6 Postman 29
1.4.7 Google Chrome 32
1.4.8 JADX 33
1.5 深度學(xué)習(xí)環(huán)境配置 35
1.5.1 NVIDIA顯卡驅(qū)動(dòng)安裝 35
1.5.2 CUDA Toolkit 的安裝 38
1.5.3 cuDNN 的安裝 40
1.5.4 深度學(xué)習(xí)庫(kù) PyTorch 41
1.5.5 深度學(xué)習(xí)框架 Darknet 42
1.5.6 圖片標(biāo)注工具 LabelImg 43
1.6 Node.js 環(huán)境配置 44
1.6.1 Node.js 的安裝 44
1.6.2 UglifyJS 的安裝 45
第 2章 Web網(wǎng)站的構(gòu)成和頁(yè)面渲染 47
2.1 nginx服務(wù)器 47
2.1.1 nginx的信號(hào) 48
2.1.2 nginx配置文件 49
2.1.3 簡(jiǎn)單的代理服務(wù) 50
2.1.4 nginx模塊與指令 52
2.1.5 nginx日志 57
2.1.6 小結(jié) 58
2.2 瀏覽器 58
2.2.1 瀏覽器的主要結(jié)構(gòu) 59
2.2.2 頁(yè)面渲染 60
2.2.3 HTML DOM 62
2.2.4 瀏覽器對(duì)象BOM 65
2.2.5 小結(jié) 70
2.3 網(wǎng)絡(luò)協(xié)議 71
2.3.1 認(rèn)識(shí)HTTP 71
2.3.2 資源與資源標(biāo)識(shí)符 72
2.3.3 HTTP請(qǐng)求與響應(yīng) 74
2.3.4 Cookie 77
2.3.5 了解HTTPS 80
2.3.6 認(rèn)識(shí)WebSocket 81
2.3.7 WebSocket握手 81
2.3.8 數(shù)據(jù)傳輸與數(shù)據(jù)幀 83
2.3.9 WebSocket連接 85
2.3.10 連接保持 87
2.3.11 小結(jié) 88
本章總結(jié) 88
第3章 爬蟲與反爬蟲 89
3.1 動(dòng)態(tài)網(wǎng)頁(yè)與網(wǎng)頁(yè)源代碼 89
3.2 爬蟲知識(shí)回顧 90
3.3 反爬蟲的概念與定義 95
本章總結(jié) 96
第4章 信息校驗(yàn)型反爬蟲 97
4.1 User-Agent 反爬蟲 97
4.1.1 User-Agent 反爬蟲繞過(guò)實(shí)戰(zhàn) 97
4.1.2 User-Agent 反爬蟲的原理與實(shí)現(xiàn) 100
4.1.3 小結(jié) 103
4.2 Cookie 反爬蟲 103
4.2.1 Cookie 反爬蟲繞過(guò)實(shí)戰(zhàn) 103
4.2.2 Cookie 反爬蟲原理與實(shí)現(xiàn) 109
4.2.3 Cookie 與 JavaScript 結(jié)合 110
4.2.4 用戶過(guò)濾 112
4.2.5 小結(jié) 113
4.3 簽名驗(yàn)證反爬蟲 114
4.3.1 簽名驗(yàn)證反爬蟲繞過(guò)實(shí)戰(zhàn) 114
4.3.2 簽名驗(yàn)證反爬蟲原理與實(shí)現(xiàn) 121
4.3.3 有道翻譯反爬蟲案例 123
4.3.4 小結(jié) 125
4.4 WebSocket 握手驗(yàn)證反爬蟲 125
4.5 WebSocket 消息校驗(yàn)反爬蟲 129
4.5.1 WebSocket 消息校驗(yàn)反爬蟲示例 130
4.5.2 樂(lè)魚體育反爬蟲案例 132
4.6 WebSocket Ping反爬蟲 133
本章總結(jié) 134
第5章 動(dòng)態(tài)渲染反爬蟲 135
5.1 常見(jiàn)的動(dòng)態(tài)渲染反爬蟲案例 135
5.1.1 自動(dòng)執(zhí)行的異步請(qǐng)求案例 135
5.1.2 點(diǎn)擊事件和計(jì)算 138
5.1.3 下拉加載和異步請(qǐng)求 142
5.1.4 小結(jié) 144
5.2 動(dòng)態(tài)渲染的通用解決辦法 144
5.2.1 Selenium 套件 144
5.2.2 異步渲染庫(kù) Puppeteer 148
5.2.3 異步渲染服務(wù) Splash 150
5.2.4 通用不一定適用 154
5.2.5 渲染工具知識(shí)擴(kuò)展 156
5.2.6 小結(jié) 160
本章總結(jié) 160
第6章 文本混淆反爬蟲 161
6.1 圖片偽裝反爬蟲 161
6.1.1 圖片偽裝反爬蟲繞過(guò)實(shí)戰(zhàn) 161
6.1.2 廣西人才網(wǎng)反爬蟲案例 164
6.1.3 小結(jié) 165
6.2 CSS 偏移反爬蟲 165
6.2.1 CSS 偏移反爬蟲繞過(guò)實(shí)戰(zhàn) 166
6.2.2 去哪兒網(wǎng)反爬蟲案例 172
6.2.3 小結(jié) 174
6.3 SVG 映射反爬蟲 174
6.3.1 SVG 映射反爬蟲繞過(guò)實(shí)戰(zhàn) 174
6.3.2 大眾點(diǎn)評(píng)反爬蟲案例 177
6.3.3 SVG 反爬蟲原理 179
6.3.4 小結(jié) 186
6.4 字體反爬蟲 186
6.4.1 字體反爬蟲示例 186
6.4.2 字體文件 WOFF 189
6.4.3 字體反爬蟲繞過(guò)實(shí)戰(zhàn) 196
6.4.4 小結(jié) 198
6.5 文本混淆反爬蟲通用解決辦法 199
6.5.1 光學(xué)字符識(shí)別 OCR 199
6.5.2 PyTesseract 的缺點(diǎn) 201
6.5.3 文字識(shí)別 API 202
6.5.4 小結(jié) 206
本章總結(jié) 206
第7章 特征識(shí)別反爬蟲 207
7.1 WebDriver 識(shí)別 207
7.1.1 WebDriver 識(shí)別示例 207
7.1.2 WebDriver 識(shí)別原理 210
7.1.3 WebDriver 識(shí)別的繞過(guò)方法 211
7.1.4 淘寶網(wǎng) WebDriver 案例 214
7.1.5 小結(jié) 215
7.2 瀏覽器特征 215
7.3 爬蟲特征 219
7.3.1 訪問(wèn)頻率限制繞過(guò)實(shí)戰(zhàn) 219
7.3.2 訪問(wèn)頻率限制的原理與實(shí)現(xiàn) 222
7.3.3 瀏覽器指紋知識(shí)擴(kuò)展 223
7.3.4 淘寶網(wǎng)瀏覽器指紋案例 227
7.3.5 小結(jié) 228
7.4 隱藏鏈接反爬蟲 228
7.4.1 隱藏鏈接反爬蟲示例 228
7.4.2 隱藏鏈接反爬蟲原理與實(shí)現(xiàn) 231
7.4.3 小結(jié) 233
本章總結(jié) 234
第8章 App反爬蟲 235
8.1 App 抓包 235
8.1.1 HTTP 抓包示例 235
8.1.2 掌上英雄聯(lián)盟抓包案例(HTTP) 240
8.1.3 京東商城抓包案例(HTTPS) 243
8.1.4 小結(jié) 246
8.2 APK文件反編譯 246
8.2.1 App 簽名驗(yàn)證反爬蟲示例 246
8.2.2 APK文件反編譯實(shí)戰(zhàn) 248
8.2.3 小結(jié) 251
8.3 代碼混淆反爬蟲 251
8.3.1 Android 代碼混淆原理 252
8.3.2 掘金社區(qū) App 代碼混淆案例 255
8.3.3 小結(jié) 257
8.4 App 應(yīng)用加固知識(shí)擴(kuò)展 257
8.5 了解應(yīng)用程序自動(dòng)化測(cè)試工具 260
8.5.1 了解 Appium 260
8.5.2 了解 Airtest Project 260
8.5.3 小結(jié) 262
本章總結(jié) 262
第9章 驗(yàn)證碼 263
9.1 字符驗(yàn)證碼 263
9.1.1 字符驗(yàn)證碼示例 263
9.1.2 實(shí)現(xiàn)字符驗(yàn)證碼 266
9.1.3 深度學(xué)習(xí)的概念 269
9.1.4 卷積神經(jīng)網(wǎng)絡(luò)的概念 272
9.1.5 使用卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)驗(yàn)證碼 276
9.1.6 小結(jié) 286
9.2 計(jì)算型驗(yàn)證碼 286
9.2.1 計(jì)算型驗(yàn)證碼示例 286
9.2.2 實(shí)現(xiàn)計(jì)算型驗(yàn)證碼 288
9.2.3 小結(jié) 291
9.3 滑動(dòng)驗(yàn)證碼 291
9.3.1 滑動(dòng)驗(yàn)證碼示例 291
9.3.2 實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼 295
9.3.3 小結(jié) 298
9.4 滑動(dòng)拼圖驗(yàn)證碼 298
9.4.1 滑動(dòng)拼圖驗(yàn)證碼示例 299
9.4.2 實(shí)現(xiàn)滑動(dòng)拼圖驗(yàn)證碼 302
9.4.3 難度升級(jí) 307
9.4.4 圖片中的缺口位置識(shí)別 308
9.4.5 小結(jié) 310
9.5 文字點(diǎn)選驗(yàn)證碼 310
9.5.1 文字點(diǎn)選驗(yàn)證碼示例 310
9.5.2 實(shí)現(xiàn)文字點(diǎn)選驗(yàn)證碼 312
9.5.3 目標(biāo)檢測(cè)的概念 316
9.5.4 深度學(xué)習(xí)實(shí)現(xiàn)文字定位 317
9.5.5 批量檢測(cè)與坐標(biāo)輸出 323
9.5.6 小結(jié) 330
9.6 鼠標(biāo)軌跡的檢測(cè)和原理 330
9.7 驗(yàn)證碼產(chǎn)品賞析 336
9.7.1 滑動(dòng)驗(yàn)證碼 336
9.7.2 圖標(biāo)驗(yàn)證碼 337
9.7.3 空間推理驗(yàn)證碼 338
9.7.4 小結(jié) 338
本章總結(jié) 338
第 10章 綜合知識(shí) 339
10.1 編碼與加密 339
10.1.1 ASCII 編碼 339
10.1.2 詳解 Base64 342
10.1.3 基于編碼的反爬蟲設(shè)計(jì) 344
10.1.4 MD5消息摘要算法 347
10.1.5 對(duì)稱加密與 AES 352
10.1.6 非對(duì)稱加密與 RSA 357
10.1.7 小結(jié) 360
10.2 JavaScript 代碼混淆 360
10.2.1 常見(jiàn)的混淆方法 361
10.2.2 混淆代碼的還原 363
10.2.3 混淆原理 365
10.2.4 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的混淆器 366
10.2.5 小結(jié) 369
10.3 前端禁止事件 369
10.3.1 禁止鼠標(biāo)事件 370
10.3.2 禁止鍵盤事件 371
10.3.3 小結(jié) 372
10.4 法律法規(guī) 372
10.4.1 數(shù)據(jù)安全管理辦法征求意見(jiàn)稿 374
10.4.2 爬蟲協(xié)議 Robots 375
10.4.3 與爬蟲相關(guān)的法律法規(guī) 376
10.4.4 小結(jié) 377
本章總結(jié) 377