●章開發環境配置1
1.1操作繫統的選擇1
1.1.1Ubuntu簡介1
1.1.2VirtualBox的安裝2
1.1.3安裝Ubuntu3
1.1.4全屏設置8
1.1.5Python設置9
1.2練習平臺Steamboat10
1.2.1安裝Docker11
1.2.2安裝Steamboat12
1.2.3Steamboat使用說明14
1.3第三方庫的安裝15
1.3.1Requests15
1.3.2Selenium15
1.3.3瀏覽器驅動16
1.3.4Splash18
1.3.5Puppeteer18
1.3.6PyTesseract20
1.4常用軟件的安裝21
1.4.1nginx21
1.4.2Charles22
1.4.3PC端SSL證書23
1.4.4iOS繫統的證書設置26
1.4.5Andriod模擬器的安裝與證書設置27
1.4.6Postman29
1.4.7GoogleChrome32
1.4.8JADX33
1.5深度學習環境配置35
1.5.1NVIDIA顯卡驅動安裝35
1.5.2CUDAToolkit的安裝38
1.5.3cuDNN的安裝40
1.5.4深度學習庫PyTorch41
1.5.5深度學習框架Darknet42
1.5.6圖片標注工具LabelImg43
1.6Node.js環境配置44
1.6.1Node.js的安裝44
1.6.2UglifyJS的安裝45
第2章Web網站的構成和頁面渲染47
2.1nginx服務器47
2.1.1nginx的信號48
2.1.2nginx配置文件49
2.1.3簡單的代理服務50
2.1.4nginx模塊與指令52
2.1.5nginx日志57
2.1.6小結58
2.2瀏覽器58
2.2.1瀏覽器的主要結構59
2.2.2頁面渲染60
2.2.3HTMLDOM62
2.2.4瀏覽器對像BOM65
2.2.5小結70
2.3網絡協議71
2.3.1認識HTTP71
2.3.2資源與資源標識符72
2.3.3HTTP請求與響應74
2.3.4Cookie77
2.3.5了解HTTPS80
2.3.6認識WebSocket81
2.3.7WebSocket握手81
2.3.8數據傳輸與數據幀83
2.3.9WebSocket連接85
2.3.10連接保持87
2.3.11小結88
本章總結88
第3章爬蟲與反爬蟲89
3.1*態網頁與網頁源代碼89
3.2爬蟲知識回顧90
3.3反爬蟲的概念與定義95
本章總結96
第4章信息校驗型反爬蟲97
4.1User-Agent反爬蟲97
4.1.1User-Agent反爬蟲繞過實戰97
4.1.2User-Agent反爬蟲的原理與實現100
4.1.3小結103
4.2Cookie反爬蟲103
4.2.1Cookie反爬蟲繞過實戰103
4.2.2Cookie反爬蟲原理與實現109
4.2.3Cookie與JavaScript結合110
4.2.4用戶過濾112
4.2.5小結113
4.3簽名驗證反爬蟲114
4.3.1簽名驗證反爬蟲繞過實戰114
4.3.2簽名驗證反爬蟲原理與實現121
4.3.3有道翻譯反爬蟲案例123
4.3.4小結125
4.4WebSocket握手驗證反爬蟲125
4.5WebSocket消息校驗反爬蟲129
4.5.1WebSocket消息校驗反爬蟲示例130
4.5.2樂魚體育反爬蟲案例132
4.6WebSocketPing反爬蟲133
本章總結134
第5章動態渲染反爬蟲135
5.1常見的動態渲染反爬蟲案例135
5.1.1自動執行的異步請求案例135
5.1.2點擊事件和計算138
5.1.3下拉加載和異步請求142
5.1.4小結144
5.2動態渲染的通用解決辦法144
5.2.1Selenium套件144
5.2.2異步渲染庫Puppeteer148
5.2.3異步渲染服務Splash150
5.2.4通用不一定適用154
5.2.5渲染工具知識擴展156
5.2.6小結160
本章總結160
第6章文本混淆反爬蟲161
6.1圖片偽裝反爬蟲161
6.1.1圖片偽裝反爬蟲繞過實戰161
6.1.2廣西人纔網反爬蟲案例164
6.1.3小結165
6.2CSS偏移反爬蟲165
6.2.1CSS偏移反爬蟲繞過實戰166
6.2.2去哪兒網反爬蟲案例172
6.2.3小結174
6.3SVG映射反爬蟲174
6.3.1SVG映射反爬蟲繞過實戰174
6.3.2大眾點評反爬蟲案例177
6.3.3SVG反爬蟲原理179
6.3.4小結186
6.4字體反爬蟲186
6.4.1字體反爬蟲示例186
6.4.2字體文件WOFF189
6.4.3字體反爬蟲繞過實戰196
6.4.4小結198
6.5文本混淆反爬蟲通用解決辦法199
6.5.1光學字符識別OCR199
6.5.2PyTesseract的缺點201
6.5.3文字識別API202
6.5.4小結206
本章總結206
第7章特征識別反爬蟲207
7.1WebDriver識別207
7.1.1WebDriver識別示例207
7.1.2WebDriver識別原理210
7.1.3WebDriver識別的繞過方法211
7.1.4淘寶網WebDriver案例214
7.1.5小結215
7.2瀏覽器特征215
7.3爬蟲特征219
7.3.1訪問頻率限制繞過實戰219
7.3.2訪問頻率限制的原理與實現222
7.3.3瀏覽器指紋知識擴展223
7.3.4淘寶網瀏覽器指紋案例227
7.3.5小結228
7.4隱藏鏈接反爬蟲228
7.4.1隱藏鏈接反爬蟲示例228
7.4.2隱藏鏈接反爬蟲原理與實現231
7.4.3小結233
本章總結234
第8章App反爬蟲235
8.1App抓包235
8.1.1HTTP抓包示例235
8.1.2掌上英雄聯盟抓包案例(HTTP)240
8.1.3京東商城抓包案例(HTTPS)243
8.1.4小結246
8.2APK文件反編譯246
8.2.1App簽名驗證反爬蟲示例246
8.2.2APK文件反編譯實戰248
8.2.3小結251
8.3代碼混淆反爬蟲251
8.3.1Android代碼混淆原理252
8.3.2掘金社區App代碼混淆案例255
8.3.3小結257
8.4App應用加固知識擴展257
8.5了解應用程序自動化測試工具260
8.5.1了解Appium260
8.5.2了解AirtestProject260
8.5.3小結262
本章總結262
第9章驗證碼263
9.1字符驗證碼263
9.1.1字符驗證碼示例263
9.1.2實現字符驗證碼266
9.1.3深度學習的概念269
9.1.4卷積神經網絡的概念272
9.1.5使用卷積神經網絡預測驗證碼276
9.1.6小結286
9.2計算型驗證碼286
9.2.1計算型驗證碼示例286
9.2.2實現計算型驗證碼288
9.2.3小結291
9.3滑動驗證碼291
9.3.1滑動驗證碼示例291
9.3.2實現滑動驗證碼295
9.3.3小結298
9.4滑動拼圖驗證碼298
9.4.1滑動拼圖驗證碼示例299
9.4.2實現滑動拼圖驗證碼302
9.4.3難度升級307
9.4.4圖片中的缺口位置識別308
9.4.5小結310
9.5文字點選驗證碼310
9.5.1文字點選驗證碼示例310
9.5.2實現文字點選驗證碼312
9.5.3目標檢測的概念316
9.5.4深度學習實現文字定位317
9.5.5批量檢測與坐標輸出323
9.5.6小結330
9.6鼠標軌跡的檢測和原理330
9.7驗證碼產品賞析336
9.7.1滑動驗證碼336
9.7.2圖標驗證碼337
9.7.3空間推理驗證碼338
9.7.4小結338
本章總結338
0章綜合知識339
10.1編碼與加密339
10.1.1ASCII編碼339
10.1.2詳解Base64342
10.1.3基於編碼的反爬蟲設計344
10.1.4MD5消息摘要算法347
10.1.5對稱加密與AES352
10.1.6非對稱加密與RSA357
10.1.7小結360
10.2JavaScript代碼混淆360
10.2.1常見的混淆方法361
10.2.2混淆代碼的還原363
10.2.3混淆原理365
10.2.4實現一個簡單的混淆器366
10.2.5小結369
10.3前端禁止事件369
10.3.1禁止鼠標事件370
10.3.2禁止鍵盤事件371
10.3.3小結372
10.4法律法規372
10.4.1數據安全管理辦法征求意見稿374
10.4.2爬蟲協議Robots375
10.4.3與爬蟲相關的法律法規376
10.4.4小結377
本章總結377
內容簡介
本書首先介紹了開發環境的配置,接著討論了Web網站的構成和頁面渲染、*態網頁和靜態網頁對爬蟲造成的影響,緊接著詳細介紹了信息校驗型反爬蟲、動態渲染反爬蟲、文本混淆反爬蟲知識、特征識別反爬蟲的原理、實現和繞過,然後概覽了App數據爬取的關鍵和常用的反爬蟲手段,很後介紹了常見的編碼和加密原理、JavaScript代碼混淆知識、前端止事件以及與爬蟲相關的法律知識和風險點。