curl - 如何使用 wget 或类似工具模拟 archive.org 的“保存外链”选项?
问题描述
如果您登录到 archive.org 并存档网页,则有一个选项Save outlinks:
我查看了一个请求中的所有 http 标头,选中了这个复选框,一个请求没有选中它,并且在这两个请求之间找不到与这个复选框对应的任何差异。
我想使用 wget 或类似的和/或 Java 来模拟此复选框。我怎么做?
奖励指向任何可以解释如何使用网络检查器、扩展程序或类似工具来解决这个问题的人。
解决方案
-
并且找不到任何差异
但是有区别。发出带有和不带有复选框的请求,右键单击它们,选择
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" } ] }
此外,您还会发现一个后续的 GET 请求,例如
https://web.archive.org/save/status/{job_id}?_t={timestamp}
. 作为对它的响应,您会发现application/json
其中包含数组的 JSONoutlinks
,实际上,outlinks
两个 HAR 中都存在数组。但是当capture_outlinks=on
还有resources
数组时。上述请求是从加载的脚本启动的。这可以通过
save/status
在 HAR 或DevTools中的“Initiator”选项卡中搜索来找到。事实上,
job_id
您可以通过在同一 JSON 中搜索它的值来确认它是什么,并且您会在POST
对https://web.archive.org/save/https://的初始响应中找到它stackoverflow.com/内调用watchJob()
也许我错过了什么,但正如我现在所看到的,你需要
- 使用 form-urlencoded向https://web.archive.org/save/https://stackoverflow.com/发送 POST
url=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,并且可能会生成一个正确的时间戳)
推荐阅读
- functional-programming - 如何调用函数并在该函数中使用全局变量
- machine-learning - 梯度下降算法,我也应该标准化参数吗?
- google-visualization - 在 hAxis 中显示所有日期
- javascript - compiler.js:1021 未捕获的错误:模块“UserModule”导入的意外值“UserService”。请添加@NgModule 注释
- vue.js - 无法从集合中返回随机 Firestore 文档
- git - 我可以在 SVN/GIT 存储库中看到未成功推送的文件吗?
- jsf - 如何展开动态子菜单
- python - Ansible 更新到 2.8 后找不到 Python 库
- mysql - 使用 MySQL 5.7 运行 Sphinx 2.2.11 不起作用
- python - 用 python ping