首页 > 解决方案 > 如何使用 wget 或类似工具模拟 archive.org 的“保存外链”选项?

问题描述

如果您登录到 archive.org 并存档网页,则有一个选项Save outlinks截屏

我查看了一个请求中的所有 http 标头,选中了这个复选框,一个请求没有选中它,并且在这两个请求之间找不到与这个复选框对应的任何差异。

我想使用 wget 或类似的和/或 Java 来模拟此复选框。我怎么做?

奖励指向任何可以解释如何使用网络检查器、扩展程序或类似工具来解决这个问题的人。

标签: curlposthttp-headerswget

解决方案


  1. 并且找不到任何差异

    但是有区别。发出带有和不带有复选框的请求,右键单击它们,选择Save all as HAR with content。区分它。(在DevTools中也可以看到 - 在“标题”选项卡的底部)。

    capture_outlinks=on

    "postData": {
      "mimeType": "application/x-www-form-urlencoded",
      "text": "url=https%3A%2F%2Fstackoverflow.com%2F&capture_outlinks=on",
      "params": [
        {
          "name": "url",
          "value": "https%3A%2F%2Fstackoverflow.com%2F"
        },
        {
          "name": "capture_outlinks",
          "value": "on"
        }
      ]
    }
    

    没有:

    "postData": {
      "mimeType": "application/x-www-form-urlencoded",
      "text": "url=https%3A%2F%2Fstackoverflow.com%2F",
      "params": [
        {
          "name": "url",
          "value": "https%3A%2F%2Fstackoverflow.com%2F"
        }
      ]
    }
    
  2. 此外,您还会发现一个后续的 GET 请求,例如https://web.archive.org/save/status/{job_id}?_t={timestamp}. 作为对它的响应,您会发现application/json其中包含数组的 JSON outlinks,实际上,outlinks两个 HAR 中都存在数组。但是当capture_outlinks=on还有resources数组时。

  3. 上述请求是从加载的脚本启动的。这可以通过save/status在 HAR 或DevTools中的“Initiator”选项卡中搜索来找到。

  4. 事实上,job_id您可以通过在同一 JSON 中搜索它的值来确认它是什么,并且您会在POSThttps://web.archive.org/save/https://的初始响应中找到它stackoverflow.com/内调用watchJob()

也许我错过了什么,但正如我现在所看到的,你需要

  • 使用 form-urlencoded向https://web.archive.org/save/https://stackoverflow.com/发送 POSTurl=https%3A%2F%2Fstackoverflow.com%2F&capture_outlinks=on
  • 以某种方式从响应中获取job_id(可能是正则表达式)
  • 然后,用job_id你找到的,发出 GET 请求https://web.archive.org/save/status/{job_id}?_t={timestamp}(当然你需要 cookie,并且可能会生成一个正确的时间戳)

推荐阅读