【问题标题】:Tracing redirects with Headless Chrome Developer Tools使用 Headless Chrome 开发者工具跟踪重定向
【发布时间】:2017-08-04 11:55:11
【问题描述】:

我使用的是CDP4J,但我希望这个问题与 Google Chrome DevTools 协议直接相关。

我想获取对网页发出的 HTTP 请求和响应代码的列表。因此这将包括主框架中的初始请求和后续请求,通过 3xx 重定向或源自 JavaScript 的导航进行。

目前尚不清楚如何可靠地做到这一点。

我尝试了以下方法:

  1. 商店io.webfolder.cdp.session.Session.getFrameId
  2. 使用addEventListener向会话添加回调,记录io.webfolder.cdp.event.Event.NetworkResponseReceived类型的每个事件
  3. 其中,过滤框架 ID 匹配的那些。
  4. 这些过滤器类型为io.webfolder.cdp.type.page.ResourceType.Document

我有一个我知道返回 HTTP 303 的 URL。但是查看事件,看不到原始 URL,而只看到重定向的最终目的地。每个 NetworkResponseReceived 的状态为 200。

如何捕获重定向链?

【问题讨论】:

    标签: google-chrome google-chrome-devtools google-chrome-headless


    【解决方案1】:

    我找到了答案。 io.webfolder.cdp.event.network.RequestWillBeSent 事件有 getRedirectResponse,如果它是重定向则包含响应。

    【讨论】:

      【解决方案2】:

      为此,我一直在使用 ResponseReceived 事件。这似乎可以从事件中获取文档 URL:

          if (session.getTargetId().equals(responseReceived.getFrameId()) && ResourceType.Document.equals(responseReceived.getType())) {
              String url = responseReceived.getResponse().getUrl();
              ...
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-05
        • 2014-11-10
        • 2016-06-05
        • 2015-07-27
        • 1970-01-01
        • 2011-12-02
        • 2011-09-04
        • 2017-10-03
        相关资源
        最近更新 更多