无法下载图片

lzg827 2017-09-20 07:38:37
网址是https://scnewb2b.travelsky.com/
希望下载验证码图片,是个小程序。
现在验证码图片无法下载。求大神帮忙,要求用Delphi
分数不是问题,不够另外开贴加,能解决问题的话,RMB都可以。
...全文
408 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzg827 2018-11-21
  • 打赏
  • 举报
回复
多谢各位捧场,后来自己搞定了。忘了结贴,好丢人
jouky 2017-10-07
  • 打赏
  • 举报
回复
不会,帮顶,结帖看能不能赚点分
  • 打赏
  • 举报
回复
需要openssl dll libeay32.dll ssleay32.dll
  • 打赏
  • 举报
回复
procedure TForm5.Button1Click(Sender: TObject); begin ShowImage(Image1); end; procedure TForm5.DownloadVerifyCodeImage(AStream: TStream); const URL = 'https://scnewb2b.travelsky.com/scb2b/VerificationCode.do?agentType=domestic'; var LHttp: TIdHTTP; LIOHandler: TIdIOHandler; begin LHttp:= TIdHTTP.Create(nil); LIOHandler:= TIdSSLIOHandlerSocketOpenSSL.Create(nil); try LHttp.IOHandler := LIOHandler; LHttp.Get(URL, AStream); finally LIOHandler.Free; LHttp.Free; end; end; procedure TForm5.ShowImage(AImage: TImage); var LStream : TStream; LJpeg: TJPEGImage; begin LStream := TMemoryStream.Create; try DownloadVerifyCodeImage(LStream); if LStream.Size = 0 then Exit; LStream.position := 0; LJpeg:= TJPEGImage.Create; try LJpeg.LoadFromStream(LStream); AImage.Picture.Assign(LJpeg); finally LJpeg.Free; end; finally LStream.Free; end; end;
老之 2017-09-28
  • 打赏
  • 举报
回复
4楼的就是正解。
思路是先分析图片的链接和格式,使用TIdHttp下载图片。因为是HTTPS协议,所以还要使用TIdSSLIOHandlerSocketOpenSSL来和TIdHttp绑定。
TIdSSLIOHandlerSocketOpenSSL要依赖libeay32.dll和ssleay32.dll。这两DLL是旧版OpenSSL编译出来的,新版的好像没有这两个DLL了。
代码就那么几句:
uses jpeg;

var
AStream: TMemorystream;
begin
AStream := TMemoryStream.Create;
IdHttp1.Get('https://scnewb2b.travelsky.com/scb2b/VerificationCode.do', AStream);
AStream.SaveToFile('c:\VerificationCode.jpg');
Image1.Picture.LoadFromFile('c:\VerificationCode.jpg');
end;
关键你要找到那2个合适的DLL,有些DLL是会报错的。
xqchenxue2 2017-09-27
  • 打赏
  • 举报
回复
那个图片是动态绘出来,然后通过流输出到网页的,你通过鼠标事件模拟就可以了,我们以前通过网页打开就是这么高的
adslong 2017-09-23
  • 打赏
  • 举报
回复
用IDHTTP+SSL+两个DLL文件可以正常下载。
lyhoo163 2017-09-22
  • 打赏
  • 举报
回复
提供思路: 1、有些浏览器支持“ctrl”+“alt”键,同时鼠标左键点击图片,保存图片操作。可以通过模拟方式实现。 2、chrome浏览器有“审查元素”的操作,可以找到该图片“元素”,找到图片的地址。就能下载了。 3、有个软件图片下载器(NeoDownloader),你只要给它一个网址,它就会自动搜寻图片,把图片全部抓回你的计算机中。
lyhoo163 2017-09-22
  • 打赏
  • 举报
回复
通常验证的图片,是保护的。不让你下载,否则,你全部下载了,对应翻译成文字码。它就夫去验证的效应了。 建议你通过截图,方式来获取。这样,比较好处理。
lzg827 2017-09-20
  • 打赏
  • 举报
回复
RMB300,能搞定的兄弟回帖联系我。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧