问题一:比如这个验证码图片 :https://dynamic.12306.cn/otsweb/passCodeAction.do?rand=sjrand
我不知道这个图片格式是什么,我就试着保存为jpg格式(其他格式好像也不行)。
但是有些图片就可以,比如https://member.suning.com/webapp/wcs/stores/jcaptcha?random=-1497049489 
我不懂为什么第一个图片下载下来打不开。CInternetSession session;
CString strUrl;
CFile *pFile,out; 
char buff[512];
CString strPath;
strUrl=_T("https://dynamic.12306.cn/otsweb/passCodeAction.do?rand=sjrand");  
strPath = GetExePath() + _T("\\test.jpg");
pFile = session.OpenURL(strUrl); 
out.Open(strPath, CFile::modeCreate | CFile::modeWrite); 
while(pFile->Read(buff,512))
       { 
out.Write(buff,512); 

out.Flush();
out.Close(); 下载下来的图片都打不开,请问各位如何下载,谢谢。问题二:
如果要多账号批量登陆一个网站,那么如何操作呢,我听说是把cookie放到不同目录下,这样就可以多账号登陆,希望大家给点思路,以及用到的函数名称,谢谢。
问题三:
第三个是验证码识别问题,希望大家能贡献点c++验证码识别的源码 ,网上找好像比较少,pudn上我也找了,好像也没。
暂时这3个问题,分不够我可以加,倾囊求教。
验证码

解决方案 »

  1.   

    这得实现HTTP协议吧,在response中有Content-Type指明图片的类型,你看一下这里socket实现的HTTP(WebClnt):
    http://download.csdn.net/detail/geoff08zhang/4571358
      

  2.   


    这个是我抓包得到的,是jpeg格式,但是也无法下载。HTTP/1.1 200 OK
    Date: Tue, 14 May 2013 00:55:33 GMT
    Server: IBM_HTTP_Server
    Expires: Thu, 01 Jan 1970 00:00:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate
    Cache-Control: post-check=0, pre-check=0
    Pragma: no-cache
    Set-Cookie: JSESSIONID=0000F9omMAQvgwV7CYGaJBi1dE3:17aterln6; Path=/
    Content-Encoding: gzip
    Transfer-Encoding: chunked
    Content-Type: image/jpeg
    Content-Language: zh-CN
    X-Via: 1.1 fjnd44:8880 (Cdn Cache Server V2.0)
    Connection: keep-alive
      

  3.   

    是不是CInternetSession对chunked编码的处理有问题
      

  4.   


    不是这个问题,另外一个图片一样是Transfer-Encoding: chunked,但是可以下载。
    HTTP/1.1 200 OK
    Date: Tue, 14 May 2013 03:05:08 GMT
    Server: IBM_HTTP_Server
    Expires: Thu, 01 Jan 1970 00:00:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate
    Cache-Control: post-check=0, pre-check=0
    Pragma: no-cache
    Content-Encoding: gzip
    Transfer-Encoding: chunked
    Content-Type: image/jpeg
    Content-Language: zh-CN
    X-Via: 1.1 fc194:80 (Cdn Cache Server V2.0), 1.1 fjnd44:8880 (Cdn Cache Server V2.0)
    Connection: keep-alive
      

  5.   

    动态创建CHtmlView 用IHTMLDocument2接口获得验证码.网上超多的例子用uuwise接口输入验证码,官方提供例子问题2不知道怎么解决.