我的公司最近升级到了新版本的iManage (一个文件归档系统),它不再向VBA公开库。由于公司策略,我可以运行VBA,但不能创建VSTO/.NET加载项。
我试图修复一个外接程序工具,它可以清点文件夹/子文件夹中的所有项目。
我目前正在探索的解决方案是导航到新门户中的文件夹,然后从那里进行库存。我可能可以做经典的网页爬行,并通过浏览器中的链接点击,但这将是缓慢和相当丑陋的。因为它是一个角度的应用程序,我认为我应该能够触发REST请求并解析响应,而无需等待页面加载。
我对InvalidToken的失败感到不满。
{
"error": {
"code": "InvalidToken",
"message": "X-Auth-Token is invalid or missing"
}
}当前的解决方案是在Excel中的WebBrowser中创建一个UserForm对象。这个用户表单导航到我们的iManage门户。然后,我可以浏览网站,并单击一个按钮来启动请求。
Private Sub CommandButton1_Click()
Debug.Print WebBrowser1.Busy
Dim Doc As HTMLDocument
Set Doc = WebBrowser1.Document
Debug.Print Doc.cookie
Dim Request As New WinHttpRequest
Request.Open "GET", Url:="https://imanage.xxxx.com/work/web/api/v2/customers/1/libraries/CLIENT-JOB/tabs/CLIENT-JOB!9975487/children?limit=500&offset=0&total=true", ASync:=False
Request.setRequestHeader "Content-Type", "application/json"
Request.setRequestHeader "Accept-Encoding", "gzip, deflate, br"
Request.setRequestHeader "Accept-Language", "en-GB,en-US;q=0.9,en;q=0.8"
Request.setRequestHeader "Connection", "keep-alive"
Request.setRequestHeader "Host", Doc.Location.host
Request.setRequestHeader "Referer", Doc.Location.href
'Request.setRequestHeader "Cookie", WebBrowser1.Document.cookie
Request.setRequestHeader "Set-Cookie", WebBrowser1.Document.cookie
Request.setRequestHeader "X-XSRF-TOKEN", Split(Split(WebBrowser1.Document.cookie, ";")(2), "=")(1)
Request.send
Dim Result As String
Result = Request.responseText
Debug.Print Result
End Sub
Private Sub UserForm_Initialize()
WebBrowser1.Navigate2 "https://imanage.XXXXX.com/work/web/r/custom2/recent-custom2?exclude_emails=true&scope=Admin,AdminArchive,Client-Job,JobArchive&p=1"
End Sub我觉得这是在复制我在Chrome中看到的请求调用。

我认为问题的很大一部分是,我在WebBrowser中看到的WebBrowser从未列出我在Chrome中可以看到的所有相同的cookie。


发布于 2021-05-05 16:07:44
最后一张屏幕截图中标记为"HttpOnly“的Cookies不能使用document.cookie检索
https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
带有HttpOnly属性的cookie是JavaScript Document.cookie API无法访问的;它只发送给服务器。例如,持久化服务器端会话的cookie不需要对JavaScript可用,而应该具有HttpOnly属性。这种预防措施有助于减少跨站点脚本(XSS)攻击。
https://stackoverflow.com/questions/67403668
复制相似问题