如何处理网页中的图片验证码?
一些邮箱和留言版的验证码是图片,如果要自动处理,怎么识别?还有的网站的验证码是一道数学题3+2=?要输入才能提交信息,
唉~!真是会动脑筋!
[ 本帖最后由 adminauto 于 2008-5-6 10:28 编辑 ] 验证码的图片 要自动识别 目前要做到识别这点还很难
人家就是要防止你自动的工具 你们可以帮我解决下这个对你们来说很简单的问题吗? 网站的验证码是一道数学题3+2=? 这样的还可以想办法识别
图片验证码变态的就么办法了,如果图片验证码是标准的字体,字体颜色没有干扰或者图片背景没有干扰一般是可以识别的
像腾讯网页中的那个就太。。。。还是中文,,还不固定。。偶的神呀 昨天下载了一个DELPHI开发的小程序,可以识别字母、数字和一般干扰的东西,正在研究这个东西。 恩,这个目前估计很难做到。 这个问题没有好的解决办法,之前论坛上有人发过,但后来就行不通了,因为网站上的验证码越做越BT,比如腾讯网站里的验证码,变态到我们的眼睛都容易识别错误(想起就光火,有一次我真的连续错了三次),就更不要说靠软件了……
转贴一篇文章,不知大家觉得这个方法如何.
动态验证码图片的获取(显示) by gooker 2007年10月08日 星期一 上午 11:11有一些验证码直接显示不出来,但保存到剪切板里面了,只能保存到文件然后显示,配合au3的udf可以实现.
这里只是将图片显示在GUI上,只是显示,要得到真正的验证码难...
因为一般的验证码都是动态生成的,没办法直接保存图片然后显示图片,
这里实现了将页面显示的图片直接显示到GUI上,其他图片也是可以的.
;首先要得到网页里面某一个验证码图片/普通图片的对象
$oIE = _IECreate ("http://www.lxkj.cn/web/syvote_2/sydw_vote.asp")
$oImg = _IEImgGetCollection ($oIE, 13)
;下面是将图片复制到剪切板里面,下面部分属于DHTML,vb也是适合
$oPic = $oIE.Document.body.createControlRange()
$oPic.Add($oImg)
$oPic.execCommand("Copy")
;这里读出来的是图片在临时文件夹里面的地址
$bmp = ClipGet()
得到地址后就可以通过 GUICtrlCreatePic等函数显示出来,很简单不再赘述.
;;;;;;;;;;;;;;;;;;;;;;;下面是原来发在论坛的例子;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
一个小例子,在GUI里面显示网页内的图片,原本只是显示动态验证码图片的,不过对大多数图片都适合.
主要部分描述可以看这里
#include <IE.au3>
#include <GUIConstants.au3>
Dim $height,$width,$i=0
$oIE = _IECreate ("http://www.autoitx.com/index.php")
$oImgs = _IEImgGetCollection ($oIE)
MsgBox(0,"","这个页面有这么多PP: "&@extended&"个")
For $oImg In $oImgs
$i+=1
$height = $oImg.height
$width = $oImg.width
$oPic = $oIE.Document.body.createControlRange()
$oPic.Add($oImg)
$oPic.execCommand("Copy")
$img = ClipGet()
If $width<150 Then
GUICreate("第"&$i&"图片",150,$height,-1,-1,-1)
Else
GUICreate("第"&$i&"图片",$width,$height,-1,-1,-1)
EndIf
GUISetBkColor (0xFFFFFF)
GUISetState ()
$n=GUICtrlCreatePic($img,0,0,$width,$height)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then
GUIDelete()
ExitLoop
EndIf
Wend
Next 我来说个简单的验证码,看大家如何识别
http://www.pkland.net/img.php?key=1223954479358
可以改变后面的数字,验证码随机改变 原帖由 dingamao 于 2008-5-10 22:33 发表 http://www.autoitx.com/images/common/back.gif
这个问题没有好的解决办法,之前论坛上有人发过,但后来就行不通了,因为网站上的验证码越做越BT,比如腾讯网站里的验证码,变态到我们的眼睛都容易识别错误(想起就光火,有一次我真的连续错了三次),就更不要说靠 ...
情况就是这样,现在的验证字符都有很大的变形,所以难以用程序自动识别!
但有一点大家可能没有注意到,当你连点几次‘验证码看不清’的刷新后,验证码就会比较的好看了,这时再出动自动验证,成功率大升! 本帖最后由 jhkdqaa 于 2009-6-2 09:38 编辑
http://www.autoit.org.cn/column/zhongwenziliao/graphverify5.html
看了这个以后 已经可以吧验证码转化成为无干扰的点阵,问题是有的英文字母大小高度不一致.数字也是大小不一致,原作者的代码不支持不一样大小的验证码.在点阵识别上估计以后还要下功夫,以后再说了,初步想法我觉得那片文章的作者用的方法是:
计算点整每一列有多少个1或F,奇偶数分别为0或1.这样一个数字或字母至少有10来位的二进制代码.完全可以记录下来用于识别.人家还加上了自动选择最接近的的功能,问题是小菜我看不懂,最近又很忙,有没有高手写个,或是指点下我,大家可以写出来共享的.附上英文验证码点阵一个 补充下 是不变形 不乱飘的 非中文验证码,能识别咱总希望识别了不是. 不知什么东东,顶下先! 这应涉及数学的内容,要有相应的数学理论支持才行 很难搞定啊, 郁闷,,
页:
[1]
2