2

バックグラウンドで実行し、フォーラムで新しいメッセージが届くかどうかを確認する小さなスクリプトを作成しようとしています(phpBB3を使用)。サブフォーラムの多くは、ログインしたユーザーからのアクセス許可を表示する必要があるため、最初にログインするようにサーバーにPOSTリクエストを送信するスクリプトを作成しました。

スクリプトは現在正常にログインし、ログインしていることを通知するウェルカムメッセージが表示されます。しかし、新しいページにアクセスすると、スクリプトはログインを忘れたようで、セッション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/>
4

1 に答える 1

3

さて、私は今自分で問題を解決しました-そして私が実行していたフォーラムでは、Python / URLLIBに設定されたUSER-AGENT(http-header内)でアクセスした場合にセッションをキャンセルするブラウザ保護が有効になっているようでした。ヘッダーを変更して、私がgoogle-chromeであるふりをすることで、問題を修正しました。

于 2012-08-08T19:31:11.670 に答える