当前位置: 代码迷 >> PB >> 怎么用pB获得网页随机图形验证码
  详细解决方案

怎么用pB获得网页随机图形验证码

热度:90   发布时间:2016-04-29 08:21:44.0
如何用pB获得网页随机图形验证码
如何用pB获得网页随机图形验证码,并转换为文本,比如:1238
请高手指点。
急!

验证码图片地址是:
http://das.bitauto.com/Price/ValidatecodeImg.aspx?t=0.8452094821259379

------解决方案--------------------
这个用PB有难度吧.
------解决方案--------------------
单纯用PB实现有难度,可以结合一些文字识别控件来实现
------解决方案--------------------
用pb可以实现,需要用到inel


继承internetresult保存为n_ir
n_ir里定义实例变量,源文件如下

forward
global type n_ir from internetresult
end type
end forward

global type n_ir from internetresult
end type
global n_ir n_ir

type variables
blob ib_data
end variables
forward prototypes
public function integer internetdata (blob data)
end prototypes

public function integer internetdata (blob data);ib_data = data

return 1
end function

on n_ir.create
call super::create
TriggerEvent( this, "constructor" )
end on

on n_ir.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on



然后在你的窗口里写以下代码(窗口上放一个picture命名为p_validate)
实例变量
n_ir iir_msgbox
inet iinet_base

按钮里代码如下
Blob lblb_args
String ls_headers
String ls_url
Long ll_length


ls_url = "http://ptlogin2.qq.com/getimage"

iinet_base.geturl(ls_url, iir_msgbox)

string ls_data
ls_data = string(iir_msgbox.ib_data, Encodingutf8!)
p_validate.SetPicture(iir_msgbox.ib_data)

return 1
------解决方案--------------------
这个的验证码不是很复杂(仅就这个而言,有的验证码还是比较麻烦的).不需要太多的理论知识.(如果真要做通用的文字识别,不下几年苦功夫是不行的)

如果你会VC一类的.找本有图像处理的书.你知道如何得到图片中每一个点.

再去找本简单的图像识别的书,不要理论的,越简单越好,有例子就行.(书店大把)

最后做识别的时候,不要想着做通用的.你专门针对这个验证码来做,就很简单了.你也不需要100%的识别正确,因为你可以,"看不清楚,换一张图片".

如果有比较好的VC的基础,加上看书的时间,两三个星期吧.

具体的东西没法三言两语说清楚.而且我也不方便说得太清楚,见谅.
------解决方案--------------------
band()
------解决方案--------------------
先把图片取出来,然后再分析,要把图片转成文本难度比较大,可以参考以下内容


http://wenku.baidu.com/view/d1020021af45b307e871976e.html
------解决方案--------------------
取容易,自动识别就不懂了。。
  相关解决方案