Python 3 反爬蟲原理與繞過實戰

韋世東

  • Python 3 反爬蟲原理與繞過實戰-preview-1
  • Python 3 反爬蟲原理與繞過實戰-preview-2
Python 3 反爬蟲原理與繞過實戰-preview-1

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

商品描述

本書首先介紹了開發環境的配置,接著討論了Web網站的構成和頁面渲染、
動態網頁和靜態網頁對爬蟲造成的影響,
緊接著詳細介紹了信息校驗型反爬蟲、動態渲染反爬蟲、
文本混淆反爬蟲知識、特徵識別反爬蟲的原理、實現和繞過,
然後概覽了App數據爬取的關鍵和常用的反爬蟲手段,
最後介紹了常見的編碼和加密原理、JavaScript代碼混淆知識、
前端禁止事件以及與爬蟲相關的法律知識和風險點。

作者簡介

韋世東

資深爬蟲工程師,2019年華為云云享專家,掘金社區優秀作者,
GitChat認證作者,夜幕團隊(NightTeam)成員。
擁有七年互聯網從業經驗,擅長反爬蟲的設計和繞過技巧。

目錄大綱

第 1章 開發環境配置 1
1.1 操作系統的選擇 1
1.1.1 Ubuntu 簡介 1
1.1.2 VirtualBox 的安裝 2
1.1.3 安裝 Ubuntu 3
1.1.4 全屏設置 8
1.1.5 Python 設置 9
1.2 練習平台 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 瀏覽器驅動 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 系統的證書設置 26
1.4.5 Andriod 模擬器的安裝與證書設置 27
1.4.6 Postman 29
1.4.7 Google Chrome 32
1.4.8 JADX 33
1.5 深度學習環境配置 35
1.5.1 NVIDIA顯卡驅動安裝 35
1.5.2 CUDA Toolkit 的安裝 38
1.5.3 cuDNN 的安裝 40
1.5.4 深度學習庫 PyTorch 41
1.5.5 深度學習框架 Darknet 42
1.5.6 圖片標註工具 LabelImg 43
1.6 Node.js 環境配置 44
1.6.1 Node.js 的安裝 44
1.6.2 UglifyJS 的安裝 45

第 2章 Web網站的構成和頁面渲染 47
2.1 nginx服務器 47
2.1.1 nginx的信號 48
2.1.2 nginx配置文件 49
2.1.3 簡單的代理服務 50
2.1.4 nginx模塊與指令 52
2.1.5 nginx日誌 57
2.1.6 小結 58
2.2 瀏覽器 58
2.2.1 瀏覽器的主要結構 59
2.2.2 頁面渲染 60
2.2.3 HTML DOM 62
2.2.4 瀏覽器對象BOM 65
2.2.5 小結 70
2.3 網絡協議 71
2.3.1 認識HTTP 71
2.3.2 資源與資源標識符 72
2.3.3 HTTP請求與響應 74
2.3.4 Cookie 77
2.3.5 了解HTTPS 80
2.3.6 認識WebSocket 81
2.3.7 WebSocket握手 81
2.3.8 數據傳輸與數據幀 83
2.3.9 WebSocket連接 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.1 User-Agent 反爬蟲 97
4.1.1 User-Agent 反爬蟲繞過實戰 97
4.1.2 User-Agent 反爬蟲的原理與實現 100
4.1.3 小結 103
4.2 Cookie 反爬蟲 103
4.2.1 Cookie 反爬蟲繞過實戰 103
4.2.2 Cookie 反爬蟲原理與實現 109
4.2.3 Cookie 與 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.4 WebSocket 握手驗證反爬蟲 125
4.5 WebSocket 消息校驗反爬蟲 129
4.5.1 WebSocket 消息校驗反爬蟲示例 130
4.5.2 樂魚體育反爬蟲案例 132
4.6 WebSocket Ping反爬蟲 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.1 Selenium 套件 144
5.2.2 異步渲染庫 Puppeteer 148
5.2.3 異步渲染服務 Splash 150
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.2 CSS 偏移反爬蟲 165
6.2.1 CSS 偏移反爬蟲繞過實戰 166
6.2.2 去哪兒網反爬蟲案例 172
6.2.3 小結 174
6.3 SVG 映射反爬蟲 174
6.3.1 SVG 映射反爬蟲繞過實戰 174
6.3.2 大眾點評反爬蟲案例 177
6.3.3 SVG 反爬蟲原理 179
6.3.4 小結 186
6.4 字體反爬蟲 186
6.4.1 字體反爬蟲示例 186
6.4.2 字體文件 WOFF 189
6.4.3 字體反爬蟲繞過實戰 196
6.4.4 小結 198
6.5 文本混淆反爬蟲通用解決辦法 199
6.5.1 光學字符識別 OCR 199
6.5.2 PyTesseract 的缺點 201
6.5.3 文字識別 API 202
6.5.4 小結 206
本章總結 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 淘寶網 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.1 App 抓包 235
8.1.1 HTTP 抓包示例 235
8.1.2 掌上英雄聯盟抓包案例(HTTP) 240
8.1.3 京東商城抓包案例(HTTPS) 243
8.1.4 小結 246
8.2 APK文件反編譯 246
8.2.1 App 簽名驗證反爬蟲示例 246
8.2.2 APK文件反編譯實戰 248
8.2.3 小結 251
8.3 代碼混淆反爬蟲 251
8.3.1 Android 代碼混淆原理 252
8.3.2 掘金社區 App 代碼混淆案例 255
8.3.3 小結 257
8.4 App 應用加固知識擴展 257
8.5 了解應用程序自動化測試工具 260
8.5.1 了解 Appium 260
8.5.2 了解 Airtest Project 260
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

第 10章 綜合知識 339
10.1 編碼與加密 339
10.1.1 ASCII 編碼 339
10.1.2 詳解 Base64 342
10.1.3 基於編碼的反爬蟲設計 344
10.1.4  MD5消息摘要算法 347
10.1.5 對稱加密與 AES 352
10.1.6 非對稱加密與 RSA 357
10.1.7 小結 360
10.2 JavaScript 代碼混淆 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 爬蟲協議 Robots 375
10.4.3 與爬蟲相關的法律法規 376
10.4.4 小結 377
本章總結 377