找回密码
 加入
搜索
查看: 9776|回复: 33

嵌套网页无缓存图片验证码识别

 火... [复制链接]
发表于 2010-1-30 13:30:49 | 显示全部楼层 |阅读模式
本帖最后由 hackiller 于 2010-1-31 09:43 编辑

http://www.10010.com/login.jsp页面的
图片链接
http://www.10010.com/getImage.jsp
                $ogetiamge = _IEFrameGetObjByName($oIE, 'ifm_WebCheckCode')

                $oImgs = _IEImgGetCollection($ogetiamge)
                For $oImg In $oImgs
                        $i += 1
                        If $oImg.src = "http://www.10010.com/getImage.jsp" Then
                                $oPic = $ogetiamge.Document.body.createControlRange()
                                $oPic.Add($oImg)
                                $oPic.execCommand("Copy")
                                $img = ClipGet()
                        EndIf
                Next
                _GDIPlus_Startup()
                _ClipBoard_Open(0)
                $iVerifyPics = _ClipBoard_GetDataEx($CF_BITMAP)
                $iVerifyPics = _GDIPlus_BitmapCreateFromHBITMAP($iVerifyPics)
                _ClipBoard_Close()
                FileDelete(@TempDir & "\getimage.bmp")
                _GDIPlus_ImageSaveToFile($iVerifyPics, @TempDir & "\getimage.bmp")
                $a_Image = myReadImageToArray(@TempDir & "\getimage.bmp", True, 1, 0x777777);71704
                $a_Image = myArrayDelBox($a_Image, 1, 1, 1, 1);去边框
                $s_code_string = myArrarOCR(@ScriptDir & "\CodeFont.txt", $a_Image, 1, $CodeNum, $CodeWidth, "", $func_left, $func_mid, $func_top, $func_bottom)



                $check = _IEGetObjById($oIE, "MobileCheckCode")
                If IsObj($check) Then $check.value = $s_code_string

评分

参与人数 1金钱 +10 收起 理由
afan + 10

查看全部评分

发表于 2010-1-30 20:39:17 | 显示全部楼层
我接了,30人民币,哈哈。。
发表于 2010-1-30 21:17:58 | 显示全部楼层
搞定了
   。。。。
发表于 2010-1-30 21:18:09 | 显示全部楼层
本帖最后由 sanmoking 于 2010-1-30 22:21 编辑

20分钟ok哈哈。。准确率100%,等下放个gui。
发表于 2010-1-30 21:27:18 | 显示全部楼层
30元把你乐的....
 楼主| 发表于 2010-1-30 21:44:05 | 显示全部楼层
30论坛币我还拿得出来
它这验证码图片是无缓存的
发表于 2010-1-30 21:57:51 | 显示全部楼层
什么缓存不缓存,只要他显示给你看,就能搞定哦。。
30元开个玩笑而已,大家何必当真呢,谁都不会在乎钱滴。。
挣着工资喝着茶,网上娱乐一下而已,靠这业余爱好活命,饿死好几回了。。。


真确率100%哦。

本帖子中包含更多资源

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

×

评分

参与人数 2金钱 +32 贡献 +1 收起 理由
stjie + 10 + 1
gapkiller + 22

查看全部评分

 楼主| 发表于 2010-1-30 22:01:47 | 显示全部楼层
能提供源码吗
                $check = _IEGetObjById($oIE, "MobileCheckCode")
                If IsObj($check) Then $check.value = "识别的结果"
与之合并
 楼主| 发表于 2010-1-30 22:03:36 | 显示全部楼层
我自己把图片下下来 我能让它识别 只是它并不在IE缓存目录里 COPY不出来
发表于 2010-1-30 22:03:37 | 显示全部楼层
源码很简单,一个func返回识别结果,你想把结果放到那都行。。关键就是特征库跟dll。。
 楼主| 发表于 2010-1-30 22:05:59 | 显示全部楼层
我用inetget验证码会变
发表于 2010-1-30 22:12:51 | 显示全部楼层
;下面是放在代码前面的内容
$size = FileGetSize (@ScriptFullPath);算是密码串来区分一下,也有小小的加密作用
Global $jpg = @TempDir&'\tem'&$size&'.jpg';验证码图片存储的位置
Global $cdb = @TempDir & '\'&$size&'.tmpb';dll文件位置
Global $dll = @TempDir & '\'&$size&'.tmpl';特征库位置
FileInstall("Captchio.dll", $dll, 0);解压dll
FileInstall("Captchio.cdb", $cdb, 0);解压特征库
RunWait(@COMSPEC & " /c regsvr32 "& $dll & " /s","",@SW_HIDE);注册dll


下面是识别的函数
Func _Dispatch($jpg,$cdb);自动识别验证码的Func,$jpg=验证码图片,$cdb=特征库
        $obj = ObjCreate("Captchio.cCaptcha")
        $obj.OpenCharDB($cdb)
        $txt = $obj.GetStringFromFile($jpg, 1)
        Return $txt ;返回识别出来的验证码
EndFunc   ;==>_Dispatch


所以你就可以这样用:
If IsObj($check) Then $check.value = _Dispatch($jpg,$cdb)

也可以这样用,比如我给你的那个例子里面
GUICtrlSetData($Input1, _Dispatch($jpg,$cdb))
当然前提是你要把特征库制作出来,把验证码提取出来,不过这就不是本提问的内容了。。
最后
dll跟特征库,你自己去temp文件夹里找吧。。
Global $cdb = @TempDir & '\'&$size&'.tmpb';dll文件位置
Global $dll = @TempDir & '\'&$size&'.tmpl';特征库位置
FileInstall("Captchio.dll", $dll, 0);解压dll
FileInstall("Captchio.cdb", $cdb, 0);解压特征库

改下名字就行了

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-1-30 22:13:53 | 显示全部楼层
我用inetget验证码会变
hackiller 发表于 2010-1-30 22:05



    那就不用inetget
发表于 2010-1-30 22:16:24 | 显示全部楼层
给你个传送门,里面获取验证码到gui上用的是读取网页上的第n个图片,复制到temp里面再使用的。。【传送门
发表于 2010-1-30 22:18:27 | 显示全部楼层
楼上的那个记不太清了,不知道原理是不是我说的那样,或者使用这个方法【传送门

当然这两个传送门只是解决你说的获取验证码的问题,而没有添加识别验证码的代码,识别验证码的代码你参照12楼吧
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-18 08:37 , Processed in 0.093411 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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