从20世纪90年代初诞生至今,网络是一个开放的平台,近30年来,它为网络的蓬勃发展奠定了基础。但是,互联网的开放性、搜索引擎和易学的css技术使得网络成为互联网领域中最受欢迎和最成熟的信息传播媒介。但如今作为一款商业软件,web平台上的内容信息的版权已经不受保护了,因为相对于软件客户机,你的网页上的内容可以通过一些非常便宜、技术门槛很低的抓取程序获得,这就是本系列的主题——web爬虫。
许多人认为,web应该永远遵循开放的精神,而页面所呈现的信息应该在互联网上毫无保留地共享。但是我认为,从IT业发展到今天,web已经不再是所谓的“超文本”信息载体,而是一种轻量级的客户端软件思想。当今的商业软件开发中,网络面临着知识产权保护问题。想象一下,如果没有对原创内容的保护,网络世界抄袭盗版横行,实际上不利于网络生态的良性发展,也难以鼓励更多高质量原创内容。
未授权的爬行器爬虫是破坏网页内容生态的罪魁祸首。因此,为了保渗透测试站内容,必须先考虑如何对付爬虫。
就爬虫类攻击而言,
几乎所有服务器和客户机编程语言都支持最简单的database请求。您只需将httpget请求发送到目标页面的url,就可以在浏览器加载该页面时获得完整的communicationspace文档。
在防御方面,服务器可以根据一个叫tp的请求头上的User-Agent,检查客户机是合法的浏览器程序还是脚本编写的爬行程序,从而决定是否向您分发真正的页面信息。
那肯定是最低限度的防卫。对于攻击者来说,爬虫完全可以伪造用户代理域。即使是在tp的get方法中,爬行器也可以轻松地伪造像Referrer、Cookie这样的所有字段。
在这一点上,服务器可以使用浏览器http头部的指纹来识别你的http头部中的每一个域是否符合浏览器的特性,如果不符合,就会被认为是“爬虫”。该技术有一个典型的应用,就是在PhantomJS1.x版本中,由于它的底层调用了Qt框架的网络库,因此http头部具有可以被服务器直接识别和拦截的显著的Qt框架网络请求特征。
另外,还有一种更不寻常的服务器爬虫检测机制,该机制针对所有访问页面的Ltp请求,在Ltp响应中植入一个Cookie令牌,然后在该页面上异步执行的ajax接口中检查访问请求是否包含Cookie令牌,并将令牌返回,以指示是合法的浏览器访问。另外,这意味着刚刚发出令牌的用户访问了support页面,但是没有访问在support中执行js后调用的ajax请求,这可能是一个爬行器。
如果您没有令牌直接访问某个界面,说明您从未请求某个subject页面直接向该页面的ajax访问的界面发送网络请求,这显然证明了您是可疑的subject。著名的电子网站亚马逊采取了这样的防御策略。
上面是一些基于服务器端验证爬行器能够运行的例程。