请问各位佬们,如何更快抢 b 站的预售的东西?本人已做出只不过还是很慢.希望给出更多见解

150 天前
 Ky2148

本人已用 Python 做出相应代码,但无论如何都抢不过别人,同步用的上海的阿里云和 b 站 ip 同步能达到 5ms 级别的.但逻辑代码没有问题,做了异步的操作.现在没有使用多线程.因为这个和抢购还有点区别.这个只是到点发售不限量.但是他前排的编号就这几个.所有就没做多线程,我现在不知道从哪里还能优化?我能想到的就是对应 b 站时间同步?但我找不到 b 站的 ntp.还有就是某人一直就能做到最前我也不知道他代码逻辑是什么.有没有前 b 站工作人员或者现阶段的解释一下,现在发放的这个逻辑是什么.为什么延迟做到如此低还抢不到.感谢佬们留帖回复

1273 次点击
所在节点    Python
8 条回复
dongtingyue
150 天前
提前 100ms 发起多个并发试试
Ky2148
150 天前
因为和正常抢购不一样,并发如果都接受的话是每个都要花钱的。也可能我理解错误了?
koast
149 天前
1. 别人跑代码的机房可能到 b 站服务器的延迟很低。
2. 别人可能提前几百毫秒建立一个连接池,然后把抢购的请求的前 N-1 个字节都发送好了,在接下来几百毫秒里挨个把连接池里每一个连接的最后一个字节发送出去。


另外,我没明白 2 楼是什么意思。意思是创建订单需要成功支付才算嘛?不是那种先创建订单,然后几分钟内付钱的类型嘛。你这个是抢 b 站的装扮我猜?要不怎么能知道别人抢到的序号。我没买过装扮,不知道具体过程是什么样的。
Ky2148
149 天前
1 的话我觉得我这个 5ms 我觉得应该很低了除非他是 b 站员工坐服务器旁边操作,2 的话请问怎么能做到每个连接最后一个字节发送过去。我没实操过不太懂这个原理,就是这个是有内置货币,的没有京东淘宝那种提交后生成订单。点击购买即代表购买成功。具体他给的序号的先后顺序还是怎么排列的原理不太懂,没看过源码也不太能理解。所以我现在最的最优解是多线程加异步来跑的,所以看看能不能请教一下 b 站的人看看具体原理逻辑是什么样子的
koast
149 天前
举个例子

比如 HTTP 报文如下

```
GET /buy HTTP/1.1
Host: www.example.com
Cookies: xxxxxxxxxxxxxxx
Content-length: 501

\r\n\r\n

yyyyyyyyyyyyyyyyyyyyyZ
```

你完全可以手动开一堆 socket 连接服务器的 tcp 80 端口 然后正常发送报文头 然后服务器就知道你这个报文长度是 501 那如果你这时候只发送前 500 个 bytes 然后 flush 缓冲区会发生什么呢?服务器收到了这 500 个 bytes 但是不够 content-length 标明的 501 ,然后在不超时的时候这个报文就会在缓冲区里等待处理。那你开一堆这种没有完成的连接,在快到时间的时候每个只需要发送 1 个 byte 就能等回复了,是不是比别人握手建立连接 然后发报文头 再发 body 要快一点呢?
Ky2148
149 天前
好的,非常感谢提供思路。但我有个问题想求教一下,因为这个最后一个字节定时发布的话延迟问题怎么解决呢。就是这个方法可以放在循环里面?总觉得有延迟的东西就是一个闭环但感谢提供思路我去试一试
Ky2148
149 天前
大佬能留一个 tg 交流一下嘛
godall
145 天前
抢购本身就有一定成功率的,别人也不一定成功啊,就像你京东抢茅台成功率 0.05%,用外挂成功率 1%高了很多,但是也是大部分不成功。要成功一定是多账号/多主机并发,单个的肯定不行。要么你 4 家运营商申请 4*5=20 个手机号同时抢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1051275

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX