如何使用 Wget 等命令行工具登录 OpenID 站点?

ter*_*don 10 linux openid wget command-line curl

具体来说,我希望能够从我在各种 Stack Exchange 站点上的用户配置文件中下载某些页面。但是,我想cron从命令行以可解析的格式自动执行此操作(使用作业)。我更喜欢为此使用 Linux,但如果需要,我可以访问 Mac 或 Windows 机器。

理想情况下,我想使用像WgetcURL这样的工具来获取页面。我不知道如何通过登录。我看到一些建议提到您可以通过 Firefox 登录,导出相关 cookie 并通过其--load-cookies选项将其导入 Wget 。例如这里这里。虽然这在我刚刚登录时有效,但一段时间后就无效了。我猜是因为必须刷新 ID 令牌。

因此,在登录 SU 并导出我的 cookie 后,我可以执行以下操作:

wget --load-cookies cookies.txt \
  https://superuser.com/users/151431/terdon?tab=responses
Run Code Online (Sandbox Code Playgroud)

几分钟后,我收到 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.
Run Code Online (Sandbox Code Playgroud)

那么,如何从命令行自动登录到启用了 OpenID 的网站?


附注。我认为这比 Web 应用程序更适合这里,因为我的问题实际上是关于命令行方面的,而不是有关网页的实际细节。我猜想任何解决方案都适用于所有OpenID站点。

小智 -3

(重新)阅读 的手册页并查看和标志wget的描述。--user--password

请注意,不建议将密码作为命令行参数传递,因为任何运行的人都 ps可以看到它。最佳做法是不要将原始密码保存在任何地方,但次佳做法是将其放入只有所有者可以读取的文件中。

  • 您提到的标志用于基于 HTTP 的身份验证(基本、摘要等)。SE 不使用任何这些进行身份验证。他们依赖第三方 [OpenID](http://en.wikipedia.org/wiki/OpenID) 提供商进行身份验证。 (3认同)