Python写京东抢券小工具

这是一个可以帮助我们抢券的小工具。不一定能抢到,只是增加了概率。

首先我们需要安装python环境

这里我们选用Anaconda,它可以方便的管理python包和环境。
下载地址https://www.anaconda.com/products/individual
我们使用Anaconda中的Spyder来编辑抢券小工具

image.png

浏览器选择

我使用了火狐浏览器,以下讲解截图均是基于火狐浏览器。
下载地址https://www.firefox.com.cn/

正片开始

1.首先使用火狐浏览器打开京东商城,登录账号,进入优惠券页面


image.png

2.右键选择检查元素


image.png

3.点击页面领取一个优惠券,查看网络
领券网络截图
接口参数讲解

需要用到2个接口,第一行和第四行。第一行这个接口是京东进行身份验证用的,第四行接口是抢券用的。

身份验证接口

我们需要从中获取一些有用信息。请求头参数(User-Agent、Referer、Cookie)。其中User-Agent、Referer这2个参数和抢券接口是相同的。
通过复制请求头。我们从中剥离出User-Agent、Referer、Cookie数据,它们分别对应完整代码中的user_agent、referer、cookie_1


image.png

通过复制网址获取身份验证接口的地址,对应完整代码中的url_1


image.png
抢券接口

和身份验证接口一样,通过复制信息获取Cookie和接口地址,分别对应完整代码中的cookie_2、url_2。
需要注意的是,下面数据是接口地址,其中的key要删除掉,这个key是优惠券的编码,我们需要把它替换成想要抢的券的编码。对应完整代码中的coupon_key

https://a.jd.com/indexAjax/getCoupon.html?callback=jQuery5746673&key=0271DFD6890D3B60ACB8BA8A9E49BEB17FE8E6323A36834B63FE69E95D38088EEB376E75E098A8957F9DCEC56AAF5FD6EE12CF82BAC47129E098BA801496C8C2BED55B0AD982233C8C5D05B90A17FC67F0C6597810E700D247B396787AA294B7&type=1&_=1597754338810

需要改成这样,这里的coupon_key是券的编码

url_2 = "https://a.jd.com/indexAjax/getCoupon.html?callback=jQuery5746673&key={0}&type=1&_=1597754338810".format(coupon_key)

获取券编码方式:

  • 激活选取页面中的元素功能


    image.png
  • 点击优惠券,找到带有data-key层级的div标签。这个data-key的值就是我们要找的券的编码。对应完整代码中的coupon_key


    image.png

至此,我们已经获取到需要的数据了,请自行替换参数。scheduled_time是设置抢券的时间,可以精确到秒。完整代码如下:

import requests
import datetime

# 设置抢券的时间
scheduled_time = "2020-08-19 11:36:59"

# 浏览器及版本
user_agent = ""
# 接口的referer参数
referer = ""
# cookie参数(验证身份接口)
cookie_1 = ""
# 验证身份接口请求头
header_1={
        'User-Agent':user_agent,    
        'Referer':referer,    
        'Cookie':cookie_1}
# 验证身份接口地址
url_1 = ""

# cookie参数(抢券接口)
cookie_2 = ""
# 抢券接口请求头
header_2={
        'User-Agent':user_agent,    
        'Referer':referer,    
        'Cookie': cookie_2}
# 券的编号
coupon_key = ""
# 抢券接口地址
# 注意把获取到的接口地址改成下面代码模样
url_2 = "https://a.jd.com/indexAjax/getCoupon.html?callback=jQuery5746673&key={0}&type=1&_=1597754338810".format(coupon_key)

session = requests.session()
# 先调用京东反爬接口,进行身份验证
response_1 = session.get(url_1, headers=header_1)
print(response_1.text)
    
# 执行抢券操作
print('等待抢券中......')
while True:
    # 当前时间
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    # 如果到预定时间就开始调用抢券接口,然后打印结果
    if now >= scheduled_time:
        response_2 = requests.get(url_2, headers=header_2)    
        response_2.encoding='utf-8'
        print(response_2.text)
        if '领券成功' in response_2.text:
            break
    

补充说明

Spyder编辑器,左上角三角为运行。右上角方块为停止。右侧Console中会打印数据,如果出现重复打印已领取或其它领取失败的情况,务必及时点击右上角方块停止运行,以防造成不必要的麻烦。


image.png

特别说明

此篇文章重在学习Python自动化,切莫他用。

你可能感兴趣的:(Python写京东抢券小工具)