如何使用Wget浏览login页面?

我正在尝试使用Wget下载页面,但无法通过login屏幕。

如何使用login页面上的发布数据发送用户名/密码,然后以经过validation的用户身份下载实际页面?

基于手册页面:

# 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参数是正确的百分比编码 (尤其是&符号!),否则请求可能会失败。 还要确保userpassword是正确的密钥; 您可以通过检查login页面的HTML来查找正确的键(查看浏览器的“检查元素”function,并在用户名和密码字段中findname属性)。

我直接把一个现有连接的cookie给了wget –no-cookies和Cookie HTTP请求头。 在我的情况下,这是一个Moodle的大学loginlogin看起来更复杂(使用多个请求与login票)。 我添加了 – 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

我有同样的问题。 我的解决scheme是通过Chrome进行login,并将cookie数据保存到文本文件。 Chrome浏览器扩展程序很容易实现: Chrome cookie.txt导出扩展程序 。

当您获取cookies数据时,还有一个关于如何通过wget使用它们的例子。 一个简单的复制粘贴命令行提供给你。

如果您需要一次性使用,则可以通过浏览器login,然后复制所需的标题:

截图 在Developer Tools的Network选项卡中使用“Copy as cURL”(打开后重新加载页面),并将curl的标题标志-Hreplace为wget的 – --header

你不需要cURL来做张贴的表单数据。 --post-data 'key1=value1&key2=value2'工作得很好。 注意:你也可以传递一个文件名到wget文件中的POST数据。

如果他们使用基本authentication:

 wget http://username:password@www.domain.com/page.html 

如果他们使用张贴的表单数据,则需要使用类似cURL的内容 。

我想要一个没有下载任何文件的单行文本; 这里是一个将cookie输出传送到下一个请求的例子。 我只在Gentoo上testing了以下内容,但它应该可以在大多数* 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的解决scheme。 当您想要使用wget从需要login的站点下载某个文件时,您只需要一个cookie文件。 为了生成cookie文件,我select了lynx。 l is是一个文本的Web浏览器。 首先你需要一个用于保存cookie的lynxconfiguration文件。 创build一个文件lynx.cfg。 将这些configuration写入文件。

 SET_COOKIES:TRUE ACCEPT_ALL_COOKIES:TRUE PERSISTENT_COOKIES:TRUE COOKIE_FILE:cookie.file 

然后用这个命令启动lynx:

 lynx -cfg=lynx.cfg http://the.site.com/login 

input用户名和密码后,select“保存在这台电脑上”或类似的东西。 如果login成功,你会看到一个美丽的文字网站的网站。 而你注销。 在当前目录中,您将find一个名为cookie.file的cookie文件。 这是我们需要的wget。

然后wget可以用这个命令从网站上下载文件。

 wget --load-cookies ./cookie.file http://the.site.com/download/we-can-make-this-world-better.tar.gz