带验证码页面的数据采集,这个需要具体分析,验证码的正确用法是,将服务器端生成的验证码文本保存起来,一般是Session里,或者数据库里等,将生成图片,跟一段Cookie(检索对应Session用的)发到客户端,针对这情况,你可以想办法做图片识别,一般可以用象素比对,不过多数情况还是无法识别的,这个你就需要将验证码图片显示出来,让用户输入后,再进行数据采集,具体操作类似上面讲的带密码的情况,关键是看返回的cookie.
当然有不少情况下,验证码只是虚设的,程序员可能把验证码文本直接明文放到Cookie里发回,我在用Asp时就常这么做,因为服务器很多情况下会丢失Session,当然你有自己的服务器,并且资源充足,那另当别论,保存到数据库又嫌麻烦.
另外有些验证码是图片拼接的,这个在一些老的系统上能找到,针对这个只要搞清文件名跟数字的对应关系就好.
我还见过一中,就是把验证码文本加一段其他数据MD5后放到Cookie里,验证时,将用户的输入跟指定数据一起MD5后与cookie里的数据比对,这种情况跟明文保存在cookie里是一样的,其实质是没有验证码.因为它不能避免回放攻击,即首先进行一次正常的请求,接着将着次请求的cookie,跟验证码信息记录下来(人工识别,如果能机器识别那就什么多不用说了!),下面就可以重复使用这组信息了.
最后安全的做法是将验证码保存到服务器端,Session,数据库里,每个验证码在比对后应该马上清除防止回放攻击.