我想下载我所属的 Facebook 群组中托管的文件。
我找不到任何相关的API,并且以下Quora 上的问题指向过时的扩展。
第一个挑战是点击查看更多以查看所有文件,然后逐个单击它们。有时在查看更多,AJAX加载卡住了,需要刷新整个页面重新开始。
如何实现这一点?
答案1
以下是我发现的步骤:
- 导航文件页面Facebook。
使用开发者工具JS Console 运行以下代码(忽略红色停止符号):
setInterval(function() { document.getElementsByClassName("uiMorePagerPrimary")[0].click(); }, 20000);
脚本将点击查看更多每 20 秒按一次按钮,即使按钮卡住了。
当页面完全加载时,将所有链接提取到
urls
变量中。var urls = []; for (var i = document.links.length; i --> 0;) if (document.links[i].href.includes("download")) urls.push(document.links[i].href);
console.log(urls)
您也可以选择使用或打印链接console.table(urls)
。- 通过运行将链接复制到剪贴板:
copy(urls.join("\n"))
然后粘贴到文本文件中。 - 来自网络标签开发者工具,选择一个请求并复制为 cURL(不是全部)。
通过对命令进行以下调整将其转换为
wget
(按照此邮政):- 更改
curl
为wget
(左侧第一根弦)。 - 删除 URL(左边第二个字符串)。
- 删除
--compress
参数。 - 在所有地方都
-H
改为。--header
- 添加
-nc
或者-c
不重新下载现有文件。 - 添加
--content-disposition
参数。 - 通过添加以下内容指向包含列表的文本文件:
-i list.txt
。
注意:如果您是 Vim 用户,请运行
set -o vi
,键入命令,然后按Esc+ V,在 Vim 中编辑 shell 命令。- 更改
运行上述转换后的命令,开始下载文件。它应该看起来像:
wget --header '...' --header '...' --content-disposition -c -i list.txt