《Java网络爬虫精解与实践》
本书内容
《Java网络爬虫精解与实践》全面而系统地介绍与网络爬虫程序相关的理论知识,并包含大量的 实践操作案例。
本书作者
张 凯
中国科学院大学软件工程专业硕士,研究方向为操作系统虚拟化,毕业后先后供职于微策略、新浪微博,目前供职于粉笔科技,任技术总监职务,担任爬虫平台、内容审核平台等多个重要系统技术负责人。对网络爬虫、高可用架构设计和文本分类领域有着深入研究。
本书读者
《Java网络爬虫精解与实践》的内容不仅涵盖理论知识,还注重实践操作,适合广大网络爬虫 程序开发爱好者阅读。同时,《Java网络爬虫精解与实践》也适合作为培训机构和学校的教学 参考用书。
本书目录
目 录
第 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 执行 Java 脚本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.1 验证码介绍38
3.2 避免 CAPTCHA 验证码触发 40
3.3 CAPTCHA 验证码生成 42
3.3.1 文本验证码的生成42
3.3.2 滑块验证码的生成43
3.3.3 点选验证码的生成45
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 章 Java 逆向分析技术 92
5.1 常见的反爬虫策略及其应对方案92
5.1.1 基于访问频率的检查与访问限制92
5.1.2 基于请求参数和请求头信息的反爬虫技术94
5.1.3 基于蜜罐机制的反爬虫技术94
5.1.4 隐藏网页的跳转链接95
5.2.2 浏览器指纹泄露97
5.2.3 浏览器指纹泄露修复98
5.3 Java 代码保护技术98
5.3.1 Java 代码反调试技术 99
5.3.2 基于完整性检测的代码保护技术106
5.3.3 限制 Java 代码执行环境111
5.3.4 Java 代码混淆技术 111
5.4 Java 抽象语法树122
5.4.1 抽象语法树的结构123
5.4.2 抽象语法树的生成过程124
5.4.3 操作抽象语法树126
5.4.4 操作抽象语法树反混淆基础实践131
5.5 Java Hook 技术 137
5.6 Java 逆向工程实践143
5.6.1 Java 反混淆实战 143
5.6.2 Java 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.7 爬取任务执行模块273
8.2.8 系统底层存储设计279
8.3 本章小结281
8.4 本章练习281
本书特色
本文摘自《Java网络爬虫精解与实践》,获出版社和作者授权发布。
Java爬虫Appium验证码小结发布于:北京市声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。