一、用webbrowser方式获取cookie的好处: 案例一:现在越来越多的服务商对httprequest方式访问进行了限制,比如说QQ空间,我以前是用httprequest方式登陆的,但是每个两三个月腾讯就会更改加密算法,代码中的加密算法需重新写,大约在今年2月末腾讯直接对这种方式访问做了限制,基本上用httprequest方式登陆3次之内就会被冻结。最后换成了用webbrowser方式登陆获取cookie然会传给程序使用。这样更改之后就完美解决了腾讯的限制,同时也不用总更新加密算法了。而且登陆QQ空间的时候不需要输入用户名和密码了,腾讯能直接检测登录的QQ一建登陆。由于那个程序并没使用苏哥的httpHelper所以写的比较乱。
QQ空间登陆效果
手机QQ空间登陆效果
案例二:财智理财可能有些人用过。我已经用七八年了。它里面有两个功能吸引我,第一是手机电脑能随时同步,这没什么难的,只要有一个服务器即可。第二个是他能获取银行,支付宝等收支记录。这一点非常好,要知道如果自己做的话可能要每隔一段时间就要随着银行网站更新。他采用的方式就是webbrowser方式登陆,然后获取cookie,自动获取交易详单。财智登陆网银界面经过数次更新已经非常简洁了,以前就是一个webbrowser打开银行登陆界面的网页。
财智从网银下载数据
功能实现: 1、相信苏哥可能也会比较担心这个是有界面的,往sdk里放可能会设计线程等问题。但我觉的大可不必担心。建议采用方法。 ①httphelper提供一个从webbrowser获取cookie的函数,这个函数new一个form就是webbrowser的form,new的时候传两个参数一个是记录要浏览的网页,用户名class-id标签,用户名,密码id,密码,窗体尺寸等。另一个参数传一个委托,这个委托是设置cookie到httphelper的功能。 public void GetWBCookie(object WBForm) { FrmLogin form = newFrmLogin(WBForm, GetFruit); form.ShowDialog(); } public void GetFruit(string cookies) { SetCookies(cookies); } ②webbrowser部分在webBrowser1_DocumentCompleted时获取cookie,在form关闭时执行主程序传来的委托。也就是把cookie传回到主程序。 public delegate void DelGetFruit( string cookies); public DelGetFruit m_SetFruit; public FrmWBrowser(object WBForm, DelGetFruit SetFruit) { InitializeComponent(); m_SetFruit = SetFruit; } 2、获取cookie可以采用本论坛Monn仁兄发的“webBrowser获取完整cookie,并把cookie传给httpHelper源码”http://www.sufeinet.com/thread-3738-1-1.html。 但我没看这种方法是否能获取https方式的cookie,比如支付宝。另附一种能我使用的保证能获取http-only的获取cookie方式。 3、界面部分可以采用火车采集器的样式。
火车头采集数据
火车头采集数据
[attach]部分代码[/attach]
|