暂无商品咨询信息 [发表商品咨询]
本书全面而系统地介绍与网络爬虫程序相关的理论知识,并包含大量的实践操作案例。
本书共分为8章。第1章以自动化框架为基础,介绍网络爬虫程序的入门开发实践。第2章深入讲解网页内容的处理、解析技术和数据提取方法。第3章讨论验证码识别技术以及如何有效绕过验证码的策略。第4章涉及网络抓包技术及其对抗策略。第5章深入探讨JavaScript 代码的混淆技术与逆向分析方法。第6章专注于移动端应用程序的数据爬取技术及相关逆向分析技术。第7章介绍构建分布式网络爬虫系统所需的关键技术。第8章通过实战案例,展示分布式网络爬虫系统设计与实现的思路。通过学习本书,读者将显著提升网络爬虫系统的设计与实现能力,并增强对网页代码及移动端应用程序代码的逆向分析水平。
本书的内容不仅涵盖理论知识,还注重实践操作,适合广大网络爬虫程序开发爱好者阅读。同时,本书也适合作为培训机构和学校的教学参考用书。
张凯,中国科学院大学软件工程专业硕士,研究方向为操作系统虚拟化。毕业后先后在微策略和新浪微博工作,目前在粉笔科技技术开发部担任在线社区系统、爬虫平台和内容审核系统技术负责人。他在网络爬虫、高可用架构设计和文本分类领域有着深入的研究。此外,他还拥有计算机技术高级资格证书“系统分析师”,近五年内申请了4项发明专利,其中1项已获得授权,3项正在受理中。
第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
基本信息 | |
---|---|
出版社 | 清华大学出版社 |
ISBN | 9787302674849 |
条码 | 9787302674849 |
编者 | 张凯 编 |
译者 | -- |
出版年月 | 2024-11-01 00:00:00.0 |
开本 | 16开 |
装帧 | 平装 |
页数 | 292 |
字数 | 492000 |
版次 | 1 |
印次 | 1 |
纸张 | 一般胶版纸 |
暂无商品评论信息 [发表商品评论]
暂无商品咨询信息 [发表商品咨询]