VB webbrowser 控件的应用(跨域 内嵌网页元素的访问)
自动登录财付通,难点在于会出现验证码,并且验证码页是在iframe元素下的,出于各种安全考虑,webbrowser控件不提供这种访问机制!当然,第一想到的是将这个网页拿出来,可是输入完毕验证码后,点击“确定”需要与原网页交互,而此时已经脱离原网页,所以不能实现跳转。查找好久,还是找到了访问ifame内元素的解决办法:
需要引入这三个引用:
对于选中的那个,如果没有,可以在这儿下载
下面直接看源代码:
Private Sub goto_Click()
For j = To
Set WebBrowser1.Document.cookie = Nothing
WebBrowser1.Navigate2 ("https://xui.ptlogin2.tenpay.com/cgi-bin/xlogin?appid=546000248&style=34&hide_border=1&proxy_url=https%3A%2F%2Fwww.tenpay.com%2Fv2%2Fproxy.html&target=self&daid=120&s_url=https%3A%2F%2Fwww.tenpay.com%2Fv2%2Fres%2Fjs%2Fyui%2Fbuild%2Flogin%2Fptlogin.shtml&pt_no_auth=1&v=10063002#1444282478405")
Do
DoEvents
If WebBrowser1.ReadyState = READYSTATE_COMPLETE Then
'MsgBox "载入完成":
Exit Do
End If
Loop Set vDoc = WebBrowser1.Document
vDoc.All().Click Dim i As Integer
For i = To vDoc.All.length -
If UCase(vDoc.All(i).id) = "U" Then
'vDoc.All(i).Click
'MsgBox vDoc.All(i).id:
vDoc.All(i).Value = "*******帐号"
End If
If UCase(vDoc.All(i).id) = "P" Then
'vDoc.All(i).Click
'MsgBox vDoc.All(i).id:
vDoc.All(i).Value = "*******密码"
End If
Next
For i = To vDoc.All.length -
If UCase(vDoc.All(i).id) = "LOGIN_BUTTON" Then
'MsgBox vDoc.All(i).id
vDoc.All(i).Click
End If
Next If j = Then
While WebBrowser1.Busy
DoEvents
Wend
Set vDocFrame = getFrames(WebBrowser1).Document
For i = To vDocFrame.All.length -
If UCase(vDocFrame.All(i).id) = "CAP_INPUT" Then
vDocFrame.All(i).Value = "szbv"
End If
Next For i = To vDocFrame.All.length -
If UCase(vDocFrame.All(i).innerText) = "确 定" Then
vDocFrame.All(i).Click
While WebBrowser1.Busy
DoEvents
Wend
WebBrowser1.Navigate ("https://www.tenpay.com/app/v1.0/cftaccount.cgi")
Exit For
End If
Next
'If UCase(vDocFrame.All(i).id) = "CAP_INPUT" Then
'MsgBox vDocFrame.All(0).id
'End If
End If
'vDoc.All(75).Click
Next
End Sub
'取出iframe对象
'WB为要处理的webbrowser
Private Function getFrames(ByVal WB As WebBrowser) As Object
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
Dim pBrowser As SHDocVwCtl.WebBrowser_V1 Set pContainer = WB.Object.Document
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = Then
Set pContainer = Nothing
Do While pEnumerator.Next(, pUnk) =
Set pBrowser = pUnk
If Err.Number = Then
Print "Frame: " & pBrowser.LocationURL If InStr(, pBrowser.LocationURL, "https://ssl.captcha.qq.com/cap_union_show") Then '可以在这里加条件判断得到指定的frame,基本可以根据url或者innerHTML中的某个关键字符
Set getFrames = pBrowser
Exit Function
End If
End If Loop
Set pEnumerator = Nothing
End If
End Function
财付通登录
VB webbrowser 控件的应用(跨域 内嵌网页元素的访问)的更多相关文章
- Webbrowser控件判断网页加载完毕的简单方法 (转)
摘自:http://blog.csdn.net/cometnet/article/details/5261192 一般情况下,当ReadyState属性变成READYSTATE_COMPLETE时,W ...
- WebBrowser控件使用技巧分享
原文:WebBrowser控件使用技巧分享 在发布“淘宝登货员”时发现不少朋友对WebBrowser控件比较感兴趣,故在此分享一下使用心得. 首先分享一个WebBrowser的扩展类(此类所需的dll ...
- WinForm webbrowser控件的使用
webbrowser是一个比较实用的工具,主要用于在winform窗体中嵌入浏览器,达到winform与webform互操作的目的. 先上一个demo,看一下能实现什么效果. private void ...
- VB.NET让webbrowser控件中JS脚本错误最新方法(2013-09-16)
最近也是在项目中遇到了webbrowser控件中想关闭JS脚本错误窗口的问题,所以经过多次测试,终于用一段高效实用的代码完美解决webbrowser控件中JS脚本错误窗口关闭的问题. 通过创建一个子线 ...
- Webbrowser控件史上最强技巧全集
原文:Webbrowser控件史上最强技巧全集 Webbrowser控件史上最强技巧全集 VB调用webbrowser技巧集 1.获得浏览器信息: Private Sub Command1_Click ...
- WebBrowser控件使用详解
原文:WebBrowser控件使用详解 方法 说明 GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项 GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进一项 G ...
- 关于webbrowser控件自动登陆的问题
原文:关于webbrowser控件自动登陆的问题 楼主dtb(陈少)2004-03-04 22:16:55 在 VB / 网络编程 提问 请问怎么用webbrowser自动登陆www.jp168.co ...
- C# Winform WebBrowser控件
C# WinForm WebBrowser 1.主要用途:使用户可以在窗体中导航网页. 2.注意:WebBrowser 控件会占用大量资源.使用完该控件后一定要调用 Dispose 方法,以便确保及时 ...
- BCB:WebBrowser 控件说明
控件文件:system32\shdocvw.oca shdocvw.dll 注册:regsvr32 shdocvw.dll WebBrowser 是 IE 内核做的 VB 控件, WebBrow ...
随机推荐
- iOS开发The Operation couldn't be completed.(LaunchServicesError error 0.)的解决方法
显示错误:The Operation couldn't be completed.(LaunchServicesError error 0.)解决办法:第1种方法.点击当前的模拟器,点击IOS Sim ...
- 专访Facebook HipHop作者/阿里研究员赵海平:生物与计算机交织的独特人生
3 月 26 日,杭州的天阴沉沉,这是一种山色空蒙雨亦奇的美丽,还是雾霭笼罩下的怪异,对于来访阿里巴巴西溪园区的人们来说,没人关心这些.人们行色匆匆,兴奋地往各自目的地奔赴而去.我也来不及细思这些,因 ...
- 遮盖层实现(jQuery+css+html)
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- javascript apply()和call()
原文链接 http://www.jb51.net/article/30883.htm 想要理解透彻apply()和call() ,还要需要理解this 作用域 局部变量 全局变量 js apply ...
- Angular2,React集成
https://www.packtpub.com/books/content/integrating-angular-2-react http://www.syntaxsuccess.com/view ...
- 深入JVM锁机制1-synchronized
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea.本文并不比较synchronized与Loc ...
- OMCS开发手册(02) -- 多媒体连接器
OMCS开发手册(01) -- 多媒体设备管理器 一文,我们从Owner的角度详细描述了多媒体设备管理器的使用,本文我们将站在Guest的角度,描述OMCS中另一类组件/控件:多媒体连接器.多媒体连接 ...
- ajax通过设置Access-Control-Allow-Origin来实现跨域访问
[在被请求的Response header中加入] // 指定允许其他域名访问(*代表所有域名)header('Access-Control-Allow-Origin:*');// 响应类型heade ...
- .Net Core 第三方工具包整理
本地日志[NLog.Extensions.Logging]:https://github.com/NLog/NLog.Extensions.Logging
- Just do it!!!
从今日起,开个开发自己个人轻量级博客,加油!!!!!