全国抗”疫”这么久终于见到曙光,在家待了将近一个月,现在终于可以去上班了,可是却发现出门必备的口罩却一直买不到。最近看到京东上每天都会有口罩的秒杀活动,试了几次却怎么也抢不到,到了抢购的时间,浏览器的页面根本就刷新不出来,等刷出来秒杀也结束了。现在每天只放出一万个,却有几百万人在抢,很想知道别人是怎么抢到的,于是就在网上找了大神公开出来的抢购代码。看了下代码并不复杂,现在我们就报着学习的态度一起看看。
使用模块
首先打开项目中 requirements.txt
文件,看下它都需要哪些模块:
- requests:类似
urllib
,主要用于向网站发送 HTTP 请求。 - beautifulsoup4:
HTML
解析器,用于将HTML
文档转换成一个复杂的树形结构。 - pillow:Python 图像处理标准库,用于识别验证码。
配置文件
一般项目中我们都需要把一些可配置的内容放到配置文件中,现在我们来看下这里主要配置项:
1 |
|
OK,有了配置文件,那我们就得有一段读取配置文件的代码,这段代码实现将配置内容加载到内存中。
1 |
|
主程序模块
我看 GitHub
上也有实现了运行程序后通过京东 App 扫码登陆,然后再通过登陆 Cookie
访问网站的,不过这里并没有使用这种方式,毕竟我们打开浏览器开发者工具也能很容易获取到登陆的 Cookie
,这里就是将 Cookie
直接放到配置文件里的方式。
1 |
|
以上就是该项目主程序,我已经将代码在原来基础上增加了些注释,可以让我们更容易明白代码的含义。下面我们就选择几个比较关键的代码分析一下。
登陆状态校验
1 |
|
以上代码是每次调用时,循环两次获取通过 session
获取当前登陆状态,如果两次后依然失败则退出程序。
添加商品到购物车
接下来我们再看下如果添加商品到购物车的,代码如下:
1 |
|
在这里,只是简单几行代码就能将端口添加到购物车了,而且这里还区分了不同类型商品添加到购物车返回的页面结果是不同的,所以要进行区别处理。
购买商品
将商品添加到购物车了,接下来我们就得提交结算页了,也就是将商品提交到付款页面,这段代码有点多,我简化了下并加了些注释:
1 |
|
以上代码实现了商品自动提交到结算页面,这段明显比添加购物车要复杂,果然跟钱有关的都不简单。好了,到了结算页面剩下就是付款了,这个就不需要再抢了,毕竟也没人会抢着给你付钱的。
总结
本文为大家介绍了一个京东抢购的小工具,它实现了扫描是否有库存,发现有库存就自动下单,并且可以自动提交到结算页面。而它所实现方式也并不算太复杂,进一步分析了它的部分代码,有兴趣的小伙伴可以去文末 GitHub 项目网址上了解更多,再次感谢开发者的付出和分享。
参考
GitHub项目网址:https://github.com/cycz/jdBuyMask