2012-08-06 4 views
2

백그라운드에서 실행되고 포럼 (phpBB3 사용)에 새 메시지가 들어 있는지 확인하는 작은 스크립트를 만들려고합니다. 많은 하위 포럼이 로그인 한 사용자의 권한을 볼 필요가 있기 때문에 먼저 서버에 로그인하여 사후 요청을 보내는 스크립트를 만들었습니다.phpBB 포럼에 로그인하십시오. 쿠키가 변경됨

스크립트가 현재 성공적인 로그인을 얻었으며 내가 로그인했음을 알리는 환영 메시지가 인사드립니다. 그러나 새 페이지에 액세스하면 스크립트가 로그인되어 세션 쿠키가 변경된 것을 잊어 버린 것처럼 보입니다 .

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 

이것은 또한 다른 쿠키의 값을 보여줍니다 다음과 같은 출력을 생성합니다 : 여기

은 나에게 오류를 제공 내가 만든 몇 가지 작은 테스트 코드

>> 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

+0

이것은 내가 사용하고있는 코드입니다. (변경은 사용자 이름과 암호를 숨기는 것입니다) – Etse

+0

phpbb3의 어떤 버전이 있습니까? 내가 말했듯이, 나는 문제를 재현 할 수 없다. – Andy

답변

3

좋아요 그래서 저는 문제를 저의 자아로 해결했습니다. 제가 실행하고있는 포럼에서 사용자 에이전트 (http-header)를 Python/URLLIB로 설정하면 어떤 세션도 취소 할 수있는 브라우저 보호 기능이 활성화 된 것처럼 보였습니다. 내가 머리말을 바꿔서 구글 크롬이 내 문제를 고쳤다.

관련 문제