首页
社区
课程
招聘
[旧帖] [求助]用C++编程,下载网页验证码并保存为图片 0.00雪花
发表于: 2010-12-3 08:37 1432

[旧帖] [求助]用C++编程,下载网页验证码并保存为图片 0.00雪花

2010-12-3 08:37
1432
用winsock下收到的验证码图片数据是什么格式,并如何保存图片。求助源码提示。谢谢!!

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
最近也开始研究验证码了。。delphi写的。。
//拍拍抢购6b9K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3y4S2M7s2c8U0K9r3q4Q4x3X3g2H3j5h3W2H3j5h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6Y4k6i4c8A6L8h3q4Y4k6b7`.`.
//5a3K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3y4S2M7s2c8U0K9r3q4Q4x3X3g2I4M7g2)9J5k6h3y4G2L8g2)9J5c8X3N6W2N6r3W2E0j5h3N6W2
//5aaK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0f1I4i4K6u0W2L8r3q4Q4x3V1k6#2M7$3g2J5i4K6u0r3N6X3y4G2k6r3g2Q4x3X3g2S2M7%4l9`.
function DownLoadOCRCode(const imgURL:pchar):TBitmap;stdcall;
  function parseurldirectory(const imgURL:pchar):pchar;
  var
   pctmp:pchar;
   btmp:Byte;
   destination:Pchar;

  begin
    Result := '';
    btmp:= Pos('.',imgURL);
    pctmp:=pchar(Copy(imgURL,btmp+1,length(imgURL)-btmp));
    btmp:= Pos('.',pctmp);
    pctmp:=pchar(Copy(pctmp,1,btmp-1));
    strcopy(destination,pctmp);   //不加这句话,直接result:=pctmp 时候 当目录名是数字51的时候,返回的空乱码?
     //showmessage(strpas(sDesti));
    Result := destination;
  end;

  function GetImgStyleFromSteam(const Stream:TMemoryStream):Pchar;
  var
    buffer:word;
    imgStyle:pchar;
    imgStream:TMemoryStream;
  begin
    Result := '';
    try
      imgStream := TMemoryStream.Create;
      imgStream.LoadFromStream(stream);
      imgStream.Position := 0;
      if imgStream.Size = 0 then exit;
      imgStream.ReadBuffer(buffer,2);
      case buffer of
        $4D42:imgStyle:='.bmp';
        $D8FF:imgStyle:='.jpeg';
        $4947:imgStyle:='.gif';
        $5089:imgStyle:='.png';
      end;
    finally
      imgStream.Free;
    end;
    Result := imgStyle;
  end;
Var
  imgStream:TMemoryStream;
  _Http:TidHttp;
  imgDirectory:Pchar;
  bitmap:TBitmap;
  jpeg:TJpegimage;
  buffer:word;
  imgStyle:pchar; //文件类型 BMP JPG PNG等
begin
  Result:=nil;
  try
    bitmap := TBitmap.Create;
    imgStream:=TMemoryStream.Create;
    try
      _Http    := TIdhttp.Create(nil);
      _Http.Get(imgURl,imgStream);

      imgStyle:=GetImgStyleFromSteam(imgStream);
      if imgStyle = '.jpeg' then
      begin
        jpeg:= Tjpegimage.Create;
        imgStream.Position := 0;
        jpeg.LoadFromStream(imgStream);
        bitmap.Assign(jpeg);
        jpeg.Free;
      end
      else if imgStyle = '.bmp' then
      begin
        imgStream.Position := 0;
        bitmap.LoadFromStream(imgStream);
      end;
      imgDirectory :=parseurlDirectory(imgURL);     //图片目录
      if  imgDirectory <> '' then
      begin
        imgDirectory:=pchar(ExtractFilePath(paramstr(0))+ strpas(imgDirectory));
        if not DirectoryExists(imgDirectory) then CreateDir(imgDirectory);
        bitmap.SaveToFile(imgDirectory+'\'+formatdatetime('yyyy-mm-dd hh-mm-ss',now)+'.bmp');
        Result:= Tbitmap.Create;
        Result:=bitmap;
      end;  
    except
      On E:Exception do
      begin
         Result:= nil;
      end;
    end;
  finally
    imgStream.Free;
    _Http.Free;
    //bitmap.Free;
  end;
end;
2010-12-3 13:54
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
有个win32 API: URLDownloadTOFile(url...) 保存为文件
2010-12-3 15:02
0
游客
登录 | 注册 方可回帖
返回