[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()
by: 发表于:2017-09-30 10:34:25 顶(0) | 踩(0) 回复
??
回复评论