连接vBulletin 4.2.2论坛与Python

问题描述:

我阅读本页面和代码不仍能正常工作: Logging in to vBulletin连接vBulletin 4.2.2论坛与Python

我的代码:

#-*- coding:utf-8 -*- 

import urllib, urllib2, cookielib, hashlib, time 

def variables(): 
    domain = "www.example.com" 
    uname = "UserName" 
    passwd = "Password" 

    # Create url 
    if domain.startswith('http://'): 
     url = domain 
    else: 
     url = 'http://' + domain 

    login(url, uname, passwd) 


def login(url, uname, passwd): 
    loginurl = url + '/login.php?do=login' 
    md5 = hashlib.md5(passwd);md5 = md5.hexdigest() 
    # Options for request 
    opts = { 
     'do': 'login', 
     'vb_login_md5password': md5, 
     'vb_login_md5password_utf': md5, 
     's': '', 
     'vb_login_username': uname, 
     'security_token': 'guest', 
    } 
    data = urllib.urlencode(opts) 

    # Request header 
    global headers 
    headers = { 
     'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
     'Accept-Language': 'es-es,es;q=0.8,en-us;q=0.5,en;q=0.3', 
     'Accept-Encoding': 'gzip,deflate', 
     'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 
     'Connection': 'keep-alive', 
     'Referer': loginurl, 
     'Content-Type': 'application/x-www-form-urlencoded', 
     'Content-Lenght': '205' 
    } 

    # Cookie Handling 
    jar = cookielib.CookieJar() 
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar)) 

    # Send Request 
    opener.addheader = headers 
    opener.open(loginurl, data) 

    # Check 
    response = opener.open('http://example.com/') 
    source_code = response.read() 
    if source_code.find(uname) != -1: 
     print "Login Succeeded." 
    else: 
     print "Login Failed." 


variables() 

字段名的属性值是无(空):

<input type="hidden" name="s" value="" /> 

为什么代码不起作用?

谢谢。

缺少“vb_login_password”,“vb_login_password_hint”,“cookieuser”和“vb_login_md5password_utf”必须为空。

并确保删除您的标题。

+0

我应该把什么vb_login_password_hint和cookieuser? 如果你可以给我例子的代码,这将是非常有益的。 – Jonathan

+0

安装Live HTTP Headers(只有firefox会工作)并打开它然后开始登录,你会看到所有的POST请求。 – SethSandaru

+0

我在firefox中安装了Live HTTP Header,并在开始登录之前将其打开,并且我看到了所有POST请求,之后我相应地填写了所有输入表单,并且我试图再次登录而没有成功。哪里不对? – Jonathan