您的位置:首页 > 编程语言 > Python开发

用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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐