首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

一个顺利获取百度注册页面验证码图片的源代码

2012-10-17 
一个成功获取百度注册页面验证码图片的源代码成功实现使用delphi获取百度的验证码图片(只获得图片,不进行

一个成功获取百度注册页面验证码图片的源代码

成功实现使用delphi获取百度的验证码图片(只获得图片,不进行识别,识别之后再研究吧O(∩_∩)O)


procedure TForm1.btn1Click(Sender: TObject);  procedure doSomething(ms: TMemoryStream);  var    Buffer:Word;    AjpgFile: TJPEGImage;  begin    ms.Position := 0;    if ms.Size = 0 then      Exit;    ms.ReadBuffer(Buffer,2); //读取文件的前2个字节,放到Buffer里面    if Buffer=$4D42 then //如果前两个字节是以4D42[低位到高位]    begin      ShowMessage('BMP'); //那么这个是BMP格式的文件    end    else if Buffer=$D8FF then //如果前两个字节是以D8FF[低位到高位]     begin      ShowMessage('JPEG'); //........一样 下面不注释了      ms.Position := 0;      AjpgFile := TJPEGImage.Create;      AjpgFile.LoadFromStream(ms);      Image1.Picture.Graphic := AjpgFile;     end    else if Buffer=$4947 then    begin      ShowMessage('GIF');    end    else if Buffer=$5089 then    begin      ShowMessage('PNG');    end;  end;var  Openurl : string;  elem: IHTMLElement;  coll: IHTMLElementCollection;  i: Integer;  url, Text: string;  d2,D:IHTMLDocument2;  d1:IHTMLDocument;  e:IHTMLElement;  e2:IHTMLElement2;  cp: IHTMLControlRange;  img:IHTMLImgElement;  ce:IHTMLControlElement;  bmp:TBitmap ;  r0:TRect;  newbmp:TBitmap;  r1:TRect;  checkstr:string;  MyHandle :THandle ;  bmpPtr:Pointer;  ms:TMemoryStream;   //内存流对象begin  ms := TMemoryStream.Create;  //建立内存流对象  IdHTTPBaiDu := TIdHTTP.Create(nil);  IdHTTPBaiDu.ReadTimeout := 2000000;  IdHTTPBaiDu.IOHandler := IdSSLIOHandlerSocketOpenSSL1.Create(nil);  Openurl := 'https://passport.baidu.com/v2/?reg&u=http://www.baidu.com/&tpl=mn';//  Openurl := 'http://zc.qq.com/chs/index.html';//    Openurl := 'http://www.doubao.com/user/reg';//豆包网  try    BaiDuWebBrowser.Navigate(Openurl);    while BaiDuWebBrowser.Busy do    begin      Application.ProcessMessages;    end;    BaiDuWebBrowser.Stop;    if BaiDuWebBrowser.Document = nil then      Exit;    //获取源代码    D := BaiDuWebBrowser.Document as IHTMLDocument2;    e :=d.body as IHTMLElement;    e2 :=e as IHTMLElement2;    cp :=e2.createControlRange as IHTMLControlRange;    d2 :=BaiDuWebBrowser.Document as IHTMLDocument2;    //下面是破解验证码    coll := d.all;    coll :=(coll.tags('img') as IHTMLElementCollection);    for i := 0 to coll.Length - 1 do    begin    //循环取出每个url      elem := (coll.item(i,0) as IHTMLElement);      url :=Trim(string(elem.getAttribute(WideString('src'), 0)));      //Text := Trim(string(elem.outertext));      if Pos('doubao' , url) > 0 then  //豆包网      begin        if Pos('auth/checkcode',url) > 0 then        begin          IdHTTPBaiDu.Get(url,ms);          doSomething(ms);          Break;        end      end      else if Pos('qq.com' , url) > 0 then   //腾讯QQ      begin        if pos('getimage', url) > 0 then        begin          IdHTTPBaiDu.Get(url,ms);          doSomething(ms);          Break;        end      end      else if Pos('baidu.com' , url) > 0 then //百度      begin        if Pos('genimage',url) > 0then        begin          IdHTTPBaiDu.Get(url,ms);          doSomething(ms);          Break;        end;      end;    end;  finally    end;end;
写的很烂,不过确实可以实现。嘻嘻~
用到的控件:TWebBrowser、IDhttp、IdSSLIOHandlerSocketOpenSSL还有一个image负责显示验证码图片。

需要使用两个dll包。delphi2007的可以使用的连接地址为:http://download.csdn.net/detail/sushengmiyan/4639225

热点排行