注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 

日志

 
 

通用的登陆Discuz!论坛 python代码  

2011-12-14 17:34:00|  分类: Web技术-Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一代码

#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 '欢迎您回来' in c:
        flag = True
    return flag

二 例子
#基本参数登陆
user='xxx'
pwd='xxx'
dom='http://www.disscuz.net/' #另一个测试网站:http://www.kafan.cn/
try:
    flag = login_dz(username=user,password=pwd,domain=dom)
    print(flag)
except Exception,e:
    print('Error:',e)

  评论这张
 
阅读(1805)| 评论(6)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017