2012-02-02 103 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