我試圖用python requests模塊執行登錄。我首先使用我的用戶名和密碼登錄到登錄頁面,以保存響應中的Cookie。之後,我嘗試進入密碼保護頁面。問題是響應頁面說我必須激活cookie才能登錄到此頁面,但我得到一個可以顯示的Cookie。 下面是代碼從登錄頁面使用Python請求執行登錄(Cookie未激活)
輸入參數:
<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基本上說一個網頁:登錄不成功,因爲Cookies沒有激活。
但是從r.cookies輸出爲:
<RequestsCookieJar[<Cookie Seminar_Session=abbfdd4e96ee048b1b97fd027a2c7de4 for URL/>]>
而且s.get只是返回你,如果你不登錄並試圖訪問受保護的頁面的登錄頁面。
所以我覺得一切正常,只是網頁認爲我不保存發送的cookies。我該如何解決這個問題?
編輯(解決方案):
工作,謝謝!
解決方案與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)