一、前语
快钱、飞凡双旦活动现已曩昔,这儿跟我们共享下我是怎么跟羊毛党战役的。/doge
由所以过后写的,所以其时活动的一些截图或许就没有了,我们自行脑补~
就当顺便给快钱、飞凡打个广告啦~
二、导火线
作为老东家,有活动当然要支撑一下啦,也就一元购还算比较靠谱划算了。
想抢个东西,从来没有看到过存在有货的状况,特别是整点放货的时分也根本都是已抢光,憎恶的羊毛党
特别是发现咸鱼上都是卖这个东西的
所以想着自己也去做个羊毛党算了,机敏啊。
三、发愤图强
说做就做,无非便是写脚本监控起来,发现有货了告知我们一下,我们去抢即可。
署理APP抓包(如有不会请自行百度),抓到活动页面的api恳求http://api.ffan.com/xxxxxxx
能够看到回来的内容,简略剖析下可知stockNum便是当时数量,totalStockNum是一共放出抢购的数量
当然辨认你想抢购的产品,能够经过detailUrl,goodsPic,goodsSn等仅有辨认码去辨认
所以这一块的代码应该是这样
fight against sheep beta0.9
def shuliang():
geturl='http://api.ffan.com/xxxxx'
headers ={(User-Agent),(Referer),(Cookie)}
opener.addheaders = headers
response = opener.open(geturl).read()//翻开网页获取回来内容
if(response.find('s1e58a65f13d284c1e811bd3a33c62e9f0')>0)://找到你想要重视的产品
str=response[response.find('s1e58a65f13d284c1e811bd3a33c62e9f0'):]
str=str[str.find('stockNum'):] shuliang=str[str.find(':')+1:str.find(',')]//经过最简略的字符串截取取得stockNum的值,也便是当时库存数量
if(int(shuliang)10)://这当地没货的状况值应该是0,这儿设为10的意思是,就算库存有10个也就作为没有货,横竖也抢不到,由于或许存在抢购到可是没有付款,所以订单超时撤销的状况
print("没有货")
else:
print("有货")
else:
print("没有上架")
上面beta0.9版别应该是有了雏形,但仍是有一些需求优化的当地
1.程序不能无限制的履行下去吧(经过time.sleep()来操控恳求的频率)
2.经过print打出的提示不能及时看到(暂时想到经过一个弹框来提示自己,在公司里,自己工作电脑总不能声响告警吧,可是当你在认真工作时,程序履行的时分发现有货了,谈判一个框告知你有货了,这样来到达及时的作用)
所以就有了以下的代码
fight against sheep beta1.0
while True:
shuliang()
time.sleep(60)//每分钟恳求一下查询库存
当然这个频率不是很适宜,需求细化,结合事务,每隔两小时的整点上货,那么我们就在那段时刻恳求频频一点即可
//每日9点到21点,每2小时的整点进行抢购,那我在55分到05分直接就多进行重视就行了。例如我8:55-9:05 10:55-11:05等等多加重视
if((int(time.strftime("%M"))>55 and int(time.strftime("%H"))%2==0 and int(time.strftime("%H"))>7 and int(time.strftime("%H"))22) or (int(time.strftime("%H"))%2==1 and int(time.strftime("%M"))5 and int(time.strftime("%H"))>7 and int(time.strftime("%H"))22)):
time.sleep(5)//接近抢购时刻点,我们5秒恳求一次
......
if(int(shuliang)10):
print("没有货")
else:
print("有货")
os.system("calc.exe")//弹个计算器出来,这样你一边在认证工作,忽然出来个计算器,你就知道有货了,就去预备购买了
上面代码为什么还不能成为正式版,由于在程序运转过程中还会发作一些问题,程序不行强健
1.当恳求频率过高时,socket衔接失利,例如翻开衔接超时,或许服务端拒绝了此次衔接等等,导致程序直接崩了(你认为你程序在跑着呢,成果程序反常直接退出了,你还傻傻的等它提示你呢)
2.print打印在终端,程序运转时刻长了内容多了终端无法悉数显示出来(加个日志吧,也不能说是日志,便是把终端打印的东西存在一个文本文件中去,便利检查)
3.感觉弹框提示形似也有局限性(比方1点的抢购,或许人还在外面吃午饭,你电脑上弹框了你也不知道有货了,所以添加邮件告警吧)
在处理了上面3个问题后,不是beta版的正式版别总算到来
fight against sheep 正式版
while 1:
try:
response = opener.open(geturl).read()
break//翻开网页犯错,则跳出循环从头履行
except Exception, e:
print str(e)
while True:
f=open('a.txt','a')
old=sys.stdout//便是把输出流接收了,放到新建的a.txt的文本文件傍边
sys.stdout=f
shuliang()
sys.stdout=old
f.close()
def send(to_list,sub,content):
me="xxxx@xxx.com"
msg = MIMEText(content,_subtype='plain',_charset='utf-8')
[1] [2] 黑客接单网
4.user.phpHost: localhost:6379主要有下面一些标题尽管这种进犯已呈现多年,但现在在大的门户网站还普遍存在,并且由于安全意识单薄,许多企业并未意识到这一问题的重要性。...
要约束对一个网页的拜访,可运用Apache和第三方供给的身份认证模块和方法来验证用户的凭证(如用户名和暗码)。一些模块支撑经过各种数据库(包含NIS和LDAP)进行身份认证。 用户认证指令一般放置在...
loaded from chunks file, equals to the hashcode of its chunk网页挖矿这一概念好像一夜之间风行了整个地球,许多网络违法分子都在运用这种技能并合...
/body> }为了进行身份验证,你需求获取你的API Key和Secret:1.post提交无法绕过NOTICE: CREATE TABLE / PRIMARY KEY...
追溯前史:2 中文命名与概述 // 本地敞开 1099 端口作为 RMI 服务,并以标识 "hello" 绑定办法目标B 侵略途径和歹意组件剖析3.Webshell后门检测./ccch_...
eg. 页面:/upfile.asp由于假如咱们能够经过一些技巧将开端的 imageData 消除的话就能够经过将 URL 中的 ID 设置为 imageData ,随后修正 URL 中的 ty...