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读取配置文件模块ConfigParser
May 11 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
python leetcode 字符串相乘实例详解
Sep 03 Python
python里运用私有属性和方法总结
Jul 08 Python
Python参数类型以及常见的坑详解
Jul 08 Python
django 数据库连接模块解析及简单长连接改造方法
Aug 29 Python
Python中的引用和拷贝实例解析
Nov 14 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
pycharm 对代码做静态检查操作
Jun 09 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
Aug 19 Python
详解Anaconda 的安装教程
Sep 23 Python
Python实现排序方法常见的四种
Jul 15 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 数组入门教程小结
2009/05/20 PHP
php生成略缩图代码
2012/07/16 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
JS模拟自动点击的简单实例
2013/08/08 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
浅谈JS继承_寄生式继承 & 寄生组合式继承
2016/08/16 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
详解python3实现的web端json通信协议
2016/12/29 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
Python 监测文件是否更新的方法
2019/06/10 Python
Python3 批量扫描端口的例子
2019/07/25 Python
如何基于python实现脚本加密
2019/12/28 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
python cookie反爬处理的实现
2020/11/01 Python
Python调用飞书发送消息的示例
2020/11/10 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
考试不及格检讨书
2014/01/09 职场文书
副护士长竞聘演讲稿
2014/04/30 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
营运督导岗位职责
2015/04/10 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
如何写好竞聘报告
2019/04/03 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python
Python爬虫 简单介绍一下Xpath及使用
2022/04/26 Python