2010-12-01 16 views
1

私は同様の質問があることを知っている、私はそれらを読んでいる。私はまた、私が見つけることができるほとんどの他の関連記事を読んだ。私はhttplib2、ヘッダーの変更を試してみましたが、私が見つけたり考えたりしたことはありますが、このログインスクリプトを動作させることはできません。Pythonログインスクリプト

import cookielib 
import urllib 
import urllib2 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
resp = opener.open('http://www.biocidecity.com') 

theurl = 'http://www.biocidecity.com/index.php' 
body={'username':'someusername','password':'somepassword', 'login' : '1'} 
txdata = urllib.urlencode(body) txheaders = {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'} 


try: 
    req = urllib2.Request(theurl, txdata, txheaders) 
    handle = opener.open(req) 
    HTMLSource = handle.read() 
    f = file('test.html', 'w') 
    f.write(HTMLSource) 
    f.close() 

except IOError, e: 
    print 'We failed to open "%s".' % theurl 
    if hasattr(e, 'code'): 
     print 'We failed with error code - %s.' % e.code 
    elif hasattr(e, 'reason'): 
     print "The error object has the following 'reason' attribute :", e.reason 
     print "This usually means the server doesn't exist, is down, or we don't have an internet connection." 
     sys.exit() 

else: 
    print 'Here are the headers of the page :' 
    print handle.info() 

まず、これは私のスクリプトではありませんが、いくつか修正しました。二番目に、クッキーの扱い方と関係があると思いますが、私はそれを理解できません。私はまた、ユーザー名パスワードの組み合わせを置き換えました。

+1

を試してみてください。あなたはおそらくそれが**何をしているのか、なぜそれが嫌いなのかを定義するべきです。構文エラーがありますか? Webサーバーから401エラーが返されますか?結果としてあなたは何を見ていますか? –

+0

私の間違いは、Wiresharkでインタラクションを見ると、サーバーは単に私が投稿したのと同じログインページを返すだけです(つまり、私はリダイレクトされません)。それ以外のエラーはありません。私が見つけることができる唯一の違いは、私がChromeでフォームを送信するときに302応答パケットにHTTPヘッダーのクッキー情報が含まれていて、スクリプトを使用していないときです...多分私の質問に言い直すべきです。 – John

+0

"たぶん私の質問に言い直すべきでしょうか"。絶対に。 **あなたが抱えている問題について非常に明確になるよう** **の質問を更新してください。 –

答えて

2

私はそれが再びサービスの用語だと仮定していますが、「私は、このログインスクリプトを動作させることはできません」

import cookielib 
import urllib 
import urllib2 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
resp = opener.open('http://www.biocidecity.com') 

theurl = 'http://www.biocidecity.com/index.php' 
body={'username':'someusername','password':'somepassword', 'login' : '1'} 
txdata = urllib.urlencode(body) txheaders = {'Referer': 'http://www.biocidecity.com/index.php'} 


try: 
    req = urllib2.Request(theurl, txdata, txheaders) 
    handle = opener.open(req) 
    HTMLSource = handle.read() 
    f = file('test.html', 'w') 
    f.write(HTMLSource) 
    f.close() 

except IOError, e: 
    print 'We failed to open "%s".' % theurl 
    if hasattr(e, 'code'): 
     print 'We failed with error code - %s.' % e.code 
    elif hasattr(e, 'reason'): 
     print "The error object has the following 'reason' attribute :", e.reason 
     print "This usually means the server doesn't exist, is down, or we don't have an internet connection." 
     sys.exit() 

else: 
    print 'Here are the headers of the page :' 
    print handle.info() 
関連する問題