回答
根據手冊頁:
# Log in to the server. This only needs to be done once.
wget --save-cookies cookies.txt \
--keep-session-cookies \
--post-data 'user=foo&password=bar' \
--delete-after \
http://server.com/auth.php
# Now grab the page or pages we care about.
wget --load-cookies cookies.txt \
http://server.com/interesting/article.php
確保--post-data
參數是正確percent-encoded(尤其是&符號!),或者請求可能會失敗。還要確保user
和password
是正確的密鑰;您可以通過檢查登錄頁面的HTML來找到正確的鍵(查看瀏覽器的「檢查元素」功能並在用戶名和密碼字段中找到name
屬性)。
添加--keep-session-cookies到第一個命令,或第二個? – 2011-11-09 02:56:13
你不需要'-p'('--page-requisites')。 – 2012-01-06 17:24:31
在第一次檢索時加上'--delete-after'也是值得的,所以你最終不會保存結果頁面登錄。 – 2013-01-02 15:41:52
我沒有訪問改變服務器上的任何東西,它是隻讀的 – 2009-08-24 20:13:07
那麼?這些都不需要你改變服務器上的任何東西。 – ceejayoz 2009-08-24 20:15:33
您不需要cURL來執行發佈的表單數據。 --post-data 'key1=value1&key2=value2'
工作得很好。注意:您也可以將文件名稱傳遞給wget,以獲取文件中的POST數據。
我有同樣的問題。我的解決方案是通過Chrome進行登錄並將Cookie數據保存到文本文件。使用此Chrome擴展程序可輕鬆完成此操作:Chrome cookie.txt export extension。
當您獲取cookies數據時,還有一個關於如何將它們與wget一起使用的示例。提供了一個簡單的複製粘貼命令行。
不幸的是不適用於自動腳本 – Znik 2015-08-21 13:49:15
我直接給現有連接的cookie提供了--no-cookies和Cookie HTTP請求頭。在我的情況下,這是一個Moodle大學登錄,登錄看起來更復雜(使用多個請求和登錄憑證)。我添加了--post-data,因爲它是一個POST請求。 例如,讓所有的Moodle用戶列表:
wget --no-cookies --header "Cookie: <name>=<value>" --post-data 'tab=search&name=+&personsubmit=Rechercher&keywords=&keywordsoption=allmine' https://moodle.unistra.fr/message/index.php
真棒技巧。當您可以從自己的機器訪問cookie,然後從命令行使用另一臺無頭機器時,這很有用。 :) – Tuxdude 2016-07-27 18:29:05
如果你需要它的一次性使用,您可以通過瀏覽器登錄,之後複製所需的標題:
使用「複製爲CURL「(開發者工具的Network選項卡中的」cURL「(打開後重新加載頁面)並將curl的標題標誌-H
替換爲wget的--header
。
我想要一個沒有下載任何文件的單線程;這裏是一個將cookie輸出傳送到下一個請求的例子。我只測試了Gentoo的下面,但它應該在大多數* nix環境下工作:
wget -q -O /dev/null --save-cookies /dev/stdout --post-data 'u=user&p=pass' 'http://example.com/login' | wget -q -O - --load-cookies /dev/stdin 'http://example.com/private/page'
(這是一條線,但在你的瀏覽器,它有可能套)
如果你想輸出保存到文件,將-O -
更改爲-O /some/file/name
我使用了一個使用lynx和wget的解決方案。 當您想要使用wget從需要登錄的站點下載某個文件時,您只需要一個cookie文件。 爲了生成cookie文件,我選擇了lynx。 lynx是一個文字網頁瀏覽器。 首先你需要一個用於保存cookie的lynx配置文件。 創建一個文件lynx.cfg。將這些配置寫入文件。
SET_COOKIES:TRUE
ACCEPT_ALL_COOKIES:TRUE
PERSISTENT_COOKIES:TRUE
COOKIE_FILE:cookie.file
然後使用此命令啓動山貓:
lynx -cfg=lynx.cfg http://the.site.com/login
你輸入用戶名和密碼,並選擇後「保存我的這臺電腦」或類似的東西。如果登錄成功,您將看到該網站的美麗文本網頁。你註銷。 在當前目錄中,您將找到一個名爲cookie.file的cookie文件。這是我們需要的wget。
然後wget可以使用此命令從站點下載文件。
wget --load-cookies ./cookie.file http://the.site.com/download/we-can-make-this-world-better.tar.gz
- 1. 登錄系統後,通過瀏覽器登錄到特定頁面
- 2. 通過cookie登錄頁面
- 3. 單點登錄通過IE瀏覽器
- 4. 通過wget登錄到網站
- 5. 如何取消Facebook登錄頁面在網絡瀏覽
- 6. 如何讓頁面知道瀏覽器是否已登錄?
- 7. 原生Facebook登錄體驗通過瀏覽器登錄
- 8. 如何通過使用biterScripting來通過登錄頁面捕獲頁面?
- 9. 如何通過AIR的瀏覽器登錄用戶?
- 10. 如何讓用戶通過瀏覽器登錄
- 11. 如何在瀏覽器中跳過被瀏覽頁面的歷史記錄
- 12. 無法通過瀏覽器後退按鈕瀏覽頁面
- 13. 訪問任何頁面而無需通過登錄頁面
- 14. WordPress的 - 通過登錄保護頁面
- 15. 通過Android創建登錄頁面Eclipse
- 16. 通過cURL登錄到Javascript頁面?
- 17. 通過彈出窗口登錄頁面
- 18. 查看登錄頁面時的頁面瀏覽數量高於所有頁面
- 19. nginx響應遠程登錄,但不是wget /瀏覽器
- 20. 如何通過icefaces瀏覽jsp portlet頁面?
- 21. 如何通過rest api得到linkedin頁面瀏覽量
- 22. 如何瀏覽通過電子菜單頁面 - angularjs應用
- 23. 如何在瀏覽器中直接瀏覽先前瀏覽過的頁面?
- 24. 獲取網頁瀏覽器cookies登錄
- 25. VB.Net網頁與IE瀏覽器登錄
- 26. 通過curl登錄,然後打開該頁面登錄
- 27. 如何通過瀏覽器
- 28. 過期的登錄頁面
- 29. 如何僅通過登錄頁面接受註冊用戶
- 30. 如何通過導航欄而不是頁面創建登錄
對於捲曲:http://stackoverflow.com/questions/12399087/curl-to-access-a-page-that-requires-a-login-from-a-different-page – 2015-05-07 09:04:15