用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

论坛自动灌水机源码 ptthon版

2014-03-11 作者:java举报

[python]代码库

#-*-coding:utf-8-*-
"""
MyFrame1类通过wxFormBuilder生成
作者:overpan
电子邮箱:overpan(at)gmail.com
描述:逍遥论坛某版块灌水机
创建时间:2013.04.19
最后修改:2013.04.26
"""

import wx, sys, string
import re, random
import gui, os 
import urllib, urllib2, cookielib
# Implementing MyFrame1
class Jx3BbsMyFrame1( gui.MyFrame1 ):
    def __init__( self, parent ):
        gui.MyFrame1.__init__( self, parent )
        self.timer = wx.Timer(self, 1)
        self.Bind(wx.EVT_TIMER, self.setTimer, self.timer)
        
    def Denglu_anniu( self, event ):
        name = self.m_ZhanghaoSRK.GetValue()
        pwd = self.m_MimaSRK.GetValue()
        scode = self.m_YanZhengMaSRK.GetValue()
        vals = {'name':name,
                'pwd':pwd,
                'scode':scode,
                'needCode':'0'}
        # 如果登陆成功就将验证码图片框中显示自制的提示图片
        if fbm.logForumId(urllib.urlencode(vals)):
            img = wx.Image('win.jpg', wx.BITMAP_TYPE_ANY).ConvertToBitmap()
            self.m_YanZhengMaTPK.SetBitmap(img)
        else:
            m = u""" 
            登陆失败,请检查账号密码或者验证码是否输入正确。
            请重开程序重复登陆过程,并确保输入内容正确。
            """
            wx.MessageBox(m, u'错误提示', wx.OK)
            wx.Exit()

    def KaishiGuanshui( self, event ):
        if self.timer.IsRunning():
            self.timer.Stop()
            self.m_GuanshuiAN.SetLabel(u'开始')
        else:
            self.timer.Start(32009)
            self.m_GuanshuiAN.SetLabel(u'停止')

    def setTimer(slef, event):
        # 一开始并不知道还能用choice还傻傻的直接取随机整数来切片
        cycleEvents(random.choice(g_postMsg).encode('utf-8'))

class App(wx.App):
    def OnInit(self):
        frame = Jx3BbsMyFrame1(None)
        frame.Show()
        return True

class falseBrowserModel():
    def __init__(self):
        self.cj = cookielib.CookieJar()
        self.op = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj))
        urllib2.install_opener(self.op)

    def downloadTheCodeImage(self):
        self.url = "https://my.xoyo.com/login/scode/small/"
        self.image = urllib2.urlopen(self.url).read()
        self.f = open("code.jpg", "wb")
        self.f.write(self.image)
        self.f.close()

    def logForumId(self, postdate):
        self.url = "https://my.xoyo.com/login/loginAction/"
        self.htm = urllib2.urlopen(self.url, postdate).read()
        self.url="http://jx3.bbs.xoyo.com/forumdisplay.php?fid=7101&page=2"
        self.htm = urllib2.urlopen(self.url).read()
        self.i = re.search(u'退出'.encode('utf-8'), self.htm)
        if self.i:
            return 1 

    def refreshPage(self, url):
        return urllib2.urlopen(url).read()
        # 其实我也知道这两个方法其实可以写作一个,不过为了区分还是多写一遍吧
    def postmsg(self, url, msg):
        urllib2.urlopen(url, msg).read()
        

def main():
    fbm.downloadTheCodeImage()
    app = App()
    app.MainLoop()

def extractData(regex, content, index=1):
    r = '0'
    p = re.compile(regex)
    m = p.search(content)
    if m:
        r = m.group(index)
    return r

def cycleEvents(msg):
    url = "http://jx3.bbs.xoyo.com/forumdisplay.php?fid=7101&page=2"
    page = fbm.refreshPage(url)
    regex = 'tid=(\d+).*New'
    tid = extractData(regex, page)
    var_list = ["http://jx3.bbs.xoyo.com/viewthread.php?tid=", 
            tid, "&extra=page%3D2"]
    url = ''.join(var_list)
    page = fbm.refreshPage(url)
    regex = 'value="(\w{8,8})"'
    formhash = extractData(regex, page) 
    varlist=["http://jx3.bbs.xoyo.com/post.php?action=reply&fid=7101&tid=", 
        tid, 
        "&extra=page%3D2&replysubmit=yes&infloat=yes&handlekey",
        "=fastpost&inajax=1&local=undefined"]
    url = ''.join(varlist)
    postdate = {'formhash':formhash,
            'subject':'',
            'usesig':'1',
            'message':msg}
    fbm.postmsg(url, urllib.urlencode(postdate))

# 到现在都不知道为什么直接使用global定义会出错,只有放在这里了。
fbm = falseBrowserModel()
g_postMsg = [u'好的我知道了,退下吧',
    u'太阳当空照,花儿对我笑',
    u'你的就是我的,我的还是我的',
    u'听说最近脑残片涨价了,我都买不到了',
    u'自己打败自己是最可悲的失败,自己战胜自己是最可贵的胜利。',
    u'用行动祈祷比用言语更能使上帝了解,尽管我是无神论者',
    u'不要问别人为你做了什么,而要问你为别人做了什么。',
    u'你一天的爱心可能带来别人一生的感谢。',
    u'人之所以有一张嘴,而有两只耳朵,原因是听的要比说的多一倍。',
    u'山不辞土,故能成其高;海不辞水,故能成其深! ']

if __name__ == "__main__":
    main()


分享到:
更多

网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。