2015-02-08 135 views
0

我想從具有登錄名的頁面檢索一些數據。Python請求返回登錄頁面

我使用Python爲此請求。但是,當我嘗試登錄並從數據頁獲取數據時,它將返回登錄頁面。

這是我的代碼:

s = requests.Session() 
s.auth = ('user', 'pass') 
s.get('http://url.com') 

payload = {'user': 'user', 'pass': 'pass'} 
r_login = s.post("http://admin.url.com/login.php", data=payload) 
cookies = r_login.cookies 
print cookies 

r_data = s.get('https://admin.url.com/stats.php?PHPSESSID={0}'.format(cookies['PHPSESSID'])) 
cookie = r_data.cookies 
print cookie 
print r_data.text 

這是印什麼:

<<class 'requests.cookies.RequestsCookieJar'>[<Cookie PHPSESSID=ve4tit4svmp719ul3vb8qeqdh7 for .url.com/>]> 
<<class 'requests.cookies.RequestsCookieJar'>[]> 

然後登錄頁面,而不是統計頁面的HTML。

我忘了什麼嗎?我怎麼知道服務器需要什麼認證(即cookies,sessionid,referrer)?

回答

0

我從你的問題的標題中假設get得到返回的登錄頁面。最可能的原因是它沒有會話令牌,因此網頁正在將服務器端重定向回登錄頁面。

我的猜測是這(PHPSESSID)應該作爲一個cookie而不是查詢字符串返回。

最後可能會有一些我不知道的巧妙技巧,但我想你需要參考原始代碼,文檔或試驗和錯誤來確定需要發送什麼。