Discuz教程网

登陆Discuz 类型论坛的通用python代码

[复制链接]
authicon dly 发表于 2012-8-3 20:14:54 | 显示全部楼层 |阅读模式
使用例子:
#基本参数登陆
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)

#关于Http请求,参
游客,如果您要查看本帖隐藏内容请回复

#关于python运算符的使用,参
游客,如果您要查看本帖隐藏内容请回复
另注:注意python版本,及 discuz 论坛版本!

  1. #coding:gbk
  2. import urllib2,urllib,cookielib,re

  3. '''
  4. 通用的登陆DZ论坛
  5. 参数说明parms:
  6. username:用户名(必填),
  7. password :密码(必填),
  8. domain:网站域名,注意格式必须是:http://www.xxx.xx/(必填),
  9. answer:问题答案,
  10. questionid:问题ID,
  11. referer:跳转地址

  12. 这里使用了可变关键字参数(相关信息可参考手册)
  13. '''
  14. def login_dz(**parms):

  15. #初始化
  16. parms_key = ['domain','answer','password','questionid','referer','username']
  17. arg = {}
  18. for key in parms_key:
  19. if key in parms:
  20. arg[key] = parms[key]
  21. else:
  22. arg[key] = ''

  23. #cookie设置
  24. cookieFile = './kan_cookies.dat'
  25. cookie = cookielib.LWPCookieJar()
  26. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

  27. #获取formhash
  28. pre_login = arg['domain']+'member.php?mod=logging&action=login&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login'
  29. c = opener.open(pre_login).read()
  30. cookie.save(cookieFile)
  31. patt = re.compile(r'.*?name="formhash".*?value="(.*?)".*?')
  32. formhash = patt.search(c)
  33. if not formhash:
  34. raise Exception('GET formhash Fail!')
  35. formhash = formhash.group(1)

  36. #登陆
  37. postdata = {
  38. 'answer':arg['answer'],
  39. 'formhash':formhash,
  40. 'password':arg['password'],
  41. 'questionid':0 if arg['questionid']=='' else arg['questionid'],
  42. 'referer':arg['domain'] if arg['referer']=='' else arg['referer'],
  43. 'username':arg['username'],
  44. }

  45. postdata = urllib.urlencode(postdata)
  46. req = urllib2.Request(
  47. url= arg['domain']+'member.php?mod=logging&action=login&loginsubmit=yes&handlekey=login&loginhash=LCaB3&inajax=1',
  48. data=postdata
  49. )
  50. c = opener.open(req).read(300)
  51. flag = '登陆失败 %s'%arg['username']
  52. if 'succeedhandle_login' in c:
  53. flag = True
  54. return flag


  55. #使用例子:基本参数登陆
  56. user='xxx'
  57. pwd='xxx'
  58. dom='http://www.discuz.net/' #另一个测试网站:http://www.kafan.cn/
  59. try:
  60. flag = login_dz(username=user,password=pwd,domain=dom)
  61. print(flag)
  62. except Exception,e:
  63. print('Error:',e)

  64. #关于Http请求,参 http://hi.baidu.com/fc_lamp/blog/item/2d947745fc31cf9fb2b7dc0a.html
  65. #关于python运算符的使用,参 http://hi.baidu.com/fc_lamp/blog/item/b032d409d4b1e4c262d986c1.html
复制代码




上一篇:2012盘点国内草根站长类网站
下一篇:Discuz X2论坛的机器人程序,实现了登录,签到,发贴及回帖等功能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 06:00

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表