私はPythonリクエストモジュールでログインを実行しようとしています。私は最初に自分のユーザー名とパスワードでログインページに投稿して、応答からクッキーを保存します。その後、私はパスワードで保護されたページに入ることを試みます。問題は、このページにログインするために応答ページにCookieを有効にしなければならないと言いますが、表示できるCookieが戻ってきます。Pythonリクエストによるログインの実行(クッキーが有効になっていません)
<input type="hidden" name="security_token" value="kAvcFvod9KSrGLS1JX30+dhNI8QhmVpbqbe00zuvztE=">
<input type="hidden" name="login_ticket" value="3781fe1e16e441e9957bec8b32aa4630">
<input type="hidden" name="resolution" value="">
<input type="hidden" name="device_pixel_ratio" value="1">
と
<input type="text" autofocus id="loginname" name="loginname" value="" size="20" maxlength="63">
<input type="password" id="password" name="password" size="20">
Pythonのコード:
import requests
login = r'LOGIN_URL'
url = 'PROTECTED_URL'
values = {'loginname': 'USERNAME', 'password': r'PASSWORD','security_token' : r'kAvcFvod9KSrGLS1JX30+dhNI8QhmVpbqbe00zuvztE=', 'login_ticket' : r'3781fe1e16e441e9957bec8b32aa4630', 'resolution' : '', 'device_pixel_ratio' : '1'}
session = requests.Session()
r = session.post(login, data = values)
print r.content
print r.cookies
s = session.get(url)
(私はセキュリティトークンとログインチケットを取得ここで は、ログインページからコード
入力パラメータであります前に別の取得要求から) したがって、r.contentはoクッキーがアクティブ化されていないので、基本的に言う:ログインに失敗したWebページ。
しかしr.cookiesからの出力は次のようになります。
<RequestsCookieJar[<Cookie Seminar_Session=abbfdd4e96ee048b1b97fd027a2c7de4 for URL/>]>
そしてs.getはちょうどあなたがログインしていない場合は取得し、保護されたページにアクセスしようとログインページを返します。
私はすべてうまくいくと思っています。ウェブページには、送信されたクッキーを保存しないと思います。どうすれば回避できますか?
EDIT(ソリューション):
ありがとう! BeautifulSoupで
ソリューション:
import requests
from bs4 import BeautifulSoup
login = 'LOGIN_URL'
url = 'PROTECTED_URL'
session = requests.Session()
l = session.get(login)
soup = BeautifulSoup(l.content,'lxml')
values = {'loginname': 'USERNAME', 'password': r'PASSWORD','security_token' : soup.find('input')['value'], 'login_ticket' : soup.find('input').next_sibling.next_sibling['value'], 'resolution' : '', 'device_pixel_ratio' : '1'}
r = session.post(login, data = values)
s = session.get(url)