2012-08-06 88 views
2

我正在嘗試創建一個小腳本,它將在後臺運行並檢查是否包含論壇中的新消息(使用phpBB3)。由於許多subforums需要登錄用戶的權限才能查看,我創建了一個腳本,它會向服務器發送後請求以首先登錄。登錄到phpBB論壇。 Cookie已更改

該腳本目前獲得成功登錄,並迎來一條歡迎消息,告訴我我已登錄。但是,當我訪問新頁面時,腳本似乎忘記了我已登錄並且會話cookie已更改。

下面是一些小的測試代碼我創建了給我的錯誤:

import urllib, urllib2, cookielib, re, time 

username = "username" 
password = "password" 
loginsite = "http://www.mydomain.com/ucp.php?mode=login" 
ok_tekst = "You have been successfully logged in."   
cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
login_data = urllib.urlencode({'username' : username, 'password' : password, 
           "autologin" : "on", 'login' : 'Login'}) 

resp = opener.open(loginsite, login_data) 
if ok_tekst in resp.read(): 
    print "Login successfull" 
    print "Cookies are:" 
    for cookie in cj: 
     print cookie 

    post_site = "http://www.mydomain.com/" 
    ok_tekst = "Logout [ " + username + " ]" 
    resp = opener.open(post_site) 
    readHTML = resp.read() 
    if ok_tekst not in readHTML: 
     print "" 
     print "Unsuccessfull, I am now logged out?!" 
     print "Cookies are now:" 
     for cookie in cj: 
      print cookie 

這將產生以下輸出也給出了不同的cookie值:

>> python test.py 
Login successfull 
Cookies are: 
<Cookie phpbb3_pwsle_k=b3fe944b89bfbce2 for .mydomain.com/> 
<Cookie phpbb3_pwsle_sid=318b3ace3d52409fb5e1eef87433fbdb for .mydomain.com/> 
<Cookie phpbb3_pwsle_u=419 for .mydomain.com/> 

Unsuccessfull, I am now logged out?! 
Cookies are now: 
<Cookie phpbb3_pwsle_k= for .mydomain.com/> 
<Cookie phpbb3_pwsle_sid=719520cd3a16526d6da4fa2fbdfe40f4 for .mydomain.com/> 
<Cookie phpbb3_pwsle_u=1 for .mydomain.com/> 
+0

你有任何其他的代碼嗎?我複製/粘貼,並把我的用戶/通過和測試對我的論壇,並按預期工作。 – Andy 2012-08-08 15:57:58

+0

這是我正在使用的代碼。 (只有更改是隱藏用戶名和密碼) – Etse 2012-08-08 18:41:19

+0

你有什麼版本的phpbb3?就像我說的,我無法複製這個問題。 – Andy 2012-08-08 18:59:12

回答

3

奧基,所以我現在解決了我自己的問題 - 看起來我正在運行的論壇啓用了一些瀏覽器保護功能,如果我使用設置爲Python/URLLIB的USER-AGENT訪問(在http-header中),就會取消任何會話。通過更改標題來假裝我是谷歌瀏覽器修復了我的問題。