mirror of https://github.com/KingRan/KR.git
121 lines
4.1 KiB
Python
121 lines
4.1 KiB
Python
|
"""
|
|||
|
const $ = new Env("京东饭粒");
|
|||
|
京东饭粒任务
|
|||
|
活动入口:https://u.jd.com/ytWx4w0
|
|||
|
每天90豆小毛,爱要不要
|
|||
|
|
|||
|
cron:
|
|||
|
46 0 * * * jd_fanli.py
|
|||
|
"""
|
|||
|
import json
|
|||
|
import sys
|
|||
|
import os
|
|||
|
import time
|
|||
|
import re
|
|||
|
import requests
|
|||
|
import random
|
|||
|
|
|||
|
proxies = {"http": None, "https": None}
|
|||
|
|
|||
|
|
|||
|
def printf(text):
|
|||
|
print(text)
|
|||
|
sys.stdout.flush()
|
|||
|
|
|||
|
|
|||
|
def randomstr(num):
|
|||
|
randomstr = ""
|
|||
|
for i in range(num):
|
|||
|
randomstr = randomstr + random.choice("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
|
|||
|
return randomstr
|
|||
|
|
|||
|
|
|||
|
def randomstr1():
|
|||
|
randomstr = ""
|
|||
|
for i in range(16):
|
|||
|
randomstr = randomstr + random.choice("0123456789")
|
|||
|
randomstr += "-"
|
|||
|
for i in range(16):
|
|||
|
randomstr = randomstr + random.choice("0123456789")
|
|||
|
return randomstr
|
|||
|
|
|||
|
|
|||
|
def getheader(ck):
|
|||
|
return {
|
|||
|
"Host": "ifanli.m.jd.com",
|
|||
|
"Connection": "keep-alive",
|
|||
|
"Accept": "application/json, text/plain, */*",
|
|||
|
"Cache-Control": "no-cache",
|
|||
|
"User-Agent": "jdapp;android;10.2.2;11;%s;model/Mi 10;osVer/30;appBuild/91077;partner/xiaomi001;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 11; Mi 10 Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045715 Mobile Safari/537.36" % randomstr1(),
|
|||
|
"Sec-Fetch-Mode": "cors",
|
|||
|
"X-Requested-With": "com.jingdong.app.mall",
|
|||
|
"Sec-Fetch-Site": "same-origin",
|
|||
|
"Referer": "https://ifanli.m.jd.com/rebate/earnBean.html?paltform=null",
|
|||
|
"Accept-Encoding": "gzip, deflate, br",
|
|||
|
"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
|
|||
|
"Cookie": ck,
|
|||
|
"Content-Type": "application/json;charset=UTF-8"
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
def getTaskList(ck):
|
|||
|
url = "https://ifanli.m.jd.com/rebateapi/task/getTaskList"
|
|||
|
headers = getheader(ck)
|
|||
|
r = requests.get(url, headers=headers, proxies=proxies)
|
|||
|
# printf(r.text)
|
|||
|
return r.json()["content"]
|
|||
|
|
|||
|
|
|||
|
def getTaskFinishCount(ck):
|
|||
|
url = "https://ifanli.m.jd.com/rebateapi/task/getTaskFinishCount"
|
|||
|
headers = getheader(ck)
|
|||
|
r = requests.get(url, headers=headers, proxies=proxies)
|
|||
|
printf(
|
|||
|
'已完成任务次数:' + str(r.json()["content"]["finishCount"]) + ' 总任务次数:' + str(r.json()["content"]["maxTaskCount"]))
|
|||
|
return r.json()["content"]
|
|||
|
|
|||
|
|
|||
|
def saveTaskRecord(ck, taskId, taskType):
|
|||
|
url = "https://ifanli.m.jd.com/rebateapi/task/saveTaskRecord"
|
|||
|
headers = getheader(ck)
|
|||
|
data = '{"taskId":%s,"taskType":%s}' % (taskId, taskType)
|
|||
|
r = requests.post(url, headers=headers, data=data, proxies=proxies)
|
|||
|
# printf(r.text)
|
|||
|
return r.json()["content"]["uid"], r.json()["content"]["tt"]
|
|||
|
|
|||
|
|
|||
|
def saveTaskRecord1(ck, taskId, uid, tt, taskType):
|
|||
|
# tt=int(time.time()*1000)
|
|||
|
url = "https://ifanli.m.jd.com/rebateapi/task/saveTaskRecord"
|
|||
|
headers = getheader(ck)
|
|||
|
data = '{"taskId":%s,"taskType":%s,"uid":"%s","tt":%s}' % (taskId, taskType, uid, tt)
|
|||
|
# printf(data)
|
|||
|
r = requests.post(url, headers=headers, data=data, proxies=proxies)
|
|||
|
printf(r.json()["content"]["msg"])
|
|||
|
|
|||
|
|
|||
|
if __name__ == '__main__':
|
|||
|
try:
|
|||
|
cks = os.environ["JD_COOKIE"].split("&")
|
|||
|
except:
|
|||
|
f = open("/jd/config/config.sh", "r", encoding='utf-8')
|
|||
|
cks = re.findall(r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"', f.read())
|
|||
|
f.close()
|
|||
|
for ck in cks:
|
|||
|
ptpin = re.findall(r"pt_pin=(.*?);", ck)[0]
|
|||
|
printf("--------开始京东账号" + ptpin + "--------")
|
|||
|
try:
|
|||
|
count = getTaskFinishCount(ck)
|
|||
|
if count["finishCount"] < count["maxTaskCount"]:
|
|||
|
for times in range(count["maxTaskCount"] - count["finishCount"]):
|
|||
|
tasks = getTaskList(ck)
|
|||
|
for i in tasks:
|
|||
|
if i["statusName"] != "活动结束":
|
|||
|
printf("开始做任务:" + i["taskName"])
|
|||
|
uid, tt = saveTaskRecord(ck, i["taskId"], i["taskType"])
|
|||
|
time.sleep(10)
|
|||
|
saveTaskRecord1(ck, i["taskId"], uid, tt, i["taskType"])
|
|||
|
break
|
|||
|
except:
|
|||
|
printf("发生异常错误")
|