python discuz_python实现的登陆Discuz!论坛通用代码分享

代码如下:

#coding:gbk

import urllib2,urllib,cookielib,re

'''

通用的登陆DZ论坛

参数说明parms:

username:用户名(必填),

password :密码(必填),

domain:网站域名,注意格式必须是:http://www.xxx.xx/(必填),

answer:问题答案,

questionid:问题ID,

referer:跳转地址

这里使用了可变关键字参数(相关信息可参考手册)

'''

def login_dz(**parms):

#初始化

parms_key = ['domain','answer','password','questionid','referer','username']

arg = {}

for key in parms_key:

if key in parms:

arg[key] = parms[key]

else:

arg[key] = ''

#cookie设置

cookieFile = './kan_cookies.dat'

cookie = cookielib.LWPCookieJar()

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

#获取formhash

pre_login = arg['domain']+'member.php?mod=logging&action=login&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login'

c = opener.open(pre_login).read()

cookie.save(cookieFile)

patt = re.compile(r'.*?name="formhash".*?value="(.*?)".*?')

formhash = patt.search(c)

if not formhash:

raise Exception('GET formhash Fail!')

formhash = formhash.group(1)

#登陆

postdata = {

'answer':arg['answer'],

'formhash':formhash,

'password':arg['password'],

'questionid':0 if arg['questionid']=='' else arg['questionid'],

'referer':arg['domain'] if arg['referer']=='' else arg['referer'],

'username':arg['username'],

}

postdata = urllib.urlencode(postdata)

req = urllib2.Request(

url= arg['domain']+'member.php?mod=logging&action=login&loginsubmit=yes&handlekey=login&loginhash=LCaB3&inajax=1',

data=postdata

)

c = opener.open(req).read(300)

flag = '登陆失败 %s'%arg['username']

if 'succeedhandle_login' in c:

flag = True

return flag

#使用例子:基本参数登陆

user='xxx'

pwd='xxx'

dom='http://www.discuz.net/' #另一个测试网站:http://bbs.bitsCN.com/

try:

flag = login_dz(username=user,password=pwd,domain=dom)

print(flag)

except Exception,e:

print('Error:',e)

article_wechat2021.jpg?1111

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值