2011-01-30 10 views
1

私はこのウェブサイトにログインしようとしています:http://www.artofproblemsolving.com/Forum/ucp.php?mode=login Python 3.1.3スクリプトを使用しています。私はこのコードを実行するとPython 3.1を使用してログインフォームを送信

import webbrowser 
import urllib.request 
import cgi 
import cgitb 
import urllib.parse 
import hashlib 
import http.cookiejar 

p = urllib.parse.urlencode({'username':'MYUSERNAME','password':"MYPASSWORD"}) 

cj = http.cookiejar.CookieJar() 
o = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) 
urllib.request.install_opener(o) 

f = o.open('http://www.artofproblemsolving.com/Forum/ucp.php?mode=login', p) 
data = f.read() 
f.close() 
htm = open("file1.html", "w") 
htm.write(str(data)) 
htm.close 

f = o.open('http://www.artofproblemsolving.com/PAGEFORWHICHLOGINISREQUIRED') 
data = f.read() 
f.close() 
htm = open("file2.html", "w") 
htm.write(str(data)) 
htm.close 

print('fin') 

しかし、file1.htmlは、ログインフォーム自体(メッセージなし)を含み、file2.htmlページ「あなたがログインしていません」が含まれます。当時、私はこれを持っています。

誰かが私が間違っていることを教えてください。私の無能さを残念に思って、私はむしろPythonの初心者です。前もって感謝します!

P.S. MD5がパスワードをハッシュしているのではないでしょうか?私はhashlibライブラリを使って作業してきましたが、多くの運がなかったのです。このような場合は、パスワードをハッシュする方法を説明してください。

答えて

1

このフォームを送信すると、ログインボタンは&login=Loginとして送信されます。おそらくこのフォームでは、それを提出する必要がありますか?

+0

ええ、それは問題でした。ありがとう! – user595531

0

Mechanizeを使用するほうがずっと良いかもしれません。フォーム提出に特に便利です。

関連する問題