最近玩新必应比较上瘾,闲来无事的时候刷京东看到抢茅台呢,就试试看,结果老是失败,就想着让新必应用python写一个京东抢茅台的脚本,由于我是非科班,也不知道这个脚本能不能运行,就贴出来给大神们看看:
# coding=utf-8
import requests
import time
import json
import random
import datetime
# 请填写以下信息
username = \"\" # 京东账号
password = \"\" # 京东密码
eid = \"\" # 浏览器F12获取
fp = \"\" # 浏览器F12获取
sku_id = \"100012043978\" # 茅台商品ID
buy_time = \"2021-01-08 10:00:00\" # 抢购时间
# 登录请求头
login_headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
'Referer': 'https://passport.jd.com/new/login.aspx?ReturnUrl=https://www.jd.com/',
'Connection': 'keep-alive',
}
# 抢购请求头
buy_headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
'Referer': f'https://item.jd.com/{sku_id}.html',
'Connection': 'keep-alive',
}
# 登录会话
session = requests.session()
# 获取登录二维码
def get_qrcode():
url = \"https://qr.m.jd.com/show\"
params = {
\"appid\": 133,
\"size\": 147,
\"t\": int(time.time() * 1000),
}
response = session.get(url=url, params=params, headers=login_headers)
if response.status_code == 200:
with open(\"qrcode.png\", \"wb\") as f:
f.write(response.content)
print(\"请打开qrcode.png扫码登录\")
else:
print(\"获取二维码失败\")
# 检查是否扫码登录成功
def check_login():
url = \"https://qr.m.jd.com/check\"
params = { \"callback\": \nf\"jQuery{random.randint(1000000, 9999999)}\",
\n\"appid\": \n133,
\n\"token\": session.cookies.get(\n\"wlfstk_smdl\"),
\n\"_\": \nint(time.time() * \n1000),
}
response = session.get(url=url, params=params, headers=login_headers)
\nif response.status_code == \n200:
result = response.text
\nif \n\"二维码未扫描\" \nin result:
\nprint(\n\"请扫描二维码\")
\nreturn \nFalse
\nelif \n\"二维码已扫描\" \nin result:
\nprint(\n\"请在手机上确认登录\")
\nreturn \nFalse
\nelif \n\"二维码已过期\" \nin result:
\nprint(\n\"二维码已过期,请重新获取\")
\nreturn \nFalse
\nelif \n\"success\" \nin result:
\nprint(\n\"登录成功\")
\nreturn \nTrue
\nelse:
\nprint(\n\"未知错误\")
\nreturn \nFalse
\nelse:
\nprint(\n\"检查登录失败\")
\nreturn \nFalse
# 获取用户信息
def \nget_user_info():
url = \n\"https://passport.jd.com/user/petName/getUserInfoForMiniJd.action\"
params = {
\n\"callback\": \nf\"jQuery{random.randint(1000000, 9999999)}\",
\n\"_\": \nint(time.time() * \n1000),
}
response = session.get(url=url, params=params, headers=login_headers)
\nif response.status_code == \n200:
result = response.text
start = result.find(\n\"(\") + \n1
end = result.rfind(\n\")\")
user_info = json.loads(result[start:end])
nickname = user_info.get(\n\"nickName\")
\nprint(\nf\"欢迎您,{nickname}\")
\nelse:
\nprint(\n\"获取用户信息失败\")
# 预约商品
def \nreserve():
url = \n\"https://yushou.jd.com/youshouinfo.action\"
params = {
\n\"callback\": \nf\"fetchJSON{random.randint(1000000, 9999999)}\",
\n\"sku\": sku_id,
\n\"_\": \nint(time.time() * \n1000),
}
response = session.get(url=url, params=params, headers=buy_headers)
\nif response.status_code == \n200:
result = response.text
start = result.find(\n\"(\") + \n1
end = result.rfind(\n\")\")
reserve_info = json.loads(result[start:end])
\nif reserve_info.get(\n\"code\") == \n\"200\":
reserve_url = reserve_info.get(\n\"url\")
session.get(url=reserve_url, headers=buy_headers)
\nprint(\n\"预约成功\")
\nelse:
\nprint(\n\"预约失败\")
\nelse:
\nprint(\n\"获取预约信息失败\")
# 秒杀商品
def \nseckill():
url = \n\"https://marathon.jd.com/seckillnew/orderService/pc/submitOrder.action?skuId=\" + sku_id
data = {
\n\"skuId\": sku_id,
\n\"num\": \n1,
\n\"password\": \n\"\",
\n\"eid\": eid,
\n\"fp\": fp,
}
response = session.post(url=url, data=data, headers=buy_headers)
\nif response.status_code == \n200:
result = response.json()
\nif result.get(\n\"success\"):
order_id = result.get(\n\"orderId\")
total_price = result.get(\n\"totalMoney\")
pay_url = \nf\"https://marathon.jd.com/seckill/seckill.action?skuId={sku_id}&orderId={order_id}\"
\nprint(\nf\"抢购成功,订单号:{order_id},总价:{total_price},付款链接:{pay_url}\")
\nreturn \nTrue
\nelse:
\nprint(\nf\"抢购失败,返回信息:{result}\")
\nreturn \nFalse
\nelse:
\nprint(\n\"提交订单失败\")
\nreturn \nFalse
# 检查订单
def \ncheck_order():
url = \n\"https://order.jd.com/center/list.action\"
params = {
\n\"rid\": \nint(time.time() * \n1000),
}
response = session.get(url=url, params=params, headers=buy_headers)
\nif response.status_code == \n200:
orders = response.text
\nif sku_id \nin orders:
\nprint(\n\"订单提交成功\")
\nreturn \nTrue
\nelse:
\nprint(\n\"订单提交失败\")
\nreturn \nFalse
\nelse:
\nprint(\n\"获取订单失败\")
\nreturn \nFalse
# 支付订单
def \npay_order():
\npass \n# 此处省略支付逻辑,需要在手机上完成
# 主函数
def \nmain():
\n# 获取登录二维码
get_qrcode()
\n# 检查是否登录成功
\nwhile \nnot check_login():
time.sleep(\n1)
\n# 获取用户信息
get_user_info()
\n# 预约商品
reserve()
\n# 等待抢购时间
\nwhile \nTrue:
now = datetime.datetime.now()
\nif now.strftime(\n\"%Y-%m-%d %H:%M:%S\") >= buy_time:
\nbreak
time.sleep(\n0.1)
\n# 秒杀商品
\nwhile \nnot seckill():
time.sleep(\n0.1)
\n# 检查订单
\nwhile \nnot check_order():
time.sleep(\n0.1)
# 支付订单
pay_order()
\nprint(\n\"抢购流程结束\")
if __name__ == \n\"__main__\":
main()
以上就是新必应写的完整的脚本代码。
上一篇:新剑侠传奇天下第一剑怎么获得 新剑侠传奇之天山之战
下一篇:明日方舟兑换码怎么输入 明日方舟兑换码