设为首页 收藏本站
查看: 954|回复: 0

[经验分享] python 自动顶贴工具

[复制链接]

尚未签到

发表于 2017-4-29 09:39:22 | 显示全部楼层 |阅读模式
#!D:\Program Files\Python25\python.exeimport urllib2, urllib, cookielibimport reimport getpassimport sqlite3import randomimport timeclass Discuz:def __init__(self,user,pwd,args):self.username = userself.password = pwdself.args = argsself.regex = {'loginreg':'<input\s*type="hidden"\s*name="formhash"\s*value="([\w\W]+?)"\s*\/>','replyreg':'<input\s*type="hidden"\s*name="formhash"\s*value="([\w\W]+?)"\s*\/>','tidreg': '<tbody\s*id="normalthread_\d+">[\s\S]+?<span\s*id="thread_(\d+)">'}self.conn = Noneself.cur = Noneself.islogin = Falseself.login()self.InitDB()def login(self):try:loginPage = urllib2.urlopen(self.args['loginurl']).read()formhash = re.search(self.regex['loginreg'], loginPage)formhash = formhash.group(1)#print 'login formhash:', formhashprint 'start login...'cj = cookielib.CookieJar()opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))user_agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Mozilla/4.0 \(compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.507'opener.addheaders = [('User-agent', user_agent)]urllib2.install_opener(opener)logindata = urllib.urlencode({'cookietime':    2592000,'formhash': formhash,'loginfield':'username','username':    self.username,'password':    self.password,'questionid':    0,'referer': self.args['referer']})request = urllib2.Request(self.args['loginsubmiturl'],logindata)response = urllib2.urlopen(request)self.islogin = Trueprint 'login success...'except Exception,e:print 'loggin error: %s' % edef PostReply(self, fid, tid, content):try:sql = "select * from post where fid='%s' and tid='%s'" % (fid,tid)self.cur.execute(sql)if self.cur.rowcount == -1:tidurl = self.args['tidurl'] % tidreplysubmiturl = self.args['replysubmiturl'] % (fid,tid)tidPage = urllib2.urlopen(tidurl).read()formhash = re.search(self.regex['replyreg'], tidPage)formhash = formhash.group(1)#print 'reply formhash:', formhashprint 'start reply...'replydata = urllib.urlencode({'formhash': formhash,'message': content,'subject': '','usesig':'1'})request = urllib2.Request(replysubmiturl,replydata)response = urllib2.urlopen(request)sql = "insert into post values ('%s', '%s', '%d')" % (fid, tid, 1)self.cur.execute(sql)self.conn.commit()print 'reply success for [%s]' % tidurlelse:print 'Skip! Thread:%s is already replied...' % tidexcept Exception, e:print 'reply error: %s' % edef GetTids(self, fid):if self.islogin:fidurl = self.args['fidurl'] % fidresponse = urllib2.urlopen(fidurl)content = response.read()tids = re.findall(self.regex['tidreg'], content)return tidselse:print 'Error Please Login...'def InitDB(self):self.conn = sqlite3.connect('data.db')self.cur = self.conn.cursor()sql = '''create table if not exists post (fid text,tid text,replied integer)'''self.cur.execute(sql)self.conn.commit()if __name__ == '__main__':username = raw_input('username:').strip()password = getpass.getpass('password:').strip()args = {'loginurl': 'http://bbs.tigtag.com/logging.php?action=login','loginsubmiturl': 'http://bbs.tigtag.com/logging.php?action=login&loginsubmit=yes','fidurl': 'http://bbs.tigtag.com/forum-%s-1.html','tidurl': 'http://bbs.tigtag.com/thread-%s-1-1.html','replysubmiturl': 'http://bbs.tigtag.com/post.php?action=reply&replysubmit=yes&infloat=yes&handlekey=fastpost&fid=%s&tid=%s','referer':'http://bbs.tigtag.com/index.php'}dz = Discuz(username, password,args)fid = '48'tids = dz.GetTids('48')replylist = [u'bucuo',u'hao',u'good',u'very nice']while True:tid = 1412440content = random.choice(replylist)content = content.encode('gbk')dz.PostReply('48',tid, content)time.sleep(20)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-370642-1-1.html 上篇帖子: python 引用与复制 下篇帖子: python编程的纠结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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