2023年 3月 18日

python脚本抢优惠券_Python写京东抢券小工具

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

首先我们需要安装python环境

这里我们选用Anaconda,它可以方便的管理python包和环境。

下载地址https://www.anaconda.com/products/individual

我们使用Anaconda中的Spyder来编辑抢券小工具

687dc489012e

image.png

浏览器选择

我使用了火狐浏览器,以下讲解截图均是基于火狐浏览器。

下载地址https://www.firefox.com.cn/

正片开始

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

687dc489012e

image.png

2.右键选择检查元素

687dc489012e

image.png

3.点击页面领取一个优惠券,查看网络

687dc489012e

领券网络截图

接口参数讲解

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

身份验证接口

我们需要从中获取一些有用信息。请求头参数(User-Agent、Referer、Cookie)。其中User-Agent、Referer这2个参数和抢券接口是相同的。

通过复制请求头。我们从中剥离出User-Agent、Referer、Cookie数据,它们分别对应完整代码中的user_agent、referer、cookie_1

687dc489012e

image.png

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

687dc489012e

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)

获取券编码方式:

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

687dc489012e

image.png

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

687dc489012e

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中会打印数据,如果出现重复打印已领取或其它领取失败的情况,务必及时点击右上角方块停止运行,以防造成不必要的麻烦。

687dc489012e

image.png

特别说明

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