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读取excel表格生成erlang数据
Aug 26 Python
Pyinstaller打包.py生成.exe的方法和报错总结
Apr 02 Python
python解释器spython使用及原理解析
Aug 24 Python
Python目录和文件处理总结详解
Sep 02 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
使用Python实现Wake On Lan远程开机功能
Jan 22 Python
python读写文件write和flush的实现方式
Feb 21 Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 Python
基于Python爬取京东双十一商品价格曲线
Oct 23 Python
Python hashlib和hmac模块使用方法解析
Dec 08 Python
使用Django的JsonResponse返回数据的实现
Jan 15 Python
python数字转对应中文的方法总结
Aug 02 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
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
JavaScript this 深入理解
2009/07/30 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
Python实现Linux下守护进程的编写方法
2014/08/22 Python
Python下rrdtool模块的基本使用方法
2015/11/13 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
使用Python绘制图表大全总结
2017/02/11 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
pytorch梯度剪裁方式
2020/02/04 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
好的演讲稿开场白
2013/12/30 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
民主生活会发言材料
2014/10/20 职场文书
公司老总年会致辞
2015/07/30 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
Javascript的promise,async和await的区别详解
2022/03/24 Javascript