找回密码
 加入
搜索
查看: 8621|回复: 21

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

  [复制链接]
发表于 2008-5-5 23:58:43 | 显示全部楼层 |阅读模式
一些邮箱和留言版的验证码是图片,如果要自动处理,怎么识别?
还有的网站的验证码是一道数学题3+2=?要输入才能提交信息,
唉~!真是会动脑筋!

[ 本帖最后由 adminauto 于 2008-5-6 10:28 编辑 ]
发表于 2008-5-6 00:19:17 | 显示全部楼层
验证码的图片 要自动识别 目前要做到识别这点还很难
人家就是要防止你自动的工具
发表于 2008-5-6 00:21:40 | 显示全部楼层
你们可以帮我解决下这个对你们来说很简单的问题吗?
发表于 2008-5-6 20:38:41 | 显示全部楼层
网站的验证码是一道数学题3+2=? 这样的还可以想办法识别
图片验证码变态的就么办法了,如果图片验证码是标准的字体,字体颜色没有干扰或者图片背景没有干扰一般是可以识别的
像腾讯网页中的那个就太。。。。还是中文,,还不固定。。偶的神呀
 楼主| 发表于 2008-5-7 22:20:19 | 显示全部楼层
昨天下载了一个DELPHI开发的小程序,可以识别字母、数字和一般干扰的东西,正在研究这个东西。
发表于 2008-5-10 22:20:58 | 显示全部楼层
恩,这个目前估计很难做到。
发表于 2008-5-10 22:33:58 | 显示全部楼层
这个问题没有好的解决办法,之前论坛上有人发过,但后来就行不通了,因为网站上的验证码越做越BT,比如腾讯网站里的验证码,变态到我们的眼睛都容易识别错误(想起就光火,有一次我真的连续错了三次),就更不要说靠软件了……
发表于 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
发表于 2008-10-14 11:27:20 | 显示全部楼层
我来说个简单的验证码,看大家如何识别

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

可以改变后面的数字,验证码随机改变
发表于 2008-10-15 12:37:28 | 显示全部楼层
原帖由 dingamao 于 2008-5-10 22:33 发表
这个问题没有好的解决办法,之前论坛上有人发过,但后来就行不通了,因为网站上的验证码越做越BT,比如腾讯网站里的验证码,变态到我们的眼睛都容易识别错误(想起就光火,有一次我真的连续错了三次),就更不要说靠 ...

情况就是这样,现在的验证字符都有很大的变形,所以难以用程序自动识别!

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

评分

参与人数 1贡献 +2 收起 理由
lynfr8 + 2

查看全部评分

发表于 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来位的二进制代码.完全可以记录下来用于识别.人家还加上了自动选择最接近的的功能,问题是小菜我看不懂,最近又很忙,有没有高手写个,或是指点下我,大家可以写出来共享的.附上英文验证码点阵一个

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-6-2 09:42:47 | 显示全部楼层
补充下 是不变形 不乱飘的 非中文验证码,能识别咱总希望识别了不是.
发表于 2009-8-23 17:26:57 | 显示全部楼层
不知什么东东,顶下先!
发表于 2009-9-4 23:17:04 | 显示全部楼层
[b]这应涉及数学的内容,要有相应的数学理论支持才行
发表于 2009-9-20 13:02:05 | 显示全部楼层
很难搞定啊, 郁闷,,
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-22 14:22 , Processed in 0.084117 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表