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 CSV模块使用实例
Apr 09 Python
python引用DLL文件的方法
May 11 Python
python实现随机森林random forest的原理及方法
Dec 21 Python
python 每天如何定时启动爬虫任务(实现方法分享)
May 21 Python
对python requests发送json格式数据的实例详解
Dec 19 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
python实现车牌识别的示例代码
Aug 05 Python
使用python实现对元素的长截图功能
Nov 14 Python
python flask搭建web应用教程
Nov 19 Python
Keras预训练的ImageNet模型实现分类操作
Jul 07 Python
python爬虫数据保存到mongoDB的实例方法
Jul 28 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 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
php正则表达式(regar expression)
2011/09/10 PHP
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
深入理解JSON数据源格式
2014/01/10 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
Python logging模块学习笔记
2014/05/24 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
致100米运动员广播稿
2014/02/14 职场文书
《掌声》教学反思
2014/02/23 职场文书
遗体告别仪式主持词
2014/03/20 职场文书
讲解员培训方案
2014/05/04 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
2021年最新用于图像处理的Python库总结
2021/06/15 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
Java的Object类的九种方法
2022/04/13 Java/Android