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从MP3文件获取id3的方法
Jun 15 Python
python中字符串类型json操作的注意事项
May 02 Python
Python时间戳使用和相互转换详解
Dec 11 Python
mac系统安装Python3初体验
Jan 02 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
django最快程序开发流程详解
Jul 19 Python
python文件读写代码实例
Oct 21 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
Python flask框架端口失效解决方案
Jun 04 Python
Python的信号库Blinker用法详解
Dec 31 Python
python中pyqtgraph知识点总结
Jan 26 Python
Python办公自动化之Excel(中)
May 24 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中动态HTML的输出技术
2006/10/09 PHP
支持oicq头像的留言簿(二)
2006/10/09 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
一些mootools的学习资源
2010/02/07 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
js同源策略详解
2015/05/21 Javascript
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
Python学习笔记之os模块使用总结
2014/11/03 Python
用Python的Django框架编写从Google Adsense中获得报表的应用
2015/04/17 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
Python中的Numpy矩阵操作
2018/08/12 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
网页美工求职信
2014/02/15 职场文书
专家推荐信范文
2015/03/26 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS