Python 登录到vBulletin
我正在尝试用Python编写一个程序,它可以登录到vBulletin论坛 我只需要访问一个页面,但为了查看该页面,我必须登录 这是我的密码:Python 登录到vBulletin,python,login,vbulletin,Python,Login,Vbulletin,我正在尝试用Python编写一个程序,它可以登录到vBulletin论坛 我只需要访问一个页面,但为了查看该页面,我必须登录 这是我的密码: #-*- coding:utf-8 -*- import urllib, urllib2, cookielib, hashlib, time def variables(): domain = "www.example.com" uname = "UserName" passwd = "Password" # Crea
#-*- 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/usercp.php?variable')
print response.read()
variables()
问题是它没有让我登录,我找不到原因。1)您需要将vb\u登录名和vb\u登录密码发送到login.php?do=login
2) 您需要将以下值发送到login.php?do=login(查看html代码)
1) 您需要将vb\u登录名和vb\u登录密码发送到login.php?do=login
2) 您需要将以下值发送到login.php?do=login(查看html代码)
但我就是这么做的,不是吗?我md5hash密码,发送请求选项(opts)和HTTP头,但它不会让我登录。在代码中,您将s值留空,但需要用正确的值填充,您可以查看html代码以获取它。在我的样本中,s值是215c619cb0227a30bab788ca0adb1c423),在post数据中,需要设置cookie头。bbsessionhash=215c619cb0227a30bab788ca0adb1c42;(这个值在您的例子中可能有所不同)我查看了发送带有LiveHTTP头Firefox扩展的浏览器的数据,s的值为空。但我发现它确实让我登录,因为第一个开场白的内容显示了带有“欢迎回来”的页面;现在的问题是,即使我登录了,当我访问usercp.php页面时,它也不允许我访问。我可以进入这个页面。对不起,我不知道怎么了。请检查您的站点或在其他站点上测试您的代码。幸运的是,我就是这么做的,不是吗?我md5hash密码,发送请求选项(opts)和HTTP头,但它不会让我登录。在代码中,您将s值留空,但需要用正确的值填充,您可以查看html代码以获取它。在我的样本中,s值是215c619cb0227a30bab788ca0adb1c423),在post数据中,需要设置cookie头。bbsessionhash=215c619cb0227a30bab788ca0adb1c42;(这个值在您的例子中可能有所不同)我查看了发送带有LiveHTTP头Firefox扩展的浏览器的数据,s的值为空。但我发现它确实让我登录,因为第一个开场白的内容显示了带有“欢迎回来”的页面;现在的问题是,即使我登录了,当我访问usercp.php页面时,它也不允许我访问。我可以进入这个页面。对不起,我不知道怎么了。请检查您的站点或在其他站点上测试您的代码。祝你好运
<input type="hidden" name="s" value="215c619cb0227a30bab788ca0adb1c42" />
<input type="hidden" name="securitytoken" value="guest" />
<input type="hidden" name="do" value="login" />
<input type="hidden" name="vb_login_md5password" />
<form action="login.php?do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">
POST /forums/login.php?do=login HTTP/1.1
Host: absolutewrite.com
Connection: keep-alive
Content-Length: 216
Cache-Control: max-age=0
Origin: http://absolutewrite.com
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.0 Safari/535.11
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://absolutewrite.com/forums/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: UTF-8,*;q=0.5
Cookie: bbsessionhash=215c619cb0227a30bab788ca0adb1c42; bblastvisit=1323333120; bblastactivity=0
vb_login_username=abc&vb_login_password=&s=215c619cb0227a30bab788ca0adb1c42&securitytoken=guest&do=login&vb_login_md5password=202cb962ac59075b964b07152d234b70&vb_login_md5password_utf=202cb962ac59075b964b07152d234b70
opts = {
'do': 'login',
'vb_login_md5password': md5,
'vb_login_md5password_utf': md5,
'vb_login_password':'',
's': '215c619cb0227a30bab788ca0adb1c42',
'vb_login_username': uname,
'security_token': 'guest',
}