2015-10-19 5 views
0

Я прочитал эту страницу и код не работает до сих пор: Logging in to vBulletinConnect форума 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() 

Характеристическое значение имени поля нет (Empty):

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

Почему код не работает?

Спасибо.

ответ

0

Отсутствие «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

Я установил Live HTTP Header в firefox и откройте его до того, как я запустил логин, и я увидел весь запрос POST, после чего я заполнил всю форму ввода соответственно, и я попытался войти в систему без успеха. Что не так? – Jonathan