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


Posted in Python onJuly 11, 2014

代码如下:

#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.3water.com/
try:
  flag = login_dz(username=user,password=pwd,domain=dom)
  print(flag)
except Exception,e:
  print('Error:',e)
Python 相关文章推荐
简单介绍Python的Tornado框架中的协程异步实现原理
Apr 23 Python
python 爬虫出现403禁止访问错误详解
Mar 11 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
Oct 25 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
Mar 13 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
Python rstrip()方法实例详解
Nov 11 Python
python3实现网页版raspberry pi(树莓派)小车控制
Feb 12 Python
基于pytorch padding=SAME的解决方式
Feb 18 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
Mar 06 Python
python中JWT用户认证的实现
May 18 Python
一文读懂python Scrapy爬虫框架
Feb 24 Python
Python Socket编程入门教程
Jul 11 #Python
python使用正则搜索字符串或文件中的浮点数代码实例
Jul 11 #Python
Python实现的二维码生成小软件
Jul 11 #Python
让python同时兼容python2和python3的8个技巧分享
Jul 11 #Python
Python操作SQLite简明教程
Jul 10 #Python
Python读取图片EXIF信息类库介绍和使用实例
Jul 10 #Python
Python采集腾讯新闻实例
Jul 10 #Python
You might like
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
PHP开发框架总结收藏
2008/04/24 PHP
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
2014/03/06 Javascript
Javascript 实现复制(Copy)动作方法大全
2014/06/20 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
js实现旋转木马效果
2017/03/17 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
python实现对变位词的判断方法
2020/04/05 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
工程部经理岗位职责
2013/12/08 职场文书
购房意向书
2014/04/01 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
高三毕业评语
2014/12/31 职场文书
走近毛泽东观后感
2015/06/04 职场文书
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫
Redis主从复制操作和配置详情
2022/09/23 Redis