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实现冒泡,插入,选择排序简单实例
Aug 18 Python
Python中的choice()方法使用详解
May 15 Python
在Python中的Django框架中进行字符串翻译
Jul 27 Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
Python新手入门最容易犯的错误总结
Apr 24 Python
Python pandas常用函数详解
Feb 07 Python
python随机取list中的元素方法
Apr 08 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
Python实现通过解析域名获取ip地址的方法分析
May 17 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 Python
python实现ping命令小程序
Dec 28 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 输出URL的快捷方式示例代码
2013/09/22 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
Python Socket编程入门教程
2014/07/11 Python
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
代码分析Python地图坐标转换
2018/02/08 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
淘宝活动策划方案
2014/02/06 职场文书
房产继承公证书
2014/04/09 职场文书
幼儿园标语大全
2014/06/19 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
正则表达式拆分url实例代码
2022/02/24 Java/Android