京东助手抢购-购买口罩教程

这两天发现了一个开源项目:京东抢购助手,看到群里的小伙伴拿来抢购口罩,有些确实可以抢到,就自己来折腾一下。

关于该项目

看项目介绍原本是作者用来抢手机的,但是由于最近疫情的原因被大家用来抢口罩。

仓库:https://github.com/tychxn/jd-assistant

主要功能:登录京东、查询库存,有货提交(更多功能见 github)

环境准备

该项目由 Python 编写,自然需要安装 Python。如果电脑上没有 python 最好下载 Python 3.8,如果已经有 Python 2.7 可以跳过此步骤先试一下能不能跑。

安装

Python 下载:

https://www.python.org/downloads

安装完可以在控制台输入:

python -V

查看 python 版本。如果提示该命令不存在,可能需要手动将安装的 python 添加到系统环境变量。

环境变量

我用的是 windows 电脑,安装的是 Python 3.8.1,安装完的默认目录为:

C:\Users\savokiss\AppData\Local\Programs\Python\Python38

而 pip 程序目录为:

C:\Users\savokiss\AppData\Local\Programs\Python\Python38\Scripts

将上面两个目录添加到系统的环境变量中即可。

具体环境变量的设置就不多说了,不会的同学可以自行百度。

安装依赖

Python 安装完之后,进入到项目目录,在命令行执行:

pip install -r requirements.txt

VC++ Build Tools 14

如果安装的时候提示找不到 VC++ Build Tools,可以从下面链接下载:

http://cdn.savokiss.com/softwares/VC-Build-Tools-14.exe

参数配置

config.ini

打开项目根目录的 config.ini 这个文件可以看到,有四个参数需要配置,分别为:

  • eid

  • fp

  • track_id

  • risk_control

这四个参数获取方法如下:

  1. 找到任意有货商品,加购物车并结算,进入到 订单结算页

  2. 打开浏览器控制台(按 F12)

  3. 复制项目下 js/get_parameters.js 中的代码,粘贴到控制台并回车

  4. 得到控制台中显示出来的四个字段

具体见下图:

京东助手抢购-购买口罩教程_第1张图片

获取不到 eid 和 fp

有一次我用上面的方法获取不到 eid 和 fp,然后看了一下作者的代码,发现项目根目录下的一个文件: get_eid_fp.html ,将这个文件直接用 chrome 打开就可以看到 eid 和 fp 了。

这应该是原作者发现这个问题后提供的另一种获取方法,只不过在文档上都没有提到。

测试订单

打开 main.py 文件,里面的代码即为直接提交订单的代码,作者建议先拿一个商品测试一下(只提交订单不会付款)

如下图:

京东助手抢购-购买口罩教程_第2张图片

我们随便找一个有货的普通商品(最好不带任何优惠券的),商品详情页 URL 上的那串数字就是 sku_id。

如我上面用来测试的订单链接为:

https://item.jd.com/5242972.html

其中 5242972 即为 sku_id,我们将它拿下来填在上图代码中的位置。

然后在控制台执行:

python main.py

如果没登录,程序会生成一张二维码的图片,用京东 APP 扫描后即可登录成功。

正常的话,程序会自动提交该商品订单,在 我的订单 中就能看到一个未付款的订单。

抢购口罩

由于我们要抢购无货的口罩,所以需要使用有货提交订单的代码:

from jd_assistant import Assistant

if __name__ == '__main__':
    sku_ids = '100001324422:1'  # 商品id
    area = '1_72_4211'        # 区域id
    asst = Assistant()        # 初始化
    asst.login_by_QRcode()    # 扫码登陆
    asst.buy_item_in_stock(sku_ids=sku_ids, area=area, wait_all=False, stock_interval=5)
    # 6个参数:
    # sku_ids: 商品id。可以设置多个商品,也可以带数量,如:'1234' 或 '1234,5678' 或 '1234:2' 或 '1234:2,5678:3'
    # area: 地区id
    # wait_all: 是否等所有商品都有货才一起下单,可选参数,默认False
    # stock_interval: 查询库存时间间隔,可选参数,默认3秒
    # submit_retry: 提交订单失败后重试次数,可选参数,默认3次
    # submit_interval: 提交订单失败后重试时间间隔,可选参数,默认5秒

代码见官方 wiki:

https://github.com/tychxn/jd-assistant/wiki

其中 sku_ids 我们可以从文末链接获取,注意只有没有下架但是无货的商品才管用。

而 area_id 可以根据自己所在的省市从项目中的 area_id 文件夹中获取。

stock_interval 是查询库存的时间间隔,默认 5 秒 太长,我们可以改成 1

运行截图

京东助手抢购-购买口罩教程_第3张图片

由于这个项目的查询库存是同步的,如果某个商品查询时间过长会影响后面的查询,所以监控的商品 id 不易过多。

全文完

好了,本文只是从技术上验证该程序抢口罩的可行性,话说笔者自己的口罩也快用完了,希望口罩的产能能尽快跟上吧~

关于口罩的 sku_id 获取和其他一些口罩渠道可以看笔者的上一篇文章:

关于口罩购买渠道和信息渠道

你可能感兴趣的:(京东助手抢购-购买口罩教程)