python模擬登錄discuz論壇

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import urllib2, urllib, cookielib, re, time
class Robot(object):
    def __init__(self, forumUrl, userName, password, proxy = None):
        ''' 初始化論壇url、用戶名、密碼和代理服務器 '''
        self.forumUrl = forumUrl
        self.userName = userName
        self.password = password
        self.formhash = ''
        self.isLogon = False
        self.isSign = False
        self.xq = ''
        self.jar = cookielib.CookieJar()
        if not proxy:
            self.openner = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.jar))   #設置cookie變量
        else:
            self.openner = urllib2.build_opener(
            urllib2.HTTPCookieProcessor(self.jar),
            urllib2.ProxyHandler({'http' : proxy}))
            urllib2.install_opener(openner)


  def login(self):
        ''' 登陸論壇 '''
        url = self.forumUrl + "/bbs/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1";
        #登錄地址與下面的回帖地址相當重要,我這裏用個的fiddler工具抓包獲取的webforms的數據
     postData
= urllib.urlencode({ 'username': self.userName, 'password': self.password, 'answer': '', 'cookietime': '2592000', 'handlekey': 'ls', 'quickforward': 'yes', 'fastloginfield': 'username' }) user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/49.0.2623.112' headers = { 'User-Agent' : user_agent } req = urllib2.Request(url,data=postData,headers=headers) content = self.openner.open(req).read()    #使用cookie去訪問頁面,並保存cookie到變量,後面訪問其餘頁面會使用 #print content if str(11040) in content: self.isLogon = True print 'logon success!' self.initFormhashXq() else: print 'logon faild!'
  def initFormhashXq(self):
        ''' 獲取formhash'''
        content = self.openner.open(self.forumUrl + '/bbs/forum.php?mod=viewthread&tid=39765&extra=page%3D1').read().decode('utf-8')
       #self.openner爲上面保存到的cookie變量值,經過它能夠去訪問其它頁面。這裏的頁面是一個帖子的地址。隨意找的一個 爲了獲取formhash值
    
#print content rows = re.findall(r'<input type=\"hidden\" name=\"formhash\" value=\"(.*?)\" />', content) #正則匹配找到formhash值 if len(rows)!=0: self.formhash = rows[0] print 'formhash is: ' + self.formhash else: print 'none formhash!'
  def reply(self, tid, subject = u'',msg = u'支持玉樹臨風,人見人愛的高先生~~嘻嘻'):
        ''' 回帖 '''
        url = self.forumUrl + '/bbs/forum.php?mod=post&action=reply&fid=822&tid={}&extra=page%3D1&replysubmit=yes&infloat=yes&handlekey=fastpost&inajax=1'.format(tid)
        #url爲要回帖的地址
     postData
= urllib.urlencode({'formhash': self.formhash, 'message': msg.encode('utf-8'), 'subject': subject.encode('utf-8'), 'posttime':int(time.time()) })
     #定義一個postdata數據 req
= urllib2.Request(url,postData) content = self.openner.open(req).read().decode('utf-8') #print content if u'發佈成功' in content: print 'reply success!' else: print 'reply faild!'

if __name__ == '__main__': robot = Robot('http://192.168.150.1', 'admin', 'admin') robot.login() robot.reply(39765)
 
  

 

 

 

說明:到此已實現論壇的自動登陸回帖功能,因爲圖片上傳不了不少細節沒描述清楚,有問題能夠加羣244844732(羣剛建立)交流
相關文章
相關標籤/搜索