設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 450|回復: 0
打印 上一主題 下一主題

python實現的登陸Discuz!論壇通用程式碼

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2022-4-11 21:16:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  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://bbs.jb51.net/
  59. try:
  60. flag = login_dz(username=user,password=pwd,domain=dom)
  61. print(flag)
  62. except Exception,e:
  63. print('Error:',e)
複製代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-5-15 21:50 , Processed in 0.252627 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表