我正在尝试创建自定义程序(或脚本)来登录网页然后下载文件。登录页面有一个包含2个文本字段(用户名和密码)和隐藏字段“authenticity_token”的表单。我读过有关真实性令牌的信息。
我尝试使用curl自定义bash脚本,但它不起作用。任何人都可以看看我的代码并告诉我它有什么问题吗?
#!/bin/bash
#Pulls the login page and strips out the auth token
authToken=`curl -L -c cookies.txt --silent 'http://xxx.xxxxx.xx' | grep authenticity_token | awk -F'value="' '{print $2;}' | awk -F'="' '{print $1;}'`
echo $authToken
# Posts all the pre-URI-encoded stuff and appends the URI-encoded auth token
curl -L -c cookies.txt -b cookies.txt --data-urlencode authenticity_token=$authToken --data-urlencode 'username=my-username' --data-urlencode 'password=my-pass' 'http://xxx.xxxxx.xxx/login'
# access the page i want
curl -b cookies 'http://xxx.xxxxx.xxx/page_i_want_to_access'
当我使用浏览器登录网页时,如果登录成功,服务器会将我重定向到下一页,但是当我使用我的脚本时,服务器会回复标题为“200 OK”的数据包,而不是“302”重定向“(我正在使用wireshark捕获pakets)。所以我认为身份验证不起作用。
有什么建议吗?