具体来说,我希望能够从我在各个 Stack Exchange 网站上的用户个人资料中下载某些页面。但是,我希望自动(使用作业cron
)从命令行以可解析的格式执行此操作。我更喜欢使用 Linux 来实现这一点,但如果有必要,我也可以访问 Mac 或 Windows 计算机。
理想情况下,我想使用类似的工具获得或者卷曲来获取页面。不过我不知道如何绕过登录。我看到一些建议提到你可以通过 Firefox 登录,导出相关 cookie 并通过其--load-cookies
选项将其导入 Wget。例如这里和这里。如果我刚刚登录,这个功能可以工作,但过了一会儿就不行了。我猜是因为 ID 令牌需要刷新。
因此,登录 SU 并导出我的 cookie 后,我可以执行以下操作:
wget --load-cookies cookies.txt \
https://superuser.com/users/151431/terdon?tab=responses
几分钟后,我收到 404 错误:
wget -O ~/stack/$(date +%s) --load-cookies ~/cookies.txt \
https://superuser.com/users/151431/terdon?tab=responses
--2013-08-06 04:04:14-- https://superuser.com/users/151431/terdon?tab=responses
Resolving superuser.com (superuser.com)... 198.252.206.16
Connecting to superuser.com (superuser.com)|198.252.206.16|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2013-08-06 04:04:15 ERROR 404: Not Found.
那么,如何从命令行自动登录到启用 OpenID 的网站?
PS。我认为这比在 Web 应用程序中更适合,因为我的问题实际上是关于命令行方面,而不是所讨论的网页的实际细节。我猜任何解决方案都适用于所有开放ID網站。
答案1
你不能,因为 Cookies 会经常刷新。这是出于安全考虑,唯一能做到的就是你已经做过的方式。至少,据我所知。
答案2
(重新)阅读手册页并查看和标志wget
的描述。--user
--password
请注意,不建议将密码作为命令行参数传递,因为任何运行的人 ps
都可以看到它。最佳做法是不要将原始密码保存在任何地方,但次佳做法是将其放在只有所有者可以读取的文件中。