VBA中如何使用Edge内核Browser?

问题:

在微软宣布停止对IE的支持后,许多使用VBA中Web Browser的用户遇到了困境,因为Web Browser使用的IE内核。然而微软并没有给出支持Edge的新版Web Browser,网上许多第三方的库也不够完善。

解决方案:

经过调研,libEdge可以较好的和VBA集成,实现在Excel中打开Browser,甚至能够通过执行js代码,获取web页面的信息。
https://github.com/bubdm/libEdge/tree/main/VBA_libEdge

注意:
项目需要WebView2Loader.dll和LibEdge.dll两个库,区分x86和x64版本。

示例代码:

Public Function GetEncodedCookieFromWebBrowser(serverIP As String) As String
    Dim url As String
    Dim encodedCookie As String
    Dim isValidIPFormat As Boolean
    Dim jsResult As String
    Dim path As String

    encodedCookie = ""
    url = "https://" + serverIP + "/proj/demo/" + Guid()
    isValidIPFormat = IsValidIP(serverIP)
    path = Application.ActiveWorkbook.path & "\
### 使用 VBA 抓取网页上的 Token 为了实现从网页上抓取 Token 的目标,可以采用多种方法和技术栈组合来完成这一操作。一种有效的方式是利用 `libEdge` 库与 Edge 浏览器的 Chromium 版本相结合,在 Excel 中通过 VBA 脚本来控制浏览器并执行 JavaScript 来获取所需的数据。 #### 方法一:使用 libEdgeVBA 结合 由于 `libEdge` 可以较好地同 VBA 集成,允许开发者在 Excel 环境下启动基于 Chromium 内核的新版 Microsoft Edge 浏览器,并且可以通过调用 JavaScript 函数直接交互于 Web 页面[^1]。因此,这种方法非常适合用来捕获动态加载的内容如 JWT (JSON Web Tokens) 或其他形式的身份验证令牌。 以下是简化后的代码片段展示如何初始化 `libEdge` 并尝试读取页面中的特定元素: ```vb Sub GetTokenFromPage() Dim edge As Object Set edge = CreateObject("LibEdge.Browser") ' 打开含有 token 的 URL 地址 Call edge.Navigate("http://example.com/login") Do While edge.Busy Or edge.ReadyState <> 4 DoEvents Loop ' 假设页面有一个 id="auth-token" 的隐藏输入框保存着 token Dim jsCode As String jsCode = "document.getElementById('auth-token').value;" ' 执行 JS 返回结果 Debug.Print edge.ExecuteScript(jsCode) End Sub ``` 这段脚本会导航到指定网址等待页面完全加载完毕之后再运行一段简单的 JavaScript 表达式去检索具有 ID 属性等于 `"auth-token"` 的 HTML 元素内的值——这通常就是我们需要的那个访问令牌了。 #### 方法二:借助 Selenium WebDriver 实现自动化流程 另一种更为通用的选择则是运用像 Selenium 这样的工具集来进行更复杂的 UI 自动化任务。对于那些需要模拟真实用户的点击、填写表单等行为才能获得最终想要的结果的情况特别有用。这里推荐下载对应版本的 ChromeDriver 放置在同一目录下以便后续配置[^5]。 安装好必要的组件后就可以编写如下所示的宏程序: ```vb Private selenium As New Selenium.ChromeDriver Sub FetchTokenUsingSelenium() With selenium .Start "chrome" .Get "https://some-site-with-authentication/" ' 如果有登录环节则先处理认证逻辑... ' 提交用户名密码或其他必要参数 Application.Wait Now + TimeValue("0:00:02") ' 获取包含 token 的响应体部分 Dim sourceHTML As String sourceHTML = .FindElementById("token-container").Attribute("innerText") MsgBox ("Captured Token is:" & vbCrLf & sourceHTML) .Quit End With End Sub ``` 此段代码展示了怎样创建一个新的 Chrome 浏览器实例并通过它访问某个站点;接着可能还需要额外的操作比如提交账号信息以触发身份验证过程从而让服务器返回有效的安全凭证给我们。最后一步是从 DOM 文档里定位到存储了临时密钥的位置并将之显示出来供进一步分析或记录用途。 无论采取哪种方案都需要注意保护敏感数据的安全性和合法性问题,确保遵循所有适用法律法规以及服务提供商的服务条款。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值