Angular 浏览页面后,将HTTP请求作为单独的Web爬网请求发送(角度站点)

Angular 浏览页面后,将HTTP请求作为单独的Web爬网请求发送(角度站点),angular,vba,web-crawler,winhttprequest,imanage,Angular,Vba,Web Crawler,Winhttprequest,Imanage,我的公司最近升级到了新版本的iManager(一种文件归档系统),它不再有暴露于VBA的库。由于公司政策,我可以正常运行VBA,但无法创建VSTO/.NET加载项 我正在尝试修复一个加载项工具,该工具可以清点文件夹/子文件夹中的所有项目 我目前正在探索的解决方案是让用户导航到新web门户中的文件夹,然后从那里清点目录。我可能会做经典的网络画图,并在浏览器中点击链接,但这将是缓慢和相当丑陋的。由于它是一个角度应用程序,我认为我应该能够在不等待页面加载的情况下触发REST请求并解析响应 我对Inva

我的公司最近升级到了新版本的iManager(一种文件归档系统),它不再有暴露于VBA的库。由于公司政策,我可以正常运行VBA,但无法创建VSTO/.NET加载项

我正在尝试修复一个加载项工具,该工具可以清点文件夹/子文件夹中的所有项目

我目前正在探索的解决方案是让用户导航到新web门户中的文件夹,然后从那里清点目录。我可能会做经典的网络画图,并在浏览器中点击链接,但这将是缓慢和相当丑陋的。由于它是一个角度应用程序,我认为我应该能够在不等待页面加载的情况下触发REST请求并解析响应

我对InvalidToken以失败的身份返回有一个问题

{
  "error": {
    "code": "InvalidToken",
    "message": "X-Auth-Token is invalid or missing"
  }
}
我目前得到的解决方案是在ExcelVBA的UserForm中创建WebBrowser对象。此用户表单可导航到iManager门户。然后,我可以很好地浏览站点,并单击按钮启动请求

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中看到的HTMLdocmnet,它从来没有列出我在Chrome中看到的所有cookie

感谢您所能做的一切,我目前正在进行一些角度训练,但不幸的是,这有点超出了范围。

最后一个屏幕截图中标记为“HttpOnly”的cookie无法使用
文档进行检索。cookie

JavaScript无法访问具有HttpOnly属性的cookie Document.cookie API;它只发送到服务器。例如 持久化服务器端会话的cookie不需要可用 到JavaScript,并且应该具有HttpOnly属性。这一预防措施 帮助减轻跨站点脚本(XSS)攻击


也许你可以试试:

鹰眼在那里!