首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将HTTP请求作为单独的Web爬行请求发送到页面(角站点)

问将HTTP请求作为单独的Web爬行请求发送到页面(角站点)
EN

Stack Overflow用户
提问于 2021-05-05 14:49:44
回答 1查看 210关注 0票数 1

我的公司最近升级到了新版本的iManage (一个文件归档系统),它不再向VBA公开库。由于公司策略,我可以运行VBA,但不能创建VSTO/.NET加载项。

我试图修复一个外接程序工具,它可以清点文件夹/子文件夹中的所有项目。

我目前正在探索的解决方案是导航到新门户中的文件夹,然后从那里进行库存。我可能可以做经典的网页爬行,并通过浏览器中的链接点击,但这将是缓慢和相当丑陋的。因为它是一个角度的应用程序,我认为我应该能够触发REST请求并解析响应,而无需等待页面加载。

我对InvalidToken的失败感到不满。

代码语言:javascript
复制
{
  "error": {
    "code": "InvalidToken",
    "message": "X-Auth-Token is invalid or missing"
  }
}

当前的解决方案是在Excel中的WebBrowser中创建一个UserForm对象。这个用户表单导航到我们的iManage门户。然后,我可以浏览网站,并单击一个按钮来启动请求。

代码语言:javascript
复制
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。

​

​

​

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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)攻击。

也许你可以试试:Retrieve ALL cookies from Internet Explorer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67403668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档