2012-02-02 136 views
1

我有一个(合法的)边界案例,我想使用任何命令行工具下载网页,但网页需要OpenID登录才能显示我需要的内容。将wget与OpenID结合使用登录

wget支持basic auth and FTP,但我想不出一个与OpenID登录结合使用它的理智方式。我能想到的

  • 的唯一方式,从最后一次通话
  • 执行使用 wget
  • 不知何故存储所产生的会话cookie
  • 尝试使用其他wget调用抓取网页的OpenID登录,并--load-cookies饼干

尽管这看起来很复杂,但由于IIRC的OpenID登录过程并不完全像普通的旧网站登录一样简单。有谁要么

  • 知道一个不太复杂的方式(执行OpenID登录手动别的地方是完全可以接受的)
  • 知道一个现成的实施就是我上面描述?如果可能的话,我很乐意避免从零开始构建。

其他灵感也是受欢迎的。

我可以在Linux或Windows上工作。从基础设施的角度来看,Linux将是首选,但任一平台都可以。

+4

您会考虑切换工具吗? http://antackoverflow.com/questions/5462950/openid-via-curl – Anthony 2012-02-02 21:10:52

+0

@anthony看起来很有趣,非常感谢。我需要wget可以用'--page-requisites'做什么 - 它会尝试加载并保存所有相关的图像和样式表。我会调查'卷曲'是否也可以做到这一点。如果可以的话,我的问题就解决了。 – 2012-02-02 21:13:04

+1

啊,太糟糕了,卷曲不能做到这一点。它只能获取页面结构,而不能获取相关资源。 – 2012-02-02 21:16:39

回答

2

执行OpenID登录其他手动

地方嗯,我能想到的最好的方法是使用任何浏览器登录到任何你想要的服务。然后,服务会以某种方式在您的浏览器的cookie中保存您的“状态”。

获取该cookie,例如,将其存储在cookie.txt中,并将其传递到标题中

wget --header="Cookie: $(cat cookie.txt)" http://... 

只要会话有效,就可以使用wget脚本。应该为99%的案件工作,可能不适用于网上银行(如果它......立即转换银行:-P)

+0

非常感谢。我在JavaScript控制台中使用“document.cookie”来获取cookie字符串,将其保存在'cookie.txt'中,然后使用上面的字符串 - 使用魅力。 – 2014-04-17 11:48:25