首页>参考读物>计算机科学与技术>安全

Webbots、Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)
作者 : (美)Michael Schrenk 著
译者 : 张磊 沈鑫 译
丛书名 : 华章程序员书库
出版日期 : 2013-04-28
ISBN : 978-7-111-41768-2
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 298
开本 : 16
原书名 : Webbots, Spiders, and Screen Scrapers: A Guide to Developing Internet Agents with PHP/CURL
原出版社: No Starch Press
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

大数据时代,网络上可供利用的数据信息越来越丰富,如果能利用网络机器人来自动收集和处理有价值的数据,将帮助企业获得商业上的战略优势,本书详细讲解如何设计和开发高效、强大的网络机器人来帮助企业达到这一目的。本书作者在该领域有着深入的研究和丰富的实战经验,他系统地讲解了如何设计和开发智能且健壮的网络机器人,为需要掌握相关知识的读者提供全面而实用的指导。

主要内容:
如何下载整个网站。
如何解码加密的网站,解锁需要认证的网页。
管理cookie的高级方法。
有效解析数据的方法。
如何管理网络机器人生成的大规模数据。
一旦相关信息更新,就发送邮件或短消息进行通知。
利用网上不同数据源来分析数据。
如何在网店进行自动购买、抢购、秒杀等活动。
如何从政策层面规避网络机器人给我们带来的麻烦。
如何设计出悄然运行而不被发现的网络机器人。
如何部署和规划网络机器人的行动。
如何设计一个让网络机器人青睐的网站。
如何编写健壮的、容错的、当网络内容发生改变也不会出问题的网络机器人。
作者简介
Michael Schrenk 资深网络安全专家和软件开发专家,在网络机器人领域有15年的研究和开发经验,他的工作足迹从美国的硅谷到莫斯科,曾服务于BBC、政府机构、世界500强等很多企业和机构,积累了丰富的实战经验。他还是著名培训讲师和演讲嘉宾,曾多次在国际顶级安全技术大会Defcon上发表演讲,深受欢迎。

译者简介
张磊 资深系统架构设计者,曾任职于雅虎软件研发(北京)有限公司,从事Sponsored Search离线算法模块的开发工作,之后任职于爱奇艺,曾负责数据平台、广告数据算法、搜索系统、推荐系统等多个技术团队。
沈鑫 资深网络工程师,热衷于网络安全技术的应用与实践,乐于技术分享,曾任“52破解论坛”版主、“赏金论坛”加壳与脱壳区版主。

图书前言

作者接触万维网是从接触浏览器开始的。当时使用的第一款浏览器是Mosaic,由Eric Bina和Marc Andreessen所开创。  Andreessen后来与人共同创办了Netscape(网景公司)和Loudcloud公司。
  1995年接触万维网后不久,作者就非常好奇,如此丰富多彩的互联网具有如此简洁的浏览器。浏览器不仅仅是一款使用万维网的工具,它仿佛就是万维网本身,它是新的电视机!正如电视机使用简单的频道旋钮和音量旋钮遥控器来远程操控一样,浏览器利用超链接、书签和后退按钮隐藏互联网的复杂性。
老派的“客户端-服务器”技术
  当作者认识到并不需要使用浏览器来查看网页的时候,伟大的发现时刻来临了。作者发现了Telnet,这款20世纪80年代早期就开始用来与网络上的计算机进行通信的程序,也可以用来下载网页。作者发现浏览器的背后并不神秘,下载网页与现有的从网络计算机上请求信息的方法并无二致。
  突然间,万维网成了不需要浏览器也能够理解的东西,它就是一个熟悉的“客户端-服务器”架构。在这个架构里,简单的客户端访问远程服务器上的文件,区别在于这里的客户端即是浏览器,服务器发送网页供浏览器来展示。
  浏览器唯一的革命性在于,不像Telnet,它让每个人用起来都很方便。易用性和过度扩张的内容规模使浏览器迅速获得了大众的认可。浏览器的出现使互联网的用户由科学家和计算机程序员过渡为普通大众,这些人并不理解计算机网络是如何工作的。遗憾的是,普通人不明白“客户端-服务器”协议的简单性,所以对浏览器的依赖便愈发严重。他们不知道还存在其他的方式来使用万维网,并且这些方式很可能是更有趣的。
  作为一个程序员,作者意识到如果能够使用Telnet来下载网页,那么作者也可以通过编写程序来做同样的事情。如果作者愿意,还可以编写自己的浏览器!又或者,可以编写自动化的代理程序(指Webbot、Spider、ScreenScrapers,即网络机器人、蜘蛛程序以及抓屏器)来解决浏览器所不能解决的问题。
浏览器的问题
  浏览器的基本问题是,它们是手动的工具。浏览器只是下载并展示网页——即便你已经看到它包含的信息,你仍然需要判断它是不是你想要的;或者说你必须判断要不要去点击一个链接打开另一个网页。更糟糕的是,浏览器本身不会思考。当有重要的网络事件发生的时候它不能通知你。当然它也不能预知你的行为,例如自动填写表格、购物、或者为你下载文件。为了实现这些功能,需要网络机器人的自动功能和智能。一旦发现浏览器固有的局限性,你就会看到,网络机器人开发者的机遇来到了,并且有着无限的前景。
本书主要内容
  本书阐明浏览器的局限性,并探索如何利用网络机器人来打破这些局限性。本书通过示例脚本程序和项目来介绍如何设计并编写网络机器人程序。本书还解答下面这些关于设计的问题:
  网络机器人项目的创意是从哪里来的?
  怎样能够在享受网络机器人带来的乐趣的同时又不惹麻烦?
  是否有可能写出来能不声不响地运行而不被人发现的网络机器人?
  编写健壮的、容错的、当网络内容发生改变也不会出问题的网络机器人的技巧是什么?
从作者犯过的错误中学习
  作者从事编写网络机器人、蜘蛛程序以及抓屏器的工作已经有15年的时间了。在这个过程中作者犯了许多错误。因为网络机器人有能力对网站做出非常规的请求,系统管理员可能无法将网络机器人的请求和黑客攻击者的行为区分开来。还好,作者还没犯过让自己需要对簿公堂的错误,但是也招致了威胁电话、恐吓邮件,以及非常尴尬的时刻。让人快乐的是,作者从这些境遇中学到了很多,面对一个愤怒的系统管理员这样的事情已经是很久很久之前了。通过阅读作者的故事,从作者的错误中学习,读者可以避免许多痛苦。
掌握网络机器人技术
  读者将学习到编写多种网络机器人的技能,包括:
  按部就班地下载整个网站。
  解码加密的网站。
  解锁需要认证的网页。
  管理cookie。
  解析数据。
  编写蜘蛛程序。
  管理网络机器人生成的大规模数据。
利用已有的脚本
  本书用了几个代码库,可以使读者编写网络机器人、蜘蛛程序和抓屏器更加容易。这些库里的函数和声明为本书所用的大部分示例脚本提供了基础。使用这些库将节约读者的时间,因为它们做了底层的工作,仅把更高层次的规划和开发工作留给读者。所有这些库都可以从本书的网站上下载到。
关于本书的官方网站
  这本书的官方网站(http://www.WebbotsSpidersScreenScrapers.com)是一个附加资源。书中所有的示例项目尽可能地使用这个网站作为抓取目标,或者作为资源供读者的网络机器人下载或采取其他操作。这些目标提供了一成不变的环境供读者锻炼编写网络机器人的技巧。有一个可控的学习环境是重要的,因为不管我们多么努力,当目标网站变化的时候,网络机器人都可能会失败。知道目标网站不会改变会让调试变得更为简单。
  这个网站上也有一些链接指向相关的网站,包括白皮书、图书更新信息、以及读者能够和其他网络机器人开发者进行沟通的一个区域(请看图1)。在这个网站上,读者还可以获取本书中用到的所有代码库。
关于本书代码
  本书中的大部分代码是纯PHP。然而,有时候PHP和HTML在同一个脚本中混用,并且很多情况下它们是在同一行里面。在这些情况下,PHP代码会以粗体的样式与HTML代码区分开来,如代码清单1所示。
代码清单1 以粗体形式把PHP代码与HTML代码区分开

  读者可以以个人目的使用本书中的任意脚本,只要读者不会再次发布它们。如果读者使用了本书中的脚本,你要为它的使用和执行担负所有责任,并且不得在任何情况下售卖或开发相关的产品。然而,如果读者改进了一份脚本或者开发了全新的(相关的)脚本,那么非常欢迎通过本书的网站与网络机器人社区分享。
  另外,示例脚本是以教学为目的的。这些脚本可能不会反映最高效的编程方法,因为编写它们的首要目的是为了可读性。
注意:本书使用的代码库受W3C代码监控和许可(http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231),并能够从本书的网站上下载到。软件的维护也在该网站上进行。如果读者对这份代码做出了有意义的贡献,请到网站查看你的改进可能会以何种方式成为下一个发行版的一部分。本书所展示的软件示例受本书的版权保护。
阅读本书的要求
  要理解本书所讲的技术,需要了解HTML和基本的互联网工作原理,仅有一点点计算机网络经验的编程新手也可以阅读本书。然而还有一条要强调,本书不会教你编程方法或者互联网协议TCP/IP的原理。
硬件
  读者不需要准备精密的硬件设备来开始编写网络机器人程序,一台二手电脑也很可能已经具备了运行书中示例的最低要求。如下任意一款设备都足以使用本书中的示例项目和数据:
  一台使用Windows XP、Windows Vista或者Windows 7操作系统的个人电脑。
  任意基于Linux、UNIX或者FreeBSD的计算机。
  一台运行OS X(或者更新的系统)的苹果电脑。
  电脑需要充足的存储空间,特别是当读者计划编写蜘蛛程序或者自助网络机器人的时候。如果下载过多的文件,会消耗掉所有可用资源(特别是硬盘驱动器)。
软件
  为了方便,书中的软件示例使用PHP、cURL和MySQL。所有这些软件都可以在网站上免费下载。除了免费,这些软件包还具有良好的可移植性,能够在多种计算机和操作系统下良好地运行。
  注意:如果读者计划使用本书中的示例脚本,需要具有PHP的基本知识,并会编程。
互联网连接
  有互联网连接是很方便的,但并不是必需的。如果读者没有网络连接,可以通过安装Apache来创建自己的局域网(在一个私有网络里的一到多个网站服务器)。如果连这个也无法做到,可以使用本地的文件作为程序操作的目标。然而,这两种方式都不如编写使用在线网络连接的网络机器人更加有趣。另外,如果没有网络连接,读者将无法访问在线资源,而这些资源对你的学习是很有帮助的。
声明(这很重要)
  不管读者开发什么,你都必须为自己开发程序的行为负责。从技术的角度讲,一个有益的网络机器人与一个破坏性的网络机器人并无区别,主要的区别在于开发者的意图(以及把脚本调试得怎么样)。因此,是使用本书的知识去做遵纪守法的具有建设性的事情,还是用它去做一些会惹来麻烦甚至违法犯罪的事情,这完全取决于读者。如果读者真的干了什么坏事,可别打电话去找作者。
  请参考第31章去了解如何编写符合道德的网络机器人。第31章会给你一些帮助信息,但不是法律咨询。如果读者有这方面的问题,请在付诸实践之前找位律师谈谈。

上架指导

计算机\程序设计

封底文字

大数据时代,网络上可供利用的数据信息越来越丰富,如果能利用网络机器人来自动收集和处理有价值的数据,将帮助企业获得商业上的战略优势,本书则详细讲解如何设计和开发高效、强大的网络机器人来帮助企业达成这一目的。本书作者在该领域有着深入的研究和丰富的实战经验,系统地讲解了如何设计和开发智能且健壮的网络机器人的方法,能为需要掌握相关知识的读者提供全面而实用的指导。

主要内容:
? 如何下载整个网站。
? 如何解码加密的网站,解锁需要认证的网页。
? 管理cookie的高级方法。
? 有效解析数据的方法。
? 如何管理网络机器人生成的大规模数据。
? 一旦相关信息更新,就发送邮件或短消息通知。
? 通过网上不同数据源来分析数据。
? 在网店进行自动购买、抢购、秒杀等活动。
? 如何从政策层面规避网络机器人给我们带来的麻烦?
? 如何设计出不声不响地运行而不被人发现的网络机器人。
? 如何部署和规划网络机器人的行动。
? 如何设计一个让网络机器人青睐的网站。
? 如何编写健壮的、容错的、当网络内容发生改变也不会出问题的网络机器人。

作者简介

(美)Michael Schrenk 著:暂无简介

译者简介

张磊 沈鑫 译:暂无简介

译者序

在战争之中若能做到知己知彼,则能百战而不殆;在诡谲多变的商业竞争中也是一样,总是掌握信息更多的一方更容易取胜。如今互联网已成为最重要的信息源,但是从互联网上获得竞争优势的公司仍然少得可怜。不知道仍有多少老板苦于不了解行业信息,以至于有许多决策是在信息黑暗之中拍脑袋做出的。这本书正是希望教会读者如何从互联网上获取各种数据,仅使用PHP语言和相关的库函数,简单而又能自动化。
  有一些编程基础和HTTP基础就可以顺畅地阅读本书了,了解过PHP则会更好一些。抓取网页、提取数据、管理数据、模拟表单请求、模拟登录、管理cookie等,这些网络机器人的基本问题都能够从本书中找到答案。当你能综合这些技能用于获取互联网上的信息,你会猛然发现自己掌握了一个多么强大的工具,自己已经成为公司的一股核心竞争力了。
  还有一点需要特别说明的是,网络机器人不是一种可以随意使用的技术。我们在网络上的行为需要有礼貌,不能侵犯隐私,不能随意使用有版权的数据。关于这一点作者在书中有多次交代,也希望读者能够重视和遵守。
  本书从开始到第二部分结束,由张磊翻译;第三部分开始到最后,由沈鑫翻译。吴怡编辑仔细校对了全书,向她表示感谢。
  如果读者在阅读的过程中遇到技术方面的疑问,欢迎发邮件给webbotsbook@gmail.com,沈鑫和我将会尽力给予解答。由于译者的水平和精力有限,译稿之中难免出现疏漏之处,希望读者能给予谅解,并给我们发邮件指正问题。勘误表将发布在本书中文版官方网站上,并不断更新:www.webbotsbook.com。

张 磊
2013年元宵夜,于北京

图书目录

译者序
前言
第一部分 基础概念和技术
第1章 本书主要内容3
1.1 发现互联网的真正潜力3
1.2 对开发者来说3
1.2.1 网络机器人开发者是紧缺人才4
1.2.2 编写网络机器人是有趣的4
1.2.3 网络机器人利用了“建设性黑客”技术4
1.3 对企业管理者来说5
1.3.1 为业务定制互联网5
1.3.2 充分利用公众对网络机器人的经验不足5
1.3.3 事半功倍6
1.4 结论6
第2章 网络机器人项目创意7
2.1 浏览器局限性的启发7
2.1.1 聚合并过滤相关信息的网络机器人7
2.1.2 解释在线信息的网络机器人8
2.1.3 个人代理网络机器人9
2.2 从疯狂的创意开始9
2.2.1 帮助繁忙的人解脱10
2.2.2 自动执行,节省开支10
2.2.3 保护知识产权10
2.2.4 监视机会11
2.2.5 在网站上验证访问权限11
2.2.6 创建网上剪报服务11
2.2.7 寻找未授权的Wi-Fi网络12
2.2.8 跟踪网站技术12
2.2.9 让互不兼容的系统通信12
2.3 结论13
第3章 下载网页14
3.1 当它们是文件,而不是网页14
3.2 用PHP的内置函数下载文件15
3.2.1 用fopen()和fgets()下载文件15
3.2.2 用file()函数下载文件17
3.3 PHP/CURL库介绍18
3.3.1 多种传输协议18
3.3.2 表单提交19
3.3.3 基本认证技术19
3.3.4 cookie19
3.3.5 重定向19
3.3.6 代理名称欺诈19
3.3.7 上链管理20
3.3.8 套接字管理20
3.4 安装PHP/CURL20
3.5 LIB_http库21
3.5.1 熟悉默认值21
3.5.2 使用LIB_http21
3.5.3 了解更多HTTP标头信息24
3.5.4 检查LIB_http的源代码25
3.6 结论25
第4章 基本解析技术26
4.1 内容与标签相混合26
4.2 解析格式混乱的HTML文件26
4.3 标准解析过程27
4.4 使用LIB_parse库27
4.4.1 用分隔符分解字符串:split_string()函数27
4.4.2 提取分隔符之间的部分:return_between()函数28
4.4.3 将数据集解析到数组之中:parse_array()函数29
4.4.4 提取属性值:get_attribute()函数30
4.4.5 移除无用文本:remove()函数32
4.5 有用的PHP函数32
4.5.1 判断一个字符串是否在另一个字符串里面32
4.5.2 用一个字符串替换另一个字符串中的一部分33
4.5.3 解析无格式文本33
4.5.4 衡量字符串的相似度34
4.6 结论34
4.6.1 别相信编码混乱的网页34
4.6.2 小步解析35
4.6.3 不要在调试的时候渲染解析结果35
4.6.4 少用正则表达式35
第5章 使用正则表达式的高级解析技术36
5.1 模式匹配——正则表达式的关键36
5.2 PHP的正则表达式类型36
5.2.1 PHP正则表达式函数37
5.2.2 与PHP内置函数的相似之处38
5.3 从例子中学习模式匹配39
5.3.1 提取数字39
5.3.2 探测字符串序列39
5.3.3 字母字符匹配40
5.3.4 通配符匹配40
5.3.5 选择匹配41
5.3.6 分组和范围匹配的正则表达式41
5.4 与网络机器人开发者相关的正则表达式41
5.4.1 提取电话号码42
5.4.2 下一步学习什么45
5.5 何时使用正则表达式46
5.5.1 正则表达式的长处46
5.5.2 模式匹配用于解析网页的劣势46
5.5.3 哪个更快,正则表达式还是PHP的内置函数48
5.6 结论48
第6章 自动表单提交49
6.1 表单接口的反向工程50
6.2 表单处理器、数据域、表单方法和事件触发器50
6.2.1 表单处理器50
6.2.2 数据域51
6.2.3 表单方法52
6.2.4 多组件编码54
6.2.5 事件触发器54
6.3 无法预测的表单55
6.3.1 JavaScript能在提交之前修改表单55
6.3.2 表单HTML代码通常无法阅读55
6.3.3 cookie在表单里不存在,却会影响其操作55
6.4 分析表单55
6.5 结论59
6.5.1 不要暴露身份59
6.5.2 正确模拟浏览器59
6.5.3 避免表单错误60
第7章 处理大规模数据61
7.1 组织数据61
7.1.1 命名规范61
7.1.2 在结构化文件里存储数据62
7.1.3 在数据库里存储文本数据64
7.1.4 在数据库里存储图片66
7.1.5 用数据库,还是用文件系统68
7.2 减小数据规模68
7.2.1 保存图片文件的地址68
7.2.2 压缩数据68
7.2.3 移除格式信息71
7.3 生成图片的缩略图72
7.4 结论73
第二部分 网络机器人项目
第8章 价格监控网络机器人77
8.1 目标网站77
8.2 设计解析脚本78
8.3 初始化以及下载目标网页79
8.4 进一步探讨83
第9章 图片抓取网络机器人84
9.1 图片抓取网络机器人例子84
9.2 创建图片抓取网络机器人85
9.2.1 二进制安全下载过程86
9.2.2 目录结构87
9.2.3 主脚本87
9.3 进一步探讨90
9.4 结论90
第10章 链接校验网络机器人91
10.1 创建链接校验网络机器人91
10.1.1 初始化网络机器人并下载目标网页92
10.1.2 设置页面基准92
10.1.3 提取链接93
10.1.4 运行校验循环93
10.1.5 生成URL完整路径93
10.1.6 下载全链接路径94
10.1.7 展示页面状态95
10.2 运行网络机器人95
10.2.1 LIB_http_codes96
10.2.2 LIB_resolve_addresses96
10.3 进一步探讨97
第11章 搜索排名检测网络机器人98
11.1 搜索结果页介绍99
11.2 搜索排名检测网络机器人做什么工作100
11.3 运行搜索排名检测网络机器人100
11.4 搜索排名检测网络机器人的工作原理101
11.5 搜索排名检测网络机器人脚本101
11.5.1 初始化变量102
11.5.2 开始循环102
11.5.3 获取搜索结果103
11.5.4 解析搜索结果103
11.6 结论106
11.6.1 对数据源要厚道106
11.6.2 搜索网站对待网络机器人可能会不同于浏览器106
11.6.3 爬取搜索引擎不是好主意106
11.6.4 熟悉Google API107
11.7 进一步探讨107
第12章 信息聚合网络机器人108
12.1 给网络机器人选择数据源108
12.2 信息聚合网络机器人举例109
12.2.1 熟悉RSS源109
12.2.2 编写信息聚合网络机器人111
12.3 给信息聚合网络机器人添加过滤机制114
12.4 进一步探讨115
第13章 FTP网络机器人116
13.1 FTP网络机器人举例116
13.2 PHP和FTP118
13.3 进一步探讨119
第14章 阅读电子邮件的网络机器人120
14.1 POP3协议120
14.1.1 登录到POP3邮件服务器120
14.1.2 从POP3邮件服务器上读取邮件121
14.2 用网络机器人执行POP3命令123
14.3 进一步探讨125
14.3.1 电子邮件控制的网络机器人125
14.3.2 电子邮件接口125
第15章 发送电子邮件的网络机器人127
15.1 电子邮件、网络机器人以及垃圾邮件127
15.2 使用SMTP和PHP发送邮件128
15.2.1 配置PHP发送邮件128
15.2.2 使用mail()函数发送电子邮件129
15.3 编写发送电子邮件通知的网络机器人130
15.3.1 让合法的邮件不被过滤掉132
15.3.2 发送HTML格式的电子邮件132
15.4 进一步探讨134
15.4.1 使用回复邮件剪裁访问列表134
15.4.2 使用电子邮件作为你的网络机器人运行的通知134
15.4.3 利用无线技术134
15.4.4 编写发送短信的网络机器人135
第16章 将一个网站转变成一个函数136
16.1 编写一个函数接口136
16.1.1 定义函数接口137
16.1.2 分析目标网页137
16.1.3 使用describe_zipcode()函数140
16.2 结论141
16.2.1 资源分发142
16.2.2 使用标准接口142
16.2.3 设计定制的轻量级“Web服务”142
第三部分 高级设计技巧
第17章 蜘蛛145
17.1 蜘蛛的工作原理145
17.2 蜘蛛脚本示例146
17.3 LIB_simple_spider149
17.3.1 harvest_links()149
17.3.2 archive_links()149
17.3.3 get_domain()150
17.3.4 exclude_link()150
17.4 使用蜘蛛进行实验152
17.5 添加载荷152
17.6 进一步探讨153
17.6.1 在数据库中保存链接153
17.6.2 分离链接和载荷153
17.6.3 在多台计算机上分配任务153
17.6.4 管理页面请求154
第18章 采购机器人和秒杀器155
18.1 采购机器人的原理155
18.1.1 获取采购标准155
18.1.2 认证买家155
18.1.3 核对商品156
18.1.4 评估购物触发条件156
18.1.5 执行购买157
18.1.6 评估结果157
18.2 秒杀器的原理157
18.2.1 获取采购标准158
18.2.2 认证竞拍者158
18.2.3 核对拍卖商品158
18.2.4 同步时钟158
18.2.5 竞价时间159
18.2.6 提交竞价160
18.2.7 评估结果160
18.3 测试自己的网络机器人和秒杀器160
18.4 进一步探讨160
18.5 结论161
第19章 网络机器人和密码学162
19.1 设计使用加密的网络机器人162
19.1.1 SSL和PHP内置函数163
19.1.2 加密和PHP/CURL163
19.2 网页加密的简要概述163
19.3 结论164
第20章 认证165
20.1 认证的概念165
20.1.1 在线认证的类型165
20.1.2 用多种方式加强认证166
20.1.3 认证和网络机器人166
20.2 示例脚本和实践页面166
20.3 基本认证167
20.4 会话认证168
20.4.1 使用cookie会话的认证169
20.4.2 使用查询会话进行认证172
20.5 结论174
第21章 高级cookie管理175
21.1 cookie的工作原理175
21.2 PHP/CURL和cookie177
21.3 网络机器人设计中面临的cookie难题178
21.3.1 擦除临时性cookie178
21.3.2 管理多用户的cookie178
21.4 进一步探讨179
第22章 计划运行网络机器人和蜘蛛180
22.1 为网络机器人配置计划任务180
22.2 Windows XP任务调度程序181
22.2.1 计划网络机器人按日运行181
22.2.2 复杂的计划182
22.3 Windows 7任务调度程序184
22.4 非日历事件触发器186
22.5 结论188
22.5.1 如何决定网络机器人的最佳运行周期188
22.5.2 避免单点故障188
22.5.3 在计划中加入变化性188
第23章 使用浏览器宏抓取怪异的网站189
23.1 高效网页抓取的阻碍190
23.1.1 AJAX190
23.1.2 怪异的JavaScript和cookie行为190
23.1.3 Flash190
23.2 使用浏览器宏解决网页抓取难题191
23.2.1 浏览器宏的定义191
23.2.2 模拟浏览器的终极网络机器人191
23.2.3 安装和使用iMacros191
23.2.4 创建第一个宏192
23.3 结论197
23.3.1 宏的必要性197
23.3.2 其他用途197
第24章 修改iMacros198
24.1 增强iMacros的功能198
24.1.1 不使用iMacros脚本引擎的原因198
24.1.2 创建动态宏199
24.1.3 自动装载iMacros202
24.2 进一步探讨204
第25章 部署和扩展205
25.1 一对多环境205
25.2 一对一环境206
25.3 多对多环境206
25.4 多对一环境206
25.5 扩展和拒绝服务攻击207
25.5.1 简易的网络机器人也会产生大量数据207
25.5.2 目标的低效207
25.5.3 过度扩展的弊端207
25.6 创建多个网络机器人的实例208
25.6.1 创建进程208
25.6.2 利用操作系统208
25.6.3 在多台计算机上分发任务208
25.7 管理僵尸网络209
25.8 进一步探讨215
第四部分 拓展知识
第26章 设计隐蔽的网络机器人和蜘蛛219
26.1 设计隐蔽网络机器人的原因219
26.1.1 日志文件219
26.1.2 日志监控软件222
26.2 模拟人类行为实现隐蔽222
26.2.1 善待资源222
26.2.2 在繁忙的时刻运行网络机器人222
26.2.3 在每天不同时刻运行网络机器人223
26.2.4 不要在假期和周末运行网络机器人223
26.2.5 使用随机的延迟时间223
26.3 结论223
第27章 代理226
27.1 代理的概念226
27.2 虚拟世界中的代理226
27.3 网络机器人开发者使用代理的原因226
27.3.1 使用代理实现匿名227
27.3.2 使用代理改变位置229
27.4 使用代理服务器229
27.4.1 在浏览器中使用代理229
27.4.2 通过PHP/CURL使用代理230
27.5 代理服务器的类型230
27.5.1 公共代理230
27.5.2 Tor232
27.5.3 商业代理234
27.6 结论234
27.6.1 匿名是过程,不是特性234
27.6.2 创建自己的代理服务235
第28章 编写容错的网络机器人236
28.1 网络机器人容错的类型236
28.1.1 适应URL变化236
28.1.2 适应页面内容的变化240
28.1.3 适应表单的变化242
28.1.4 适应cookie管理的变化243
28.1.5 适应网络中断和网络拥堵243
28.2 错误处理器244
28.3 进一步探讨245
第29章 设计受网络机器人青睐的网站246
29.1 针对搜索引擎蜘蛛优化网页246
29.1.1 定义明确的链接246
29.1.2 谷歌轰炸和垃圾索引247
29.1.3 标题标签247
29.1.4 元标签247
29.1.5 标头标签248
29.1.6 图片的alt属性248
29.2 阻碍搜索引擎蜘蛛的网页设计技巧248
29.2.1 JavaScript249
29.2.2 非ASCII内容249
29.3 设计纯数据接口249
29.3.1 XML249
29.3.2 轻量级数据交换251
29.3.3 简单对象访问协议253
29.3.4 表征状态转移254
29.4 结论255
第30章 消灭蜘蛛256
30.1 合理地请求256
30.1.1 创建服务协议条款257
30.1.2 使用robots.txt文件257
30.1.3 使用robots元标签258
30.2 创造障碍258
30.2.1 选择性地允许特定的网页代理259
30.2.2 使用混淆259
30.2.3 使用cookie、加密、JavaScript和重定向259
30.2.4 认证用户260
30.2.5 频繁升级网站260
30.2.6 在其他媒体中嵌入文本260
30.3 设置陷阱261
30.3.1 创建蜘蛛陷阱261
30.3.2 处理不速之客的方法261
30.4 结论262
第31章 远离麻烦263
31.1 尊重264
31.2 版权264
31.2.1 请善用资源264
31.2.2 不要纸上谈兵265
31.3 侵犯动产267
31.4 互联网法律268
31.5 结论269
附录A PHP/CURL参考270
附录B 状态码277
附录C 短信网关280

教学资源推荐
作者: 林璟锵 郑昉昱 王伟 刘哲 王琼霄 著
作者: 蔡晶晶 李炜 主编
作者: 邹德清 代炜琦 金海 著
作者: [美]理查德 E. 布拉胡特(Richard E. Blahut)著
参考读物推荐
作者: 封面署名:黄连金 吴思进 曹锋 季宙栋 等编著扉页署名:黄连金 吴思进 曹锋 季宙栋 马臣云 达摩 李恩典 徐浩铭 翁俊杰 编著
作者: 大学霸IT达人 编著
作者: (美)Marcus Goncalves Steven A.Brown