Java網絡爬蟲精解與實踐
張凱
- 出版商: 清華大學
- 出版日期: 2024-11-01
- 定價: $534
- 售價: 8.5 折 $454
- 語言: 簡體中文
- ISBN: 7302674841
- ISBN-13: 9787302674849
-
相關分類:
Web-crawler 網路爬蟲
下單後立即進貨 (約4週~6週)
相關主題
商品描述
目錄大綱
目 錄
第 1 章 網絡爬蟲開發入門實踐 1
1.1 Java 網絡爬蟲框架概覽1
1.2 搭建開發環境5
1.2.1 搭建 Java 開發環境5
1.2.2 搭建 Selenium 開發環境6
1.3 簡單 Web 爬蟲程序示例7
1.3.1 獲取網頁內容並打印7
1.3.2 利用 XPath 獲取指定元素8
1.3.3 單擊搜索按鈕9
1.3.4 獲取 iframe 元素中的數據 9
1.3.5 使用更加優雅的等待方式10
1.3.6 實現屏幕截圖12
1.3.7 執行 JavaScript 腳本12
1.4 WebDriver 選項配置3
1.4.1 瀏覽器通用選項配置13
1.4.2 Chrome 瀏覽器特定選項配置 14
1.4.3 Chrome DevTools Protocol14
1.5 BrowserMob Proxy 18
1.6 其他主流 Web 自動化測試框架19
1.6.1 Puppeteer20
1.6.2 Playwright20
1.7 本章小結21
1.8 本章練習21
第 2 章 網頁內容解析與提取 24
2.1 Selenium 元素定位器24
2.2 基於正則表達式的內容解析與提取27
2.2.1 正則表達式的基礎語法27
2.2.2 正則表達式的高級應用技巧29
2.2.3 正則表達式的應用場景31
2.3 基於 JsonPath 的內容解析與提取34
2.4 本章小結36
2.5 本章練習36
IV Java 網絡爬蟲精解與實踐
第 3 章 驗證碼繞過與識別 38
3.1 驗證碼介紹38
3.1.1 基於文本識別的驗證碼39
3.1.2 基於圖片識別的驗證碼39
3.1.3 基於語音識別的驗證碼40
3.1.4 基於行為識別的智能驗證碼40
3.2 避免 CAPTCHA 驗證碼觸發 40
3.3 CAPTCHA 驗證碼生成 42
3.3.1 文本驗證碼的生成42
3.3.2 滑塊驗證碼的生成43
3.3.3 點選驗證碼的生成45
3.4 CAPTCHA 驗證碼識別 47
3.4.1 文本驗證碼識別方案 1 47
3.4.2 文本驗證碼識別方案 2 52
3.4.3 滑塊驗證碼的識別56
3.4.4 點選驗證碼的識別59
3.5 本章小結65
3.6 本章練習66
第 4 章 網絡抓包與對抗 67
4.1 Fiddler 67
4.1.1 Fiddler 的安裝配置與基礎功能使用 67
4.1.2 Fiddler 的高級特性 70
4.2 Charles73
4.3 Wireshark 75
4.4 SSL Pinning 保護機制下的網絡數據抓包78
4.4.1 配置自定義 CA 證書 79
4.4.2 添加抓包軟件證書到系統信任的 CA 證書列表 82
4.4.3 使用 Hook 技術84
4.5 JustTrustMe 的工作原理 86
4.5.1 SSL Pinning 機制的實現86
4.5.2 JustTrustMe 模塊 Hook 操作的實現原理89
4.6 本章小結90
4.7 本章練習91
第 5 章 JavaScript 逆向分析技術 92
5.1 常見的反爬蟲策略及其應對方案92
5.1.1 基於訪問頻率的檢查與訪問限制92
5.1.2 基於請求參數和請求頭信息的反爬蟲技術94
5.1.3 基於蜜罐機制的反爬蟲技術94
5.1.4 隱藏網頁的跳轉鏈接95
5.2 瀏覽器指紋識別與修復96
5.2.1 瀏覽器指紋識別的工作原理96
5.2.2 瀏覽器指紋泄露97
5.2.3 瀏覽器指紋泄露修復98
5.3 JavaScript 代碼保護技術98
5.3.1 JavaScript 代碼反調試技術 99
5.3.2 基於完整性檢測的代碼保護技術106
5.3.3 限制 JavaScript 代碼執行環境111
5.3.4 JavaScript 代碼混淆技術 111
5.4 JavaScript 抽象語法樹122
5.4.1 抽象語法樹的結構123
5.4.2 抽象語法樹的生成過程124
5.4.3 操作抽象語法樹126
5.4.4 操作抽象語法樹反混淆基礎實踐131
5.5 JavaScript Hook 技術 137
5.6 JavaScript 逆向工程實踐143
5.6.1 JavaScript 反混淆實戰 143
5.6.2 JavaScript Hook 技術實戰 156
5.7 本章小結160
5.8 本章練習161
第 6 章 App 數據爬取與逆向分析 162
6.1 基於抓包分析的 App 數據爬取 162
6.2 基於 Appium 自動化框架的 App 數據採集163
6.2.1 Appium 簡介 163
6.2.2 Appium 環境搭建 164
6.2.3 Appium 2.x 和 Appium 1.x166
6.2.4 移動端 Web 爬蟲開發實踐168
6.2.5 移動端 Native App 爬蟲開發實踐 171
6.2.6 移動端 Hybrid App 爬蟲開發實踐173
6.2.7 Appium 開發環境的常見錯誤與處理技巧 175
6.3 Android 應用程序靜態分析 177
6.3.1 Android 應用程序基本結構剖析177
6.3.2 Android 應用程序構建過程180
6.3.3 Smali 代碼分析182
6.4 Android 應用程序動態分析 188
6.4.1 向 Smali 代碼中添加 debug 日誌 189
6.4.2 利用 Frida 框架進行逆向動態分析191
6.5 二進制文件逆向分析207
6.5.1 利用 objdump 逆向分析207
6.5.2 利用 IDA 進行逆向靜態分析208
6.5.3 利用 IDA 進行動態逆向分析210
6.6 加殼與脫殼技術213
6.6.1 相關基礎知識214
6.6.2 加殼技術實現原理215
6.6.3 脫殼技術實現原理217
6.7 App 逆向分析實戰一221
6.8 App 逆向分析實戰二225
6.9 本章小結228
6.10 本章練習 228
第 7 章 分佈式爬蟲系統關鍵技術 229
7.1 常用的分佈式架構模式229
7.1.1 主從模式229
7.1.2 自治模式230
7.2 任務調度策略231
7.2.1 基於數據分區的調度策略231
7.2.2 基於資源感知的調度策略234
7.2.3 基於優先級的調度策略235
7.2.4 基於自定義規則的調度策略235
7.3 任務調度器236
7.3.1 Quartz236
7.3.2 ElasticJob 238
7.3.3 XXL-JOB 239
7.4 分佈式消息隊列240
7.4.1 應用場景241
7.4.2 分佈式消息隊列的類型241
7.5 服務註冊與發現242
服務註冊與發現架構類型242
7.6 完全重復內容檢測245
7.6.1 布隆過濾器245
7.6.2 基於哈希指紋的重復性檢測247
7.7 近似重復內容檢測248
7.7.1 基於詞特徵的文本相似度計算算法248
7.7.2 基於深度學習的文本相似度計算算法249
7.7.3 近似最近鄰算法250
7.8 本章小結253
7.9 本章練習253
第 8 章 分佈式爬蟲系統實戰 254
8.1 需求分析254
8.1.1 功能需求分析254
8.1.2 非功能需求分析255
8.2 系統設計與實現255
8.2.1 總體設計256
8.2.2 爬取任務調度模塊257
8.2.3 反爬蟲對抗組件259
8.2.4 系統監控模塊261
8.2.5 重復內容過濾模塊263
8.2.6 內容相關性識別模塊271
8.2.7 爬取任務執行模塊273
8.2.8 系統底層存儲設計279
8.3 本章小結281
8.4 本章練習281