2016-09-12 16 views
0

私は2つのホストに同じ(Django)ウェブサイトを展開しています。 1つはSSLとsnakeoil cert、もう1つはHTTPだけです。 wgetを使用してログインスクリプトを作成しようとしています。次のスクリプトはHTTPサイトでは動作しますが、HTTPSでは動作しません。wget cookiesログインスクリプト:同じサイト、HTTPスクリプトが動作する、HTTPSがありません

Djangoのサイトに注意してください。ログインには2回のリクエストが必要です。最初の要求は、第二の柱、ログインフォームに戻ってログインクレドCSRFトークンを取得します - CSRFトークンと一緒に:SSLサイトで

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 

私はこの出力を得る:

--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と何か関係があるのだろうか?何か案は?

答えて

0

私のブラウザが何をしていたのかを見て、--header="Referer: ${LOGIN_URL}"を2番目のwgetコールに追加して機能させました。

不明1. DjangoがRefererなしで何かを拒絶するのはなぜですか?私はそれが理にかなっていると思います(?)2.なぜHTTP専用サイトで動いていたのですか?しかし、...動いている。

関連する問題