WinInet如何实现自动登陆https类网站? 本帖最后由 kft2001 于 2013-04-27 07:07:52 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 下了一个csdn 的demo也不能自动登录lz想实现类似抢票的功能么? 使用与firefox同样的Http请求报文进行调试,发现返回的页面总显示“输入包含错误字符。请重试。”然而使用firefox手动登陆就没问题,难道网站对我进行了客户端验证? 使用httpanalyzer发出与firefox同样的报文,能够正常登陆,说明报文没有问题。不知wininet的问题出在哪,求高手解答! 可能还有一些行为你没有模拟出来。最近用PHP做一个https的网站的数据采集,登录正常,在获取某些数据的时候失败,原因是需要在获取请求前,进行另一个请求。 各网站不同 有的是cookie,百度那种还要token什么东西,lz的网站是? 200只是说明人家收到了,当成登陆的数据还是垃圾数据还是另外一回事儿200 OK指示客服端的请求已经成功收到,解析,接受。 ------------------------------------------------------AutoCSDN签名档------------------------------------------------------ 返回的状态码为0x7fffffff,不知道是什么意思。 解决了困扰我很长时间的自动登录问题,该问题主要表现为:1.不带INTERNET_FLAG_SECURE标志创建CHttpConnection对象时,自动登录成功, 但从返回的页面看,并没有登录进入账号页面。2.带INTERNET_FLAG_SECURE标志创建CHttpConnection对象时,自动登录失败, 通过QueryInfoStatusCode查询错误码时,返回0x7fffffff,该错误码在MSDN上无法查到。 绕了一大圈,最后从返回报文中了解到,请求报文被以明文形式发给了HTTPS服务器。 通过网络搜索该问题,了解到在每次调用OpenRequest时也需要加上INTERNET_FLAG_SECURE标志。之所以困扰我很长时间是没想到会在两个地方使用INTERNET_FLAG_SECURE标志,潜意识认为创建CHttpConnection对象时设定了INTERNET_FLAG_SECURE标志后,调用CHttpConnection::OpenRequest时应该默认就对请求报文进行加密了,没想到CHttpConnection::OpenRequest需要单独设置INTERNET_FLAG_SECURE标志,否则就讲求报文以明文形式发给服务器,尽管该服务器为HTTPS服务器。后来想想,WinInet将同一个INTERNET_FLAG_SECURE标志用在两个地方,各有各的作用,创建CHttpConnection对象时设置INTERNET_FLAG_SECURE标志是为了告诉系统连接到服务器的HTTPS端口443上,否则就连接到HTTP端口80上。而CHttpConnection::OpenRequest设置INTERNET_FLAG_SECURE标志是为了告诉系统对请求报文加密,否则就明文传递。实际上加密是通过SSL来完成的。 楼主,我也碰到跟你类似的情况。我是按照抓到的包内容发送的,也设置了你所说的两处INTERNET_FLAG_SECURE,可是响应头没有我想要的Cookie信息,返回状态是200,但是根本就没登陆成功。请问你最后是怎么解决的? 有两个程序,一个程序有一个父窗口和一个子窗口,另一个程序有一个主窗口 MFC Button按钮问题 MFC中,如何在关掉应用程序后,让EDIT控件保存上一次的输入值? 《Visual C++ 6.0 技术内幕》第八章一个例子,无法使用COleVariant变量,求助 大家帮帮我,我在线等着 MFC中调用含WCHAR字符串出错的问题.mbstowcs 和MultiByteWideChar转换时都是只转了第一个字符的问题. 用VC++ 开发读写IC卡的函数接口(提供给上位机的接口);给我点方案!! 为什么这个在CListCtrl派生类中的OnCreate函数的不到执行? how to use syslistview32 新手学习Windows Sockets网络编程,求指导 VC关于子对话框的问题,求指点 两位BYTE 怎么转换成 int 型的呢
然而使用firefox手动登陆就没问题,难道网站对我进行了客户端验证?
不知wininet的问题出在哪,求高手解答!
最近用PHP做一个https的网站的数据采集,登录正常,在获取某些数据的时候失败,原因是需要在获取请求前,进行另一个请求。
200 OK
指示客服端的请求已经成功收到,解析,接受。
1.不带INTERNET_FLAG_SECURE标志创建CHttpConnection对象时,自动登录成功,
但从返回的页面看,并没有登录进入账号页面。
2.带INTERNET_FLAG_SECURE标志创建CHttpConnection对象时,自动登录失败,
通过QueryInfoStatusCode查询错误码时,返回0x7fffffff,该错误码在MSDN上无法查到。
绕了一大圈,最后从返回报文中了解到,请求报文被以明文形式发给了HTTPS服务器。
通过网络搜索该问题,了解到在每次调用OpenRequest时也需要加上INTERNET_FLAG_SECURE标志。
之所以困扰我很长时间是没想到会在两个地方使用INTERNET_FLAG_SECURE标志,潜意识认为创建CHttpConnection对象时
设定了INTERNET_FLAG_SECURE标志后,调用CHttpConnection::OpenRequest时应该默认就对请求报文进行加密了,没想到
CHttpConnection::OpenRequest需要单独设置INTERNET_FLAG_SECURE标志,否则就讲求报文以明文形式发给服务器,尽管
该服务器为HTTPS服务器。
后来想想,WinInet将同一个INTERNET_FLAG_SECURE标志用在两个地方,各有各的作用,创建CHttpConnection对象时设置INTERNET_FLAG_SECURE标志
是为了告诉系统连接到服务器的HTTPS端口443上,否则就连接到HTTP端口80上。而CHttpConnection::OpenRequest设置INTERNET_FLAG_SECURE标志
是为了告诉系统对请求报文加密,否则就明文传递。实际上加密是通过SSL来完成的。