Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 关于带有凭据的Wget的Bash脚本_Linux_Bash_Login_Wget_Postdata - Fatal编程技术网

Linux 关于带有凭据的Wget的Bash脚本

Linux 关于带有凭据的Wget的Bash脚本,linux,bash,login,wget,postdata,Linux,Bash,Login,Wget,Postdata,我正试图做一个脚本登录到某个网站,并获得我将被记录的页面信息。 我在堆栈上搜索过,似乎我必须使用3个wget: 一个用于获取隐藏令牌,一个用于cookies和post数据,最后一个用于获取我想要的。代码如下: #!/bin/bash # get the login page to get the hidden field data wget -a log.txt -O loginpage.html --user-agent="Mozilla/5.0" site/login hiddendata=

我正试图做一个脚本登录到某个网站,并获得我将被记录的页面信息。 我在堆栈上搜索过,似乎我必须使用3个wget: 一个用于获取隐藏令牌,一个用于cookies和post数据,最后一个用于获取我想要的。代码如下:

#!/bin/bash
# get the login page to get the hidden field data
wget -a log.txt -O loginpage.html --user-agent="Mozilla/5.0" site/login
hiddendata=$(cat loginpage.html | grep __Req | cut -d'"' -f6,6 | head -n1 | sed s/\"//g)


echo "Logging with user $1 and pass $2"
wget --secure-protocol=auto --save-cookies cookies.txt --post-data="LoginDataModel.LoginName=$1&LoginDataModel.Password=$2&__RequestVerificationToken=${hidden_data}" --user-agent="Mozilla/5.0" site/login/login
其中site/login是登录页面,site/login/login是post操作,post数据值是
Logging with user x and pass y
--2015-02-07 12:29:07--  site/Login/Login
Resolving site (site)... 91.208.180.39
Connecting to site (site)|91.208.180.39|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: site/Login/Login [following]
--2015-02-07 12:29:18--  site/Login/Login
Resolving site (site)... 91.208.180.39
Connecting to site (site)|91.208.180.39|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2015-02-07 12:29:23 ERROR 404: Not Found.
当我检查时,site/login/login存在。我做错了什么?非常感谢。
由于无法正确连接,我还没有完成第三个wget以获得我想要的内容。

我仍然无法发表评论,因此我会将其作为答案发布。我建议使用
curl
而不是
wget
。 如何使用
curl
执行此操作的示例:。根据你的描述,这正是你所需要的



您是否尝试了
回显完整的wget命令并手动运行它?是的,我尝试过,没有区别。首先,我认为这是因为我没有使用任何ssl协议,但这并没有解决问题。在连接到它之后,它被移动到并获得404'd。site/login/login存在。我怀疑这是一个ssl问题,请注意,您的第一次尝试是使用HTTPS(端口443),它被重定向到端口80(HTTP)。当您从浏览器登录时,使用wireshark之类的工具嗅探HTTP会话并查找差异。我建议改用curl,verbose模式为您显示非常方便调试的标题