如何取得网页上gif图形随机验证码 ( 积分: 200 )

  • 主题发起人 主题发起人 zyh6115
  • 开始时间 开始时间
Z

zyh6115

Unregistered / Unconfirmed
GUEST, unregistred user!
我做一个自动登录网站的系统,以前只要输入用户名与密码就行了,现在却增加了一个验证码的输入,现在要自动获取随机的验证码,不知哪位兄弟能帮这个忙.在线等待......谢了
 
是不是分太少了,没人理哦[:(]
 
呵呵,这个可是个高难度的问题,需要做图形解析,应该没有完全破解的方法,不然那些网上银行就危险了,楼主可以去找相关的资料看看。
 
根据验证码的URL得出在IE缓存中的图片路径
Uses WinINet;

//只对部份验证码会出现在缓存中有效,否则要利用取得验证码在WebBrowser所在的坐标捉取,或者可采用MSHTML对IMG标记复制出来
Function GetCacheVerifyCodeFile(VerifyCodeURL: String; Var CacheVerifyCodeFile: String): Boolean;
Var
lpEntryInfo: PInternetCacheEntryInfo;
dwEntrySize, dwLastError, Hwd: LongWORD;
i, j: Integer;
f: String;
Begin
Result := false;
dwEntrySize := 0;
j := 0;
CacheVerifyCodeFile := '';
FindFirstUrlCacheEntry(Nil, TInternetCacheEntryInfo(Nil^), dwEntrySize);
GetMem(lpEntryInfo, dwEntrySize);
Hwd := FindFirstUrlCacheEntry(Nil, lpEntryInfo^, dwEntrySize);
If Hwd <> 0 Then
Begin
Repeat
dwEntrySize := 0;
FindNextUrlCacheEntry(Hwd, TInternetCacheEntryInfo(Nil^), dwEntrySize);
dwLastError := GetLastError();
If dwLastError = ERROR_INSUFFICIENT_BUFFER Then
Begin
GetMem(lpEntryInfo, dwEntrySize);
If FindNextUrlCacheEntry(Hwd, lpEntryInfo^, dwEntrySize) Then
If Pos(UpperCase(VerifyCodeURL), UpperCase(lpEntryInfo.lpszSourceUrlName)) > 0 Then
Begin
i := FileAge(lpEntryInfo.lpszLocalFileName);
If i > j Then
Begin
j := i;
f := lpEntryInfo.lpszLocalFileName;
End;
End;
End;
Application.ProcessMessages;
Until (dwLastError = ERROR_NO_MORE_ITEMS);
If FileExists(f) Then
Begin
CacheVerifyCodeFile := f;
Result := true;
End;
End;
FreeMem(lpEntryInfo);
FindCloseUrlCache(Hwd);
End;
 
谢谢,风铃夜思雨.你能否写的完整些[:)]
 
是用Idhttp做的吗?
 
hxy2002,不是,呵呵
 
你分析一下网站,有的验证码是放在Cookie里面的。
至于取图片。
我是用idhttp做的。
get(图片的URL),然后取返回的数据,就是图片数据
 
hxy2002,好的,谢谢
 
盒子上有一段验证码分析程序。
要自动识别可以试试。
http://www.2ccc.com/article.asp?articleid=3084
 
问题还没有解决,希望大家多帮忙,要是觉的分数不够的话,我可以再加分
 
我有ASP的, 要不要?
 
yirong,谢谢,有没有DELPHI的
 
问题已解决,谢谢各位.
 
怎么解决的.能否共享一下?

十分感谢!

szfity@163.com
 
后退
顶部