IWebBrowser2登陆网站(无验证码的)

      忙活了快两天,第一次正儿八经的使用COM(仅仅是使用),需求是客户端登陆网站获取相关信息,比如是否有新的事务,开始通过WinInet抓包,由于是第一次接触这个,搞了两天终于登陆成功(主要是卡在SessionID上面了),进入主界面后发现获取事务的信息不是直接在HTML中,一个做Web的同事给我分析了一遍,竟然是通过JS+AJAX +_+然后再怎么直接更新(不刷新页面),反正是搞不清,而且这里事务的链接和登录后的页面不是在同一个服务器上面,直接GET那些页面不行。

 

      直到没办法了昨天开始用IWebBrowser2,开始本来是想直接用ActiveX控件的,后来发现那个也就是封装了下,反正也是学习干脆直接用IWebBrowser2,算然以前知道这个东西但是没用过,硬着头皮在CodeProject上面找+MSDN,终于了解了大致流程:

 

首先通过IWebBrowser2加载URL,为了省事没有分析HTML直接是在浏览器看源文件抠出来的关键词,通过MSHTML的COM接口设置相关的用户名和密码然后提交表单,奇怪的是IHTMLInputButtonElement 竟然没有click之类的方法,网上找到的是通过IHTMLInputButtonElement 找到对应的表单然后提交,具体可以参考源代码,代码中只试了gmail和163的,gmail可以登录成功,163的不知道怎么搞的提交后用户名和密码清空了,另外有一点需要注意的是有的网站登录“按钮”实际上是个图片,HTML代码大致是这样的

<input name="Submit" value="登 录" type="image" src="http://static.xxx.com/v3/www/images/btn_login.gif" />

这个在MSHTML对应的是IHTMLImgElement,这个接口在网上讲述的很少,而且由于不是真正的按钮,不能通过IHTMLInputButtonElement 来获取相应的表单,我这里是通过先通过IHTMLDocument2获取IHTMLElementCollection然后通过IHTMLElementCollection::item来枚举子Form,不知道为什么用IHTMLElementCollection::tags获取的Form总是不对,获取到Form后就好办了submit,这个在Demo中没写(还要洗衣服,呵呵),可以自己试试。

 

 

Demo代码:http://download.csdn.net/source/1757459

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值