今天发现了网上有地方可以对4月18日后的列车时刻表进行查询了,于是想抓它的数据库,扫描后,没有发现服务器的漏洞,只好作一个网页机器人来抓网。
老规矩用:xmlhttp,打开数据页面对里面的网页结构后,就开始动手,用字串处理函数分解网页中所要的数据。花了不知道多少个小时的时间,才搞定。到最后一步,显示指定车次的详细信息的时候,发现了问题:对方有反盗链的拓施,只要一去请求这个页面,它就会自动跳转到网站的首页,方案眼看宣布失败。
突然想起,反盗链措施是基于对Referer的检查的,也就是引用页,而通常的下载工具都有这个功能,这说明这个引用是可以人工制造的,我想在XMLHTTP里面也应该要有这个功能。查了MSDN(虽然偶E文巨烂,可是一个MSDN是难不倒我的,哈哈)后发现XMLHTTP里面有一个setRequestHeader方法,使用Http.setRequestHeader "Referer",URL这种方式,就可以制造一个引用,然后抓取,哈哈,成功了!
经过一会儿的测试后,发现效果还不错,只可惜速度有点慢(这个和远程服务器速度,网速,本地服务器速度都有关系)。
测试网址是:
http://202.117.83.12/xsc/service/train/search2.asp