2017-12-17 15 views
-1

私の大学のウェブサイトにpython requests.session()関数を使ってログインできないようです。ログインに必要なすべてのヘッダーとCookieを取得しようとしましたが、資格情報で正常にログインできませんでした。エラーは表示されませんが、ログインした後にレビューしたソースコードはまだログインしていないことを示しています。Pythonリクエストのウェブサイトへのログイン

すべてのコードは以下のとおりです。私は自分の資格情報でログインとパスワードを記入しますが、残りは正確なコードです。

import requests 

with requests.session() as r: 
    url = "https://www.ouac.on.ca/apply/nonsecondary/intl/en_CA /user/login" 
    page = r.get(url) 
    aspsessionid = r.cookies["ASPSESSIONID"] 
    ouacapply1 = r.cookies["OUACApply1"] 
    LOGIN = "" 
    PASSWORD = "" 
    login_data = dict(ASPSESSIONID=aspsessionid, OUACApply1=ouacapply1, login=LOGIN, password=PASSWORD) 
    header = {"Referer":"https://www.ouac.on.ca/apply/nonsecondary/intl/en_CA/user/login", "User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0"} 
    logged_in = r.post(url, data=login_data, headers=header) 
    new_page = r.get(url="https://www.ouac.on.ca/apply/nonsecondary/intl/en_CA/profile/") 
    plain_text = new_page.text 
    print(plain_text) 
+0

Chrome/Firefoxで 'DevTool'を使用して、ブラウザがサーバーに送信するすべてのヘッダー/ Cookieを表示します。 – furas

+1

ところで、なぜあなたは 'intl/en_CA/user/login'のURLにスペースがありますか? – furas

+0

オハイオ州私はそれが私のコードをコピーして貼り付けたときだったと思います。事故であったに違いありません。 – Danny

答えて

1

あなたは掲示する必要がある二つの入力欠けている - 2番目の値がそれほど必要に変化し続け

  1. name='submitButton'value='Log In'
  2. name='csrf'value=''

をその価値を動的に得る。 この入力がどこにあるのかを知りたい場合は、フォームの終了タグにジャンプしてください。終了タグのすぐ上に隠れた入力があります。

これらの2つの値をlogin_dataに含めると、ログインできるようになります。

+0

TubbyStubbyありがとうございましたが、requests.session()を使用したときと同じようにウェブサイトからcsrf値を取得できないようですが、Cookie ["csrf"]、KeyErrorが発生し、フォームを検査すると要素が正しい場合は、非表示のcsrf値がありますが、firefoxのinspect要素のネットワークタブを見ても、ヘッダーセクションまたはCookieセクションに表示されません。しかし、Paramsタブには「csrf」と表示されます。はい、「csrf」、「csrftoekn」、さらには「csrfmiddlewaretoken」と入力すると、KeyErrorが返されます。助けてください。どうもありがとうございました。 – Danny

関連する問題