我想用idhttp从贴吧的验证码地址cgi-bin/genimg?***里面取可用的图片,因为不懂 JavaScript...(惭愧```),没办法了解IE取得验证码的实现方法,从抓包结果里也没能分析出什么结果,idhttp下载来的图片都是378k的乱码,真正的验证码图片应该是1k左右的,不知道我用idhttp的思路对不对,如果应该用WebBrowser也请帮助提供一个思路``谢谢各位```

解决方案 »

  1.   

    识别出字符暂时还不太现实  只要获取图片就可以了 yzty 有什么好办法吗?
      

  2.   

    用WebBrowse,简单:
    function TForm1.GetLocalImg(key:string): Boolean;
    Var    
      lpEntryInfo: PInternetCacheEntryInfo;    
      dwEntrySize, dwLastError, Hwd: LongWord;    
    Begin
      Result := false;  dwEntrySize := 0;    
      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    
            Begin
             //这里的key可以传入验证码的url的特征部分,图片格式你自己看看是什么,这里是jpg
              If Pos(UpperCase(key), UpperCase(lpEntryInfo.lpszSourceUrlName)) > 0 Then
                If (FileExists(lpEntryInfo.lpszLocalFileName)) And (UpperCase(ExtractFileExt(lpEntryInfo.lpszLocalFileName)) = '.JPG') Then
                Begin    
                  Image.Picture.LoadFromFile(lpEntryInfo.lpszLocalFileName);
                  Result := true;
                  Break;    
                End;    
            End;    
          End;    
          application.ProcessMessages;    
        Until (dwLastError = ERROR_NO_MORE_ITEMS);    
      End;    
      FreeMem(lpEntryInfo);    
      FindCloseUrlCache(Hwd);    
    end;
      

  3.   

    2003 再说一下这段代码需要用到的uses 可以吗  总是出现Undeclared identifier编译错误 多谢了