python实现的登陆Discuz!论坛通用代码分享

 更新时间:2014年07月11日 09:34:05   投稿:junjie  
这篇文章主要介绍了python实现的登陆Discuz!论坛通用代码分享,需要的朋友可以参考下

代码如下:

#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.jb51.net/
try:
  flag = login_dz(username=user,password=pwd,domain=dom)
  print(flag)
except Exception,e:
  print('Error:',e)

相关文章

  • python实现一个简单的并查集的示例代码

    python实现一个简单的并查集的示例代码

    本篇文章主要介绍了python实现一个简单的并查集的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Python类反射机制使用实例解析

    Python类反射机制使用实例解析

    这篇文章主要介绍了Python类反射机制使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • import sklearn报错正确安装sklearn的解决方法

    import sklearn报错正确安装sklearn的解决方法

    这篇文章主要介绍了import sklearn报错正确安装sklearn的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Python实现正则表达式匹配任意的邮箱方法

    Python实现正则表达式匹配任意的邮箱方法

    今天小编就为大家分享一篇Python实现正则表达式匹配任意的邮箱方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python3实现ftp服务功能(服务端 For Linux)

    python3实现ftp服务功能(服务端 For Linux)

    这篇文章主要介绍了python3实现ftp服务功能,服务端 For Linux,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • python 协程 gevent原理与用法分析

    python 协程 gevent原理与用法分析

    这篇文章主要介绍了python 协程 gevent原理与用法,结合实例形式分析了Python协程gevent相关概念、原理、安装及使用操作技巧,需要的朋友可以参考下
    2019-11-11
  • python中求两个向量的夹角方式

    python中求两个向量的夹角方式

    这篇文章主要介绍了python中求两个向量的夹角方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 如何用Django处理gzip数据流

    如何用Django处理gzip数据流

    这篇文章主要介绍了如何用Django处理gzip数据流,帮助大家更好的理解和使用django框架,感兴趣的朋友可以了解下
    2021-01-01
  • 详解Pycharm与anaconda安装配置指南

    详解Pycharm与anaconda安装配置指南

    这篇文章主要介绍了详解Pycharm与anaconda安装配置指南,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • pytorch 运行一段时间后出现GPU OOM的问题

    pytorch 运行一段时间后出现GPU OOM的问题

    这篇文章主要介绍了pytorch 运行一段时间后出现GPU OOM的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论