SinnoSong/SecKill

老哥,帮瞅瞅

Closed this issue · 13 comments

@DL150408 是否修改过开始时间?可以把请求频率调慢一点。

hllhe commented

我也是这个情况,求大佬帮助

@DL150408 是否修改过开始时间?可以把请求频率调慢一点。

我不会写,我从老哥1.0用到现在1.21,我是纯小白= = 老哥得空再看看呗

@DL150408 想到一种问题,可能是因为你本机的时间早于秒苗小程序的时间,导致过早开始抢,然后又因为0.1秒一次,多次之后就会把你封掉。

@DL150408 想到一种问题,可能是因为你本机的时间早于秒苗小程序的时间,导致过早开始抢,然后又因为0.1秒一次,多次之后就会把你封掉。

那有没有办法直接获取秒苗的时间,根据它的时间来抢呢?

@DL150408 这个没办法的,因为大家都是采用的北京时间,但是但是总会因为各种原因导致使用的客户端和秒苗服务器时间对不太上,但是这个误差不会很大的,可以适当调整下开始的时间和每次抢的时间间隔。

我这两天尝试,要不返回
{'code': '9999', 'msg': '操作过于频繁,请稍后再试!', 'ok': False, 'notOk': True}
要不就返回
{'error_msg': '{"code":"9999","msg":"秒杀人数太多,排队中.."}'}

2022-04-22 13:59:59.392831 --线程2--返回数据: {'error_msg': '{"co de":"9999","msg":"秒杀人数太多,排队中.."}'}

感觉抢苗的服务端时间有一些小的误差,大概0.6s,我看有个接口checkstock2是检查疫苗是否可以抢,下次用这个来判断抢的时间试下
有大佬指教下吗?

@cccc24 如果你会写java或者C#的话,你可以自己拉个分支,然后在httpService里面加上这个接口的调用,HttpService里面有封装过的统一的http请求方法。然后在SecService里面,抢苗开始前每隔0.5s调用一次这个接口看是否能抢,如果可以就直接进行抢,如果不行就进行下次。或者你可以把checkstock2的接口入参,响应发给我,让我来改。

@SinnoSong
url='https://miaomiao.scmttec.com/seckill/seckill/checkstock2.do?id=1893' method=get ,其中id为疫苗id

相应为:{
"code": "0000",
"data": {
"stock": 1,
"st": 1650766217454
},
"ok": true,
"notOk": false
}
stock=1为不到抢苗时间,stock=0为可抢状态

@cccc24 看了下这个接口,项目中有使用到,不过是用来获取st,然后加密之后发送秒杀请求的。使用这个接口用来做检查可行性上不太行,会有延迟还有2端之间的时间差异,最好还是提前抢。

@cccc24 看了下这个接口,项目中有使用到,不过是用来获取st,然后加密之后发送秒杀请求的。使用这个接口用来做检查可行性上不太行,会有延迟还有2端之间的时间差异,最好还是提前抢。

提前抢目前我遇到两个问题:一是提前抢的时间不确定,也存在2端差异;二是抢的频繁会提示操作过于频繁,请稍后再试,不知道是服务端检测到了频繁请求还是说因为服务器爆满都这样返回,每次要不就是提示操作频繁,要不就是秒杀人数过多在排队,要不就没抢到了

@cccc24 下午我试试把获取加密参数和开始抢的时间向后改改。

@cccc24 用这个版本的,看了下,因为上次更改异步方式的问题把部分代码还原后导致的时间问题。