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基础知识小结之集合
Nov 25 Python
浅谈Python爬取网页的编码处理
Nov 04 Python
python开发简易版在线音乐播放器
Mar 03 Python
pandas 将list切分后存入DataFrame中的实例
Jul 03 Python
pandas 实现字典转换成DataFrame的方法
Jul 04 Python
Python函数参数操作详解
Aug 03 Python
Python运维开发之psutil库的使用详解
Oct 18 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
Python开发之基于模板匹配的信用卡数字识别功能
Jan 13 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 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 array_push 数组函数
2009/12/26 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
Nginx实现反向代理
2017/09/20 Servers
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
Div Select挡住的解决办法
2008/08/07 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
js实现随机点名小功能
2017/08/17 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
Python学习入门之区块链详解
2017/07/25 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
Python实现字符串的逆序 C++字符串逆序算法
2020/05/28 Python
python批量图片处理简单示例
2019/08/06 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
大学军训感言200字
2014/02/26 职场文书
精彩的广告词
2014/03/19 职场文书
安全先进个人材料
2014/12/29 职场文书
财政局个人总结
2015/03/04 职场文书
孔子观后感
2015/06/08 职场文书
观看焦裕禄观后感
2015/06/09 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
JavaScript实现简单拖拽效果
2021/09/15 Javascript
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫