Python 3反爬蟲原理與繞過實(shí)戰(zhàn)
定 價(jià):89 元
- 作者:韋世東
- 出版時(shí)間:2020/1/1
- ISBN:9787115528735
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.561
- 頁碼:377
- 紙張:
- 版次:01
- 開本:16開
本書首先介紹了開發(fā)環(huán)境的配置,接著討論了Web網(wǎng)站的構(gòu)成和頁面渲染、動態(tài)網(wǎng)頁和靜態(tài)網(wǎng)頁對爬蟲造成的影響,緊接著詳細(xì)介紹了信息校驗(yàn)型反爬蟲、動態(tài)渲染反爬蟲、文本混淆反爬蟲知識、特征識別反爬蟲的原理、實(shí)現(xiàn)和繞過,然后概覽了App數(shù)據(jù)爬取的關(guān)鍵和常用的反爬蟲手段,最后介紹了常見的編碼和加密原理、JavaScript代碼混淆知識、前端禁止事件以及與爬蟲相關(guān)的法律知識和風(fēng)險(xiǎn)點(diǎn)。
【人氣推薦】《Python 3 網(wǎng)絡(luò)爬蟲開發(fā)實(shí)戰(zhàn)》作者、微軟小冰工程師崔慶才作序,騰訊、馬蜂窩工程師傾力推薦。
【干貨滿滿】爬蟲工程師不可錯(cuò)過的“武功秘籍”,內(nèi)容包括但不限于Cookie 反爬蟲、WebSocket 反爬蟲、字體反爬蟲、WebDriver 反爬蟲、App 反爬蟲、驗(yàn)證碼反爬蟲。
【反爬蟲原理+爬蟲實(shí)戰(zhàn)】從實(shí)戰(zhàn)出發(fā),印證國內(nèi)互聯(lián)網(wǎng)企業(yè)內(nèi)部加密原理,側(cè)重講解反爬蟲的原理以及繞過方法。
【21個(gè)反爬蟲示例】結(jié)合練習(xí)平臺 Steamboat,幫助讀者隨時(shí)復(fù)現(xiàn)書中的 21個(gè)爬蟲示例,鞏固所學(xué)知識。
韋世東,資深爬蟲工程師,2019年華為云·云享專家,掘金社區(qū)優(yōu)秀作者,GitChat認(rèn)證作者,夜幕團(tuán)隊(duì)(NightTeam)成員。擁有七年互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn),擅長反爬蟲的設(shè)計(jì)和繞過技巧。
第 1章 開發(fā)環(huán)境配置 1
1.1 操作系統(tǒng)的選擇 1
1.1.1 Ubuntu 簡介 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í)平臺 Steamboat 10
1.2.1 安裝 Docker 11
1.2.2 安裝 Steamboat 12
1.2.3 Steamboat 使用說明 14
1.3 第三方庫的安裝 15
1.3.1 Requests 15
1.3.2 Selenium 15
1.3.3 瀏覽器驅(qū)動 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ū)動安裝 35
1.5.2 CUDA Toolkit 的安裝 38
1.5.3 cuDNN 的安裝 40
1.5.4 深度學(xué)習(xí)庫 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)成和頁面渲染 47
2.1 nginx服務(wù)器 47
2.1.1 nginx的信號 48
2.1.2 nginx配置文件 49
2.1.3 簡單的代理服務(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 頁面渲染 60
2.2.3 HTML DOM 62
2.2.4 瀏覽器對象BOM 65
2.2.5 小結(jié) 70
2.3 網(wǎng)絡(luò)協(xié)議 71
2.3.1 認(rèn)識HTTP 71
2.3.2 資源與資源標(biāo)識符 72
2.3.3 HTTP請求與響應(yīng) 74
2.3.4 Cookie 77
2.3.5 了解HTTPS 80
2.3.6 認(rèn)識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 動態(tài)網(wǎng)頁與網(wǎng)頁源代碼 89
3.2 爬蟲知識回顧 90
3.3 反爬蟲的概念與定義 95
本章總結(jié) 96
第4章 信息校驗(yàn)型反爬蟲 97
4.1 User-Agent 反爬蟲 97
4.1.1 User-Agent 反爬蟲繞過實(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 反爬蟲繞過實(shí)戰(zhàn) 103
4.2.2 Cookie 反爬蟲原理與實(shí)現(xiàn) 109
4.2.3 Cookie 與 JavaScript 結(jié)合 110
4.2.4 用戶過濾 112
4.2.5 小結(jié) 113
4.3 簽名驗(yàn)證反爬蟲 114
4.3.1 簽名驗(yàn)證反爬蟲繞過實(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 樂魚體育反爬蟲案例 132
4.6 WebSocket Ping反爬蟲 133
本章總結(jié) 134
第5章 動態(tài)渲染反爬蟲 135
5.1 常見的動態(tài)渲染反爬蟲案例 135
5.1.1 自動執(zhí)行的異步請求案例 135
5.1.2 點(diǎn)擊事件和計(jì)算 138
5.1.3 下拉加載和異步請求 142
5.1.4 小結(jié) 144
5.2 動態(tài)渲染的通用解決辦法 144
5.2.1 Selenium 套件 144
5.2.2 異步渲染庫 Puppeteer 148
5.2.3 異步渲染服務(wù) Splash 150
5.2.4 通用不一定適用 154
5.2.5 渲染工具知識擴(kuò)展 156
5.2.6 小結(jié) 160
本章總結(jié) 160
第6章 文本混淆反爬蟲 161
6.1 圖片偽裝反爬蟲 161
6.1.1 圖片偽裝反爬蟲繞過實(shí)戰(zhàn) 161
6.1.2 廣西人才網(wǎng)反爬蟲案例 164
6.1.3 小結(jié) 165
6.2 CSS 偏移反爬蟲 165
6.2.1 CSS 偏移反爬蟲繞過實(shí)戰(zhàn) 166
6.2.2 去哪兒網(wǎng)反爬蟲案例 172
6.2.3 小結(jié) 174
6.3 SVG 映射反爬蟲 174
6.3.1 SVG 映射反爬蟲繞過實(shí)戰(zhàn) 174
6.3.2 大眾點(diǎn)評反爬蟲案例 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 字體反爬蟲繞過實(shí)戰(zhàn) 196
6.4.4 小結(jié) 198
6.5 文本混淆反爬蟲通用解決辦法 199
6.5.1 光學(xué)字符識別 OCR 199
6.5.2 PyTesseract 的缺點(diǎn) 201
6.5.3 文字識別 API 202
6.5.4 小結(jié) 206
本章總結(jié) 206
第7章 特征識別反爬蟲 207
7.1 WebDriver 識別 207
7.1.1 WebDriver 識別示例 207
7.1.2 WebDriver 識別原理 210
7.1.3 WebDriver 識別的繞過方法 211
7.1.4 淘寶網(wǎng) WebDriver 案例 214
7.1.5 小結(jié) 215
7.2 瀏覽器特征 215
7.3 爬蟲特征 219
7.3.1 訪問頻率限制繞過實(shí)戰(zhàn) 219
7.3.2 訪問頻率限制的原理與實(shí)現(xiàn) 222
7.3.3 瀏覽器指紋知識擴(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)用加固知識擴(kuò)展 257
8.5 了解應(yīng)用程序自動化測試工具 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ù)測驗(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 滑動驗(yàn)證碼 291
9.3.1 滑動驗(yàn)證碼示例 291
9.3.2 實(shí)現(xiàn)滑動驗(yàn)證碼 295
9.3.3 小結(jié) 298
9.4 滑動拼圖驗(yàn)證碼 298
9.4.1 滑動拼圖驗(yàn)證碼示例 299
9.4.2 實(shí)現(xiàn)滑動拼圖驗(yàn)證碼 302
9.4.3 難度升級 307
9.4.4 圖片中的缺口位置識別 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)檢測的概念 316
9.5.4 深度學(xué)習(xí)實(shí)現(xiàn)文字定位 317
9.5.5 批量檢測與坐標(biāo)輸出 323
9.5.6 小結(jié) 330
9.6 鼠標(biāo)軌跡的檢測和原理 330
9.7 驗(yàn)證碼產(chǎn)品賞析 336
9.7.1 滑動驗(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章 綜合知識 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 對稱加密與 AES 352
10.1.6 非對稱加密與 RSA 357
10.1.7 小結(jié) 360
10.2 JavaScript 代碼混淆 360
10.2.1 常見的混淆方法 361
10.2.2 混淆代碼的還原 363
10.2.3 混淆原理 365
10.2.4 實(shí)現(xiàn)一個(gè)簡單的混淆器 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ù)安全管理辦法征求意見稿 374
10.4.2 爬蟲協(xié)議 Robots 375
10.4.3 與爬蟲相關(guān)的法律法規(guī) 376
10.4.4 小結(jié) 377
本章總結(jié) 377