首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wget cookies登录脚本:同一站点,HTTP脚本有效,HTTPS不起作用

wget cookies登录脚本:同一站点,HTTP脚本有效,HTTPS不起作用
EN

Stack Overflow用户
提问于 2016-09-12 23:41:51
回答 1查看 333关注 0票数 1

我在两台主机上部署了相同的(Django)网站;一台带有SSL和一个蛇油证书,另一台只有HTTP。我正在尝试使用wget编写登录脚本。以下脚本适用于HTTP站点,但不适用于HTTPS。

注意这是一个Django站点。登录需要2个请求。第一个请求获取登录表单中的CSRF令牌,第二个请求将登录凭据连同CSRF令牌发送回来:

代码语言:javascript
复制
rm ${COOKIE_FILE}
TOKEN=`wget ${LOGIN_URL} -O- --save-cookies ${COOKIE_FILE} --keep-session-cookies \
  --server-response --no-check-certificate \
  | grep csrfmiddlewaretoken | sed -r 's/.*value="(.*)".*/\1/'`
POST="csrfmiddlewaretoken=${TOKEN}&username=${USERNAME}&password=${PASSWORD}"
wget ${LOGIN_URL} -O- --load-cookies ${COOKIE_FILE} --save-cookies ${COOKIE_FILE} \
  --keep-session-cookies --no-check-certificate --server-response \
  --post-data "$POST" >/dev/null

在SSL站点上,我得到以下输出:

代码语言:javascript
复制
--2016-09-13 01:20:38--  https://nowhere.com/accounts/login/
Resolving nowhere.com (nowhere.com)... 10.1.1.123
Connecting to nowhere.com (nowhere.com)|10.1.1.123|:443... connected.
WARNING: The certificate of ‘nowhere.com’ is not trusted.
WARNING: The certificate of ‘nowhere.com’ hasn't got a known issuer.
The certificate's owner does not match hostname ‘nowhere.com’
HTTP request sent, awaiting response... 
  HTTP/1.1 403 FORBIDDEN
  Date: Mon, 12 Sep 2016 15:20:58 GMT
  X-Frame-Options: SAMEORIGIN
  Keep-Alive: timeout=5, max=100
  Connection: Keep-Alive
  Transfer-Encoding: chunked
  Content-Type: text/html
2016-09-13 01:20:41 ERROR 403: FORBIDDEN.

我已验证我可以通过浏览器使用相同的凭据登录HTTPS站点。我怀疑这和SSL有什么关系?有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-12 23:59:16

我查看了我的浏览器所做的不同之处,然后将--header="Referer: ${LOGIN_URL}"添加到第二个wget调用中,它就可以工作了。

不完全确定1.为什么Django会拒绝没有推荐人的东西。我猜这是有道理的(?) 2.为什么它在HTTP only站点上工作。但是..。下一步。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39454093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档