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重试装饰器示例
Feb 11 Python
pymongo为mongodb数据库添加索引的方法
May 11 Python
Python中转换角度为弧度的radians()方法
May 18 Python
Python装饰器基础概念与用法详解
Dec 22 Python
Python离线安装PIL 模块的方法
Jan 08 Python
python 将对象设置为可迭代的两种实现方法
Jan 21 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
Jun 28 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
python绘制无向图度分布曲线示例
Nov 22 Python
浅析Python数字类型和字符串类型的内置方法
Dec 22 Python
python 实现图片批量压缩的示例
Dec 18 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
php遍历数组的方法分享
2012/03/22 PHP
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
Python使用wxPython实现计算器
2018/01/30 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
预备党员党校学习自我评价分享
2013/11/12 职场文书
酒店端午节促销方案
2014/02/18 职场文书
二年级评语大全
2014/04/23 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
紧急迫降观后感
2015/06/15 职场文书
百年孤独读书笔记
2015/06/29 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
用JS创建一个录屏功能
2021/11/11 Javascript
如何通过cmd 连接阿里云服务器
2022/04/18 Servers