2017-04-18 5 views
0

pythonを使用してSAMLのログインページにリダイレクトされた後、それぞれのCookieでログインデータを正常にPOSTできますか? SAMLはそれほど単純ではありませんか?Webスクレイピングログイン

これはリダイレクトされましたpage私はPythonリクエストを使用してログインしようとしています。

import requests 

User = ***** 
Pass = ***** 

payload = { 
    'UserName': User, 
    'Password': Pass 
} 

session = requests.session() 

moodle_url = "https://moodle.vle.monash.edu/login/index.php?authCAS=CAS" 
response = session.get(moodle_url) 
cookies = session.cookies.get_dict() 


SAML_url = response.url 
response = session.post(SAML_url, payload) 

print(response.url) 

これを行うと、私は手動でChromeを使用してログインしようとしたのWiresharkを使用してパッケージを取り込むには、次きた私はまだ同じurl

を取り戻すように私にログインすることができていないようですHTTPストリームの場合、ブラウザはリダイレクトされた直後にSimpleSAMLAuthTokenクッキーを取得したように見えます。ログインIDとパスワードを含むPOSTが表示されないので、これを理解できませんでした。

私の理解では、私はPythonリクエストを使って模倣することができる何らかの形式のデータPOSTINGがあるはずですが、Wiresharkの "http"のフィルタリングはそれを示していません。

POSTの問題ですか、またはペイロードパラメータが1つまたは2つ欠落していますか?

私は、PythonとWebスクレイピングの両方にかなり新しいです。どんなデバッグのヒントも大歓迎です!

答えて

1

Wiresharkは過剰です... Google Chromeのネットワークタブを見てください。 POSTデータには次のような形式が必要です。

post_data = {'UserName': 'Monash\%s' User, 
      'Password': Password, 
      'AuthMethod':'FormsAuthentication'} 

適切なユーザーエージェントを使用するといいでしょう。あなたがそれをしないと、おそらくボットとして検出され、Webサーバーはあなたにアクセスを拒否します。

もう1つのヒント:すべてのPOST要求に適切なヘッダーを設定してください(コンテンツタイプ、受け入れ...)

+0

チップをありがとう! –

関連する問題