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之开始真正编程
Sep 12 Python
MySQL最常见的操作语句小结
May 07 Python
Python实现简单的四则运算计算器
Nov 02 Python
教大家玩转Python字符串处理的七种技巧
Mar 31 Python
Python编程实现的图片识别功能示例
Aug 03 Python
python中将字典形式的数据循环插入Excel
Jan 16 Python
Python实现从log日志中提取ip的方法【正则提取】
Mar 31 Python
python使用celery实现异步任务执行的例子
Aug 28 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
如何基于Python实现自动扫雷
Jan 06 Python
tensorflow 动态获取 BatchSzie 的大小实例
Jun 30 Python
Python字符串及文本模式方法详解
Sep 10 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
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
php面向对象重点知识分享
2019/09/27 PHP
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
webpack之devtool详解
2018/02/10 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
小程序实现分类页
2019/07/12 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
python安装scipy的步骤解析
2019/09/28 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
Pandas把dataframe或series转换成list的方法
2020/06/14 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
学校爱心捐款倡议书
2014/05/13 职场文书
揭牌仪式策划方案
2014/05/28 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
房屋转让协议书
2014/10/18 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
保研推荐信格式
2015/03/25 职场文书
闪闪红星观后感
2015/06/08 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
Java并发编程之Executor接口的使用
2021/06/21 Java/Android
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL