adminauto 发表于 2008-5-5 23:58:43

如何处理网页中的图片验证码?

一些邮箱和留言版的验证码是图片,如果要自动处理,怎么识别?
还有的网站的验证码是一道数学题3+2=?要输入才能提交信息,
唉~!真是会动脑筋!

[ 本帖最后由 adminauto 于 2008-5-6 10:28 编辑 ]

5yun 发表于 2008-5-6 00:19:17

验证码的图片 要自动识别 目前要做到识别这点还很难
人家就是要防止你自动的工具

我是电脑 发表于 2008-5-6 00:21:40

你们可以帮我解决下这个对你们来说很简单的问题吗?

rho123 发表于 2008-5-6 20:38:41

网站的验证码是一道数学题3+2=? 这样的还可以想办法识别
图片验证码变态的就么办法了,如果图片验证码是标准的字体,字体颜色没有干扰或者图片背景没有干扰一般是可以识别的
像腾讯网页中的那个就太。。。。还是中文,,还不固定。。偶的神呀

adminauto 发表于 2008-5-7 22:20:19

昨天下载了一个DELPHI开发的小程序,可以识别字母、数字和一般干扰的东西,正在研究这个东西。

ollydbg 发表于 2008-5-10 22:20:58

恩,这个目前估计很难做到。

dingamao 发表于 2008-5-10 22:33:58

这个问题没有好的解决办法,之前论坛上有人发过,但后来就行不通了,因为网站上的验证码越做越BT,比如腾讯网站里的验证码,变态到我们的眼睛都容易识别错误(想起就光火,有一次我真的连续错了三次),就更不要说靠软件了……

tomwsx 发表于 2008-10-13 21:12:58

转贴一篇文章,不知大家觉得这个方法如何.

动态验证码图片的获取(显示) 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

bob 发表于 2008-10-14 11:27:20

我来说个简单的验证码,看大家如何识别

http://www.pkland.net/img.php?key=1223954479358

可以改变后面的数字,验证码随机改变

liongodmien 发表于 2008-10-15 12:37:28

原帖由 dingamao 于 2008-5-10 22:33 发表 http://www.autoitx.com/images/common/back.gif
这个问题没有好的解决办法,之前论坛上有人发过,但后来就行不通了,因为网站上的验证码越做越BT,比如腾讯网站里的验证码,变态到我们的眼睛都容易识别错误(想起就光火,有一次我真的连续错了三次),就更不要说靠 ...
情况就是这样,现在的验证字符都有很大的变形,所以难以用程序自动识别!

但有一点大家可能没有注意到,当你连点几次‘验证码看不清’的刷新后,验证码就会比较的好看了,这时再出动自动验证,成功率大升!

jhkdqaa 发表于 2009-6-2 09:37:23

本帖最后由 jhkdqaa 于 2009-6-2 09:38 编辑

http://www.autoit.org.cn/column/zhongwenziliao/graphverify5.html
看了这个以后 已经可以吧验证码转化成为无干扰的点阵,问题是有的英文字母大小高度不一致.数字也是大小不一致,原作者的代码不支持不一样大小的验证码.在点阵识别上估计以后还要下功夫,以后再说了,初步想法我觉得那片文章的作者用的方法是:
计算点整每一列有多少个1或F,奇偶数分别为0或1.这样一个数字或字母至少有10来位的二进制代码.完全可以记录下来用于识别.人家还加上了自动选择最接近的的功能,问题是小菜我看不懂,最近又很忙,有没有高手写个,或是指点下我,大家可以写出来共享的.附上英文验证码点阵一个

jhkdqaa 发表于 2009-6-2 09:42:47

补充下 是不变形 不乱飘的 非中文验证码,能识别咱总希望识别了不是.

wyd301 发表于 2009-8-23 17:26:57

不知什么东东,顶下先!

cat129 发表于 2009-9-4 23:17:04

这应涉及数学的内容,要有相应的数学理论支持才行

songtao 发表于 2009-9-20 13:02:05

很难搞定啊, 郁闷,,
页: [1] 2
查看完整版本: 如何处理网页中的图片验证码?