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统计字符串中指定字符出现次数的方法
Apr 04 Python
在Python的web框架中中编写日志列表的教程
Apr 30 Python
python opencv之分水岭算法示例
Feb 24 Python
python学生管理系统代码实现
Apr 05 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
Python 从相对路径下import的方法
Dec 04 Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 Python
Python简易版停车管理系统
Aug 12 Python
Python 最强编辑器详细使用指南(PyCharm )
Sep 16 Python
对python中arange()和linspace()的区别说明
May 03 Python
python脚本和网页有何区别
Jul 02 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
Jan 01 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
自己动手做一个SQL解释器
2006/10/09 PHP
php5.2时间相差8小时
2007/01/15 PHP
PHP curl 并发最佳实践代码分享
2012/09/05 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
Javascript & DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
jquery 插件开发 extjs中的extend用法小结
2013/01/04 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
js 颜色选择插件
2017/01/23 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
英国女装网上商店:I Saw It First
2018/10/18 全球购物
Whistles官网:英国女装品牌
2020/08/14 全球购物
.NET面试10题
2014/02/24 面试题
挂牌仪式主持词
2014/03/20 职场文书
会计个人实习计划书
2014/08/15 职场文书
解除劳动合同协议书
2014/09/17 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
入党申请书格式
2019/06/20 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
Vue和Flask通信的实现
2021/05/19 Vue.js
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技
Win11快速关闭所有广告推荐
2022/04/19 数码科技