用Python 实现刷钻网上抢任务,并实现一个简单的限制使用时间的功能
2011-07-20 21:48
1636 查看
# coding=utf-8
'''
Created on 2011-7-1
@author: Yunanw
'''
import cookielib, urllib2, urllib
import time
import lxml.html as H
import lxml.etree
import ConfigParser
from socket import *
import struct
#===============================================================================
# 此处必改
#===============================================================================
BuildTime = time.strptime('2011-07-08', "%Y-%m-%d")
Payed = False
#===============================================================================
# 常量
#===============================================================================
CurrentTime = time.strptime('1970-07-08', "%Y-%m-%d")
Password = ""
XiaoHao = ""
OpCode = ""
TaskPage = "http://www.shuazuanla.com/taobao.asp?flag=0"
TimeServer = "time.apple.com"
# 初始化UrlLib模块
cookiejar = cookielib.CookieJar()
proxy = urllib2.ProxyHandler({'http': '127.0.0.1:8888'})
urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
urllib2.install_opener(urlOpener)
def Log(msg):
print msg
def Post(url, Data):
request = urllib2.Request(url, urllib.urlencode(Data))
page = urlOpener.open(request)
return page.read()
def Get(url):
request = urllib2.Request(url)
page = urlOpener.open(request)
return page.read()
def InitConfig():
config = ConfigParser.ConfigParser()
config.read("config.ini")
##
global Password
Password = config.get("userdata", "password")
global XiaoHao
XiaoHao = config.get("userdata", "xiaohao")
global OpCode
OpCode = config.get("userdata", "opcode")
global TaskPage
TaskPage = config.get("userdata", "taskpage")
def Login():
##登陆URL
loginUrl = "http://www.shuazuanla.com/user_log.asp"
usrAndPwd = {"UserName":"你的用户名", "PassWord":Password}
ret = Post(loginUrl, usrAndPwd)
ret = ret.decode('gbk').encode('utf-8')
if ret.find('用户名或密码错误') > -1:
print U'用户名或密码错误'
return False
else:
return True
def OpenTaskListPage():
return Get(TaskPage)
#return Get("http://www.shuazuanla.com/taobao.asp")
def AnlyseTaskListPage(taskListPage):
#开始分析
doc = H.document_fromstring(taskListPage)
trTaskList = doc.xpath("//table[@style='background:url(images/fenlei_right.jpg) no-repeat;']//table[last()]/tr[position()>1]")
taskList = []
for trTask in trTaskList:
tdTaskState = trTask.findtext('./td[last()]/a')
if tdTaskState == U'等待接手':
taskList.append(trTask.findtext('./td[1]/a'))
return taskList
def ProcessTask(taskID):
print U"找到任务:" + taskID
#ret = submitTask(taskID)
#print ret.split('<script>')[2]
def ProcessTaskAsync(taskID):
return ProcessTask(taskID)
def submitTask(taskID):
url = 'http://www.shuazuanla.com/showinfo.asp?action=sbuto&din=' + taskID
postData = 'xiaohao=&xiaohao=&txiaohao_u842=' + XiaoHao + '&select=&opPassWord=' + OpCode + '&Submit=%C1%A2%BC%B4%BD%D3%CA%D6%C8%CE%CE%F1'
request = urllib2.Request(url, postData)
#网站会校验Refrer
request.add_unredirected_header("Referer", 'http://www.shuazuanla.com/showinfo.asp?action=jie&din=' + taskID)
page = urlOpener.open(request)
return page.read()
def GetNetTime():
if Payed:
return None
time_server = (TimeServer, 123)
TIME1970 = 2208988800L
client = socket(AF_INET, SOCK_DGRAM)
data = '\x1b' + 47 * '\0'
client.sendto(data, time_server)
data, address = client.recvfrom(1024)
if data:
t = struct.unpack('!12I', data)[10]
if t == 0:
raise U'取得时间出错'
global CurrentTime
CurrentTime = time.localtime(t - TIME1970)
else:
raise U'与时间服务器通信失败'
def TimeJudge():
if Payed:
return True
seconds = time.mktime(BuildTime) - time.mktime(CurrentTime)
print seconds
if seconds < 0:
raise U"试用已到期,请付款"
###################################################
# 自动刷钻程序
#
###################################################
GetNetTime()
#读配置
InitConfig()
#登陆
ret = Login()
while(ret):
taskListPage = OpenTaskListPage()
TaskList = AnlyseTaskListPage(taskListPage)
if len(TaskList) == 0:
print U'未找到合适任务'
for taskid in TaskList:
ProcessTaskAsync(taskid)
TimeJudge()
time.sleep(2)
'''
Created on 2011-7-1
@author: Yunanw
'''
import cookielib, urllib2, urllib
import time
import lxml.html as H
import lxml.etree
import ConfigParser
from socket import *
import struct
#===============================================================================
# 此处必改
#===============================================================================
BuildTime = time.strptime('2011-07-08', "%Y-%m-%d")
Payed = False
#===============================================================================
# 常量
#===============================================================================
CurrentTime = time.strptime('1970-07-08', "%Y-%m-%d")
Password = ""
XiaoHao = ""
OpCode = ""
TaskPage = "http://www.shuazuanla.com/taobao.asp?flag=0"
TimeServer = "time.apple.com"
# 初始化UrlLib模块
cookiejar = cookielib.CookieJar()
proxy = urllib2.ProxyHandler({'http': '127.0.0.1:8888'})
urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
urllib2.install_opener(urlOpener)
def Log(msg):
print msg
def Post(url, Data):
request = urllib2.Request(url, urllib.urlencode(Data))
page = urlOpener.open(request)
return page.read()
def Get(url):
request = urllib2.Request(url)
page = urlOpener.open(request)
return page.read()
def InitConfig():
config = ConfigParser.ConfigParser()
config.read("config.ini")
##
global Password
Password = config.get("userdata", "password")
global XiaoHao
XiaoHao = config.get("userdata", "xiaohao")
global OpCode
OpCode = config.get("userdata", "opcode")
global TaskPage
TaskPage = config.get("userdata", "taskpage")
def Login():
##登陆URL
loginUrl = "http://www.shuazuanla.com/user_log.asp"
usrAndPwd = {"UserName":"你的用户名", "PassWord":Password}
ret = Post(loginUrl, usrAndPwd)
ret = ret.decode('gbk').encode('utf-8')
if ret.find('用户名或密码错误') > -1:
print U'用户名或密码错误'
return False
else:
return True
def OpenTaskListPage():
return Get(TaskPage)
#return Get("http://www.shuazuanla.com/taobao.asp")
def AnlyseTaskListPage(taskListPage):
#开始分析
doc = H.document_fromstring(taskListPage)
trTaskList = doc.xpath("//table[@style='background:url(images/fenlei_right.jpg) no-repeat;']//table[last()]/tr[position()>1]")
taskList = []
for trTask in trTaskList:
tdTaskState = trTask.findtext('./td[last()]/a')
if tdTaskState == U'等待接手':
taskList.append(trTask.findtext('./td[1]/a'))
return taskList
def ProcessTask(taskID):
print U"找到任务:" + taskID
#ret = submitTask(taskID)
#print ret.split('<script>')[2]
def ProcessTaskAsync(taskID):
return ProcessTask(taskID)
def submitTask(taskID):
url = 'http://www.shuazuanla.com/showinfo.asp?action=sbuto&din=' + taskID
postData = 'xiaohao=&xiaohao=&txiaohao_u842=' + XiaoHao + '&select=&opPassWord=' + OpCode + '&Submit=%C1%A2%BC%B4%BD%D3%CA%D6%C8%CE%CE%F1'
request = urllib2.Request(url, postData)
#网站会校验Refrer
request.add_unredirected_header("Referer", 'http://www.shuazuanla.com/showinfo.asp?action=jie&din=' + taskID)
page = urlOpener.open(request)
return page.read()
def GetNetTime():
if Payed:
return None
time_server = (TimeServer, 123)
TIME1970 = 2208988800L
client = socket(AF_INET, SOCK_DGRAM)
data = '\x1b' + 47 * '\0'
client.sendto(data, time_server)
data, address = client.recvfrom(1024)
if data:
t = struct.unpack('!12I', data)[10]
if t == 0:
raise U'取得时间出错'
global CurrentTime
CurrentTime = time.localtime(t - TIME1970)
else:
raise U'与时间服务器通信失败'
def TimeJudge():
if Payed:
return True
seconds = time.mktime(BuildTime) - time.mktime(CurrentTime)
print seconds
if seconds < 0:
raise U"试用已到期,请付款"
###################################################
# 自动刷钻程序
#
###################################################
GetNetTime()
#读配置
InitConfig()
#登陆
ret = Login()
while(ret):
taskListPage = OpenTaskListPage()
TaskList = AnlyseTaskListPage(taskListPage)
if len(TaskList) == 0:
print U'未找到合适任务'
for taskid in TaskList:
ProcessTaskAsync(taskid)
TimeJudge()
time.sleep(2)
相关文章推荐
- unity实现简单的加密使用次数限制时间限制功能
- unity实现简单的加密使用次数限制时间限制功能
- unity实现简单的加密使用次数限制时间限制功能
- 一个使用监听器模式实现的J2ME网络编程框架,包括一个简单的登录功能实现(含源代码)
- 使用Python实现一个简单的项目监控
- 使用EF6和MVC5实现一个简单的选课系统--使用EF6实现基本的GRUD功能(2/12)
- Python(10)使用python函数实现一个简单的闭包操作
- 用最简单的函数实现功能:判断一个int数据是否是2的x次幂(不能使用循环)。
- yii2.0使用插件实现一个简单的上传功能
- 构建垂直搜索引擎 本课程带领大家实现一个简单的垂直搜索引擎网站,使用nodejs、python、elasticsearch实现的。
- 使用Python实现简单的服务器功能
- python 之 使用web.py实现一个简单的增删改查应用
- ios-day20-01(使用UIWebView实现一个简单功能的浏览器)
- Python(27)使用python的http,cgi模块实现一个简单的web服务
- Python(15)python使用tkinter实现一个简单的压缩/解压程序
- Python(16)python使用tkinter实现一个简单的计算器
- 使用python实现一个简单的学生信息管理系统
- Python使用Redis实现一个简单作业调度系统
- 使用Python语言写一个简单的KMP模式匹配算法实现
- 一个使用监听器模式实现的J2ME网络编程框架,包括一个简单的登录功能实现(含源代码)