首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

怎么抓取需要验证码的网页

2012-08-29 
如何抓取需要验证码的网页???? 最近专门研究了下网页抓取,主要是研究对各种情况的抓取方法。今天张瑜介绍下

如何抓取需要验证码的网页?

??? 最近专门研究了下网页抓取,主要是研究对各种情况的抓取方法。今天张瑜介绍下需要验证码的网页抓取。

???

??? 现在有些网页为了防止被抓取,它要求用户先填入验证码后,才能使用其服务。那我们的蜘蛛的工作就遇到了极大的障碍;因为它不能识别验证码!当然有同学说用OCR去识别,然后填入。这是个方向,但是总有些验证码是机器无法识别的。那我们怎么办?


??? 办法其实还是有,既然蜘蛛不能识别验证码;那我们就必须用人识别后告诉它。可行吗? 可行。众所周知,HTTP协议是无连接的协议,那么服务端判断客户端到底是否通过验证(成功输入验证码),一定是Browser传了点什么能代表自己身份的东西,比如cookie, 比如某个隐藏域的值等。既然如此,我们就可以人在网页上人工验证,然后把把与身份有关的信息找到(这个要具体情况具体分析,需要一些实验),最后把这些信息告诉蜘蛛;这样蜘蛛就可以继续冒名的去访问服务端,而服务端认为它已经通过验证,不需要再输入验证码了。


??? 该方法的主要思路就是回归事物的本源,不管你用什么方式实现的web服务,其根本都是http协议。具体方法论就是上面所述,实践也通过了。主要是要花时间找到能代码Browser身份的信息。注意,有些web server它对User Agent有过滤,有些User Agent明显是机器的,它们可能不会得到跟你在浏览器中返回的同样的内容;故有时候User Agent也需要设置。


??? 我使用java去做,会用到httpClient, 然后用Chrome去抓取http请求的信息。欢迎各位提出自己的见解。

?

----------------------------------

张瑜,Mybeautiful, zhangyu0182@sina.com

?

推荐阅读,

Java学习这七年??? 如何阅读源代码??? 我应该做的更差吗? 1 楼 AndyEverLie 2012-03-21   "具体情况具体分析"。。估计大公司的爬虫是智能而不是人工吧。。 2 楼 Mybeautiful 2012-03-21   AndyEverLie 写道"具体情况具体分析"。。估计大公司的爬虫是智能而不是人工吧。。
说实话还真没有研究过。理论上它们也不能知道具体的web程序到底是用什么信息去标示某个session的,不同的程序员都可以有自己的搞法;当然也有一些通用的惯例。
另外,我不认为它们的爬虫能处理验证码。 或者说一般需要验证码的东西,是不希望被别人轻易得到的(认为设置障碍),那么google,baidu它们也不必去爬它。

热点排行