KR/jd_health_plant.py

603 lines
32 KiB
Python
Raw Normal View History

2022-02-12 20:51:03 +08:00
#!/bin/env python3
# -*- coding: utf-8 -*
'''
感谢Curtin提供的其他脚本供我参考
感谢aburd ch大佬的指导
项目名称:xF_jd_health_plant.py
Author: 一风一扬
功能健康社区-种植园自动任务
Date: 2022-1-4
cron: 23 11,13,21 * * * xF_jd_health_plant.py
new Env('京东健康社区-种植园自动任务');
活动入口20:/#1DouT0KAaKuqv%
教程该活动与京东的ck通用但是变量我还是独立出来
青龙变量填写export plant_cookie="xxxx"
多账号用&隔开例如export plant_cookie="xxxx&xxxx"
青龙变量export charge_targe_id = 'xxxx'表示需要充能的id单账号可以先填写export charge_targe_id = '11111'运行一次脚本
日志输出会有charge_targe_id然后再重新修改export charge_targe_id = 'xxxxxx'多个账号也一样如果2个账号export charge_targe_id = '11111&11111'
3个账号export charge_targe_id = '11111&11111&11111'以此类推
注意charge_targe_id和ck位置要对应而且你有多少个账号就得填多少个charge_targe_id首次11111填写时为5位数
例如export plant_cookie="xxxx&xxxx&xxx"那export charge_targe_id = "11111&11111&11111",也要写满3个id这样才能保证所有账号都能跑
'''
######################################################以下代码请不要乱改######################################
UserAgent = ''
cookie = ''
account = ''
charge_targe_id = ''
cookies = []
charge_targe_ids = ''
import requests
import time,datetime
import requests,re,os,sys,random,json
from urllib.parse import quote, unquote
import threading
import urllib3
#urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
requests.packages.urllib3.disable_warnings()
today = datetime.datetime.now().strftime('%Y-%m-%d')
tomorrow=(datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%Y-%m-%d')
nowtime = datetime.datetime.now ().strftime ('%Y-%m-%d %H:%M:%S.%f8')
time1 = '21:00:00.00000000'
2022-02-12 22:44:36 +08:00
time2 = '22:00:00.00000000'
2022-02-12 20:51:03 +08:00
flag_time1 = '{} {}'.format (today, time1)
flag_time2 = '{} {}'.format (today, time2)
pwd = os.path.dirname(os.path.abspath(__file__)) + os.sep
path = pwd + "env.sh"
sid = ''.join (random.sample ('123456789abcdef123456789abcdef123456789abcdef123456789abcdef', 32))
sid_ck = ''.join (random.sample ('123456789abcdef123456789abcdef123456789abcdef123456789abcdefABCDEFGHIJKLMNOPQRSTUVWXYZ', 43))
def printT(s):
print("[{0}]: {1}".format(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), s))
sys.stdout.flush()
def getEnvs(label):
try:
if label == 'True' or label == 'yes' or label == 'true' or label == 'Yes':
return True
elif label == 'False' or label == 'no' or label == 'false' or label == 'No':
return False
except:
pass
try:
if '.' in label:
return float(label)
elif '&' in label:
return label.split('&')
elif '@' in label:
return label.split('@')
else:
return int(label)
except:
return label
# 获取v4环境 特殊处理
try:
with open(v4f, 'r', encoding='utf-8') as v4f:
v4Env = v4f.read()
r = re.compile(r'^export\s(.*?)=[\'\"]?([\w\.\-@#&=_,\[\]\{\}\(\)]{1,})+[\'\"]{0,1}$',
re.M | re.S | re.I)
r = r.findall(v4Env)
curenv = locals()
for i in r:
if i[0] != 'JD_COOKIE':
curenv[i[0]] = getEnvs(i[1])
except:
pass
############# 在pycharm测试ql环境用实际用下面的代码运行 #########
# with open(path, "r+", encoding="utf-8") as f:
# ck = f.read()
# if "JD_COOKIE" in ck:
# r = re.compile (r"pt_key=.*?pt_pin=.*?;", re.M | re.S | re.I)
# cookies = r.findall (ck)
# # print(cookies)
# # cookies = cookies[0]
# # print(cookies)
# # cookies = cookies.split ('&')
# printT ("已获取并使用ck环境 Cookie")
#######################################################################
if "plant_cookie" in os.environ:
if len (os.environ["plant_cookie"]) == 1:
is_ck = int(os.environ["plant_cookie"])
cookie1 = os.environ["JD_COOKIE"].split('&')
cookie = cookie1[is_ck-1]
printT ("已获取并使用Env环境cookie")
elif len (os.environ["plant_cookie"]) > 1:
cookies1 = []
cookies1 = os.environ["JD_COOKIE"]
cookies1 = cookies1.split ('&')
is_ck = os.environ["plant_cookie"].split('&')
for i in is_ck:
cookies.append(cookies1[int(i)-1])
printT ("已获取并使用Env环境plant_cookies")
else:
if cookie == '':
printT ("变量plant_cookie未填写")
exit (0)
if "charge_targe_id" in os.environ:
if len (os.environ["charge_targe_id"]) > 8:
charge_targe_ids = os.environ["charge_targe_id"]
charge_targe_ids = charge_targe_ids.split ('&')
else:
charge_targe_id = os.environ["charge_targe_id"]
printT (f"已获取并使用Env环境 charge_targe_id={charge_targe_id}")
else:
printT("变量charge_targe_id未填写无法充能")
def userAgent():
"""
随机生成一个UA
:return: jdapp;iPhone;9.4.8;14.3;xxxx;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1
"""
if not UserAgent:
uuid = ''.join(random.sample('123456789abcdef123456789abcdef123456789abcdef123456789abcdef', 40))
addressid = ''.join(random.sample('1234567898647', 10))
iosVer = ''.join(
random.sample(["14.5.1", "14.4", "14.3", "14.2", "14.1", "14.0.1", "13.7", "13.1.2", "13.1.1"], 1))
iosV = iosVer.replace('.', '_')
iPhone = ''.join(random.sample(["8", "9", "10", "11", "12", "13"], 1))
ADID = ''.join(random.sample('0987654321ABCDEF', 8)) + '-' + ''.join(
random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(
random.sample('0987654321ABCDEF', 4)) + '-' + ''.join(random.sample('0987654321ABCDEF', 12))
return f'jdapp;iPhone;10.0.4;{iosVer};{uuid};network/wifi;ADID/{ADID};supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone{iPhone},1;addressid/{addressid};supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS {iosV} like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1'
else:
return UserAgent
## 获取通知服务
class msg(object):
def __init__(self, m=''):
self.str_msg = m
self.message()
def message(self):
global msg_info
printT(self.str_msg)
try:
msg_info = "{}\n{}".format(msg_info, self.str_msg)
except:
msg_info = "{}".format(self.str_msg)
sys.stdout.flush() #这代码的作用就是刷新缓冲区。
# 当我们打印一些字符时并不是调用print函数后就立即打印的。一般会先将字符送到缓冲区然后再打印。
# 这就存在一个问题,如果你想等时间间隔的打印一些字符,但由于缓冲区没满,不会打印。就需要采取一些手段。如每次打印后强行刷新缓冲区。
def getsendNotify(self, a=0):
if a == 0:
a += 1
try:
url = 'https://gitee.com/curtinlv/Public/raw/master/sendNotify.py'
response = requests.get(url)
if 'curtinlv' in response.text:
with open('sendNotify.py', "w+", encoding="utf-8") as f:
f.write(response.text)
else:
if a < 5:
a += 1
return self.getsendNotify(a)
else:
pass
except:
if a < 5:
a += 1
return self.getsendNotify(a)
else:
pass
def main(self):
global send
cur_path = os.path.abspath(os.path.dirname(__file__))
sys.path.append(cur_path)
if os.path.exists(cur_path + "/sendNotify.py"):
try:
from sendNotify import send
except:
self.getsendNotify()
try:
from sendNotify import send
except:
printT("加载通知服务失败~")
else:
self.getsendNotify()
try:
from sendNotify import send
except:
printT("加载通知服务失败~")
###################
msg().main()
def setName(cookie):
try:
r = re.compile(r"pt_pin=(.*?);") #指定一个规则查找pt_pin=与;之前的所有字符,但pt_pin=与;不复制。r"" 的作用是去除转义字符.
userName = r.findall(cookie) #查找pt_pin=与;之前的所有字符并复制给r其中pt_pin=与;不复制。
#print (userName)
userName = unquote(userName[0]) #r.findall(cookie)赋值是list列表这个赋值为字符串
#print(userName)
return userName
except Exception as e:
print(e,"cookie格式有误")
exit(2)
#获取ck
def get_ck(token,sid_ck,account):
try:
url = 'https://api.m.jd.com/client.action?functionId=isvObfuscator'
headers = {
# 'Connection': 'keep-alive',
'accept': '*/*',
"cookie": f"{token}",
'host': 'api.m.jd.com',
# 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1',
'user-Agent': "JD4iPhone/167922%20(iPhone;%20iOS;%20Scale/2.00)",
'accept-Encoding': 'gzip, deflate, br',
'accept-Language': 'zh-Hans-CN;q=1',
"content-type":"application/x-www-form-urlencoded",
# "content-length":"1348",
}
timestamp = int (round (time.time () * 1000))
timestamp1 = int(timestamp / 1000)
data =r'body=%7B%22url%22%3A%22https%3A%5C/%5C/xinruismzd-isv.isvjcloud.com%22%2C%22id%22%3A%22%22%7D&build=167922&client=apple&clientVersion=10.3.2&d_brand=apple&d_model=iPhone12%2C1&ef=1&eid=eidI4a9081236as4w7JpXa5zRZuwROIEo3ORpcOyassXhjPBIXtrtbjusqCxeW3E1fOtHUlGhZUCur1Q1iocDze1pQ9jBDGfQs8UXxMCTz02fk0RIHpB&ep=%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22screen%22%3A%22ENS4AtO3EJS%3D%22%2C%22wifiBssid%22%3A%22' + f"{sid_ck}" + r'%3D%22%2C%22osVersion%22%3A%22CJUkCK%3D%3D%22%2C%22area%22%3A%22CJvpCJY1DV80ENY2XzK%3D%22%2C%22openudid%22%3A%22Ytq3YtKyDzO5CJuyZtu4CWSyZtC0Ytc1CJLsDwC5YwO0YtS5CNrsCK%3D%3D%22%2C%22uuid%22%3A%22aQf1ZRdxb2r4ovZ1EJZhcxYlVNZSZz09%22%7D%2C%22ts%22%3A1642002985%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D&ext=%7B%22prstate%22%3A%220%22%2C%22pvcStu%22%3A%221%22%7D&isBackground=N&joycious=88&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&partner=apple&rfs=0000&scope=01&sign=946db60626658b250cf47aafb6f67691&st=1642002999847&sv=112&uemps=0-0&uts=0f31TVRjBSu3kkqwe7t25AkQCKuzV3pz8JrojVuU0630g%2BkZigs9kTwRghT26sE72/e92RRKan/%2B9SRjIJYCLuhew91djUwnIY47k31Rwne/U1fOHHr9FmR31X03JKJjwao/EC1gy4fj7PV1Co0ZOjiCMTscFo/8id2r8pCHYMZcaeH3yPTLq1MyFF3o3nkStM/993MbC9zim7imw8b1Fg%3D%3D'
# data = '{"token":"AAFh3ANjADAPSunyKSzXTA-UDxrs3Tn9hoy92x4sWmVB0Kv9ey-gAMEdJaSDWLWtnMX8lqLujBo","source":"01"}'
# print(data)
response = requests.post (url=url, verify=False, headers=headers,data=data)
result = response.json ()
# print(result)
access_token = result['token']
print(access_token)
return access_token
except Exception as e:
msg("账号【{0}】获取ck失败cookie过期".format(account))
#获取Authorization
def get_Authorization(access_token,account):
try:
url = 'https://xinruismzd-isv.isvjcloud.com/api/auth'
headers = {
'Connection': 'keep-alive',
'Accept': 'application/json, text/plain, */*',
"Authorization": 'Bearer undefined',
'Referer': 'https://xinruismzd-isv.isvjcloud.com/healthy-plant2021/logined_jd/',
'Host': 'xinruismzd-isv.isvjcloud.com',
# 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1',
'User-Agent': userAgent (),
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
"Origin":"https://xinruismzd-isv.isvjcloud.com",
"Content-Type":"application/json;charset=utf-8",
}
data = '{"token":"'+ f"{access_token}" + r'","source":"01"}'
# print(data)
response = requests.post (url=url, verify=False, headers=headers,data=data)
result = response.json ()
print(result)
access_token = result['access_token']
access_token = r"Bearer " + access_token
# print(access_token)
return access_token
except Exception as e:
msg("账号【{0}】获取Authorization失败cookie过期".format(account))
#获取已种植的信息
def get_planted_info(cookies,sid,account):
name_list = []
planted_id_list = []
url = 'https://xinruismzd-isv.isvjcloud.com/api/get_home_info'
headers = {
'Connection': 'keep-alive',
'Accept': 'application/json, text/plain, */*',
"Authorization": cookies,
'Referer': f'https://xinruismzd-isv.isvjcloud.com/healthy-plant2021/?channel=ddjkicon&sid={sid}&un_area=19_1655_4866_0',
'Host': 'xinruismzd-isv.isvjcloud.com',
# 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1',
'User-Agent': userAgent (),
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh-Hans;q=0.9'
}
response = requests.get (url=url, verify=False, headers=headers)
result = response.json ()
# print(result)
planted_list = result['plant']
# print(planted_list)
for i in range (len (planted_list)):
try:
name = result['plant'][f'{i+1}']['data']['name']
planted_id = result['plant'][f'{i+1}']['data']['id']
print(f"账号{account}所种植的",f"{name}","充能ID为:",planted_id)
name_list.append(name)
planted_id_list.append(planted_id)
except Exception as e:
pass
#获取早睡打卡
def get_sleep(cookies,sid):
url = 'https://xinruismzd-isv.isvjcloud.com/api/get_task'
headers = {
'Connection': 'keep-alive',
'Accept': 'application/json, text/plain, */*',
"Authorization": cookies,
'Referer': f'https://xinruismzd-isv.isvjcloud.com/healthy-plant2021/?channel=ddjkicon&sid={sid}&un_area=19_1655_4866_0',
'Host': 'xinruismzd-isv.isvjcloud.com',
# 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1',
'User-Agent': userAgent (),
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh-Hans;q=0.9'
}
response = requests.get (url=url, verify=False, headers=headers)
result = response.json ()
# print(result)
taskToken_list = result['result']['taskVos']
for i in range (len (taskToken_list)):
try:
taskName = taskToken_list[i]['taskName']
taskId = taskToken_list[i]['taskId']
if "早睡" in taskName:
taskToken = taskToken_list[i]['threeMealInfoVos'][0]['taskToken']
2022-02-12 22:44:36 +08:00
return taskName,taskId,taskToken
2022-02-12 20:51:03 +08:00
except Exception as e:
print (e)
#获取任务信息
def get_task(cookies,sid,account):
try:
taskName_list = []
taskId_list = []
taskToken_list = []
url = 'https://xinruismzd-isv.isvjcloud.com/api/get_task'
headers = {
'Connection': 'keep-alive',
'Accept': 'application/json, text/plain, */*',
"Authorization":cookies,
'Referer': f'https://xinruismzd-isv.isvjcloud.com/healthy-plant2021/?channel=ddjkicon&sid={sid}&un_area=19_1655_4866_0',
'Host': 'xinruismzd-isv.isvjcloud.com',
# 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1',
'User-Agent': userAgent (),
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh-Hans;q=0.9'
}
response = requests.get(url=url, verify=False, headers=headers)
result = response.json()
# print(result)
task_list = result['result']['taskVos']
# print(task_list)
for i in range (len (task_list)):
try:
taskName = task_list[i]['taskName']
taskId = task_list[i]['taskId']
taskToken = task_list[i]['shoppingActivityVos'][0]['taskToken']
taskName_list.append(taskName)
taskId_list.append(taskId)
taskToken_list.append(taskToken)
except Exception as e:
print(e)
# print(taskName_list, taskId_list, taskToken_list)
return taskName_list, taskId_list, taskToken_list
except Exception as e:
print (e)
msg("【账号{0}】浏览任务已全部完成".format(account))
2022-02-12 22:44:36 +08:00
return '', '', ''
2022-02-12 20:51:03 +08:00
#获取加购任务信息
def get_task2(cookies,sid,account):
try:
taskToken_list = []
url = 'https://xinruismzd-isv.isvjcloud.com/api/get_task'
headers = {
'Connection': 'keep-alive',
'Accept': 'application/json, text/plain, */*',
"Authorization":cookies,
'Referer': f'https://xinruismzd-isv.isvjcloud.com/healthy-plant2021/?channel=ddjkicon&sid={sid}&un_area=19_1655_4866_0',
'Host': 'xinruismzd-isv.isvjcloud.com',
# 'User-Agent': 'jdapp;iPhone;9.4.8;14.3;809409cbd5bb8a0fa8fff41378c1afe91b8075ad;network/wifi;ADID/201EDE7F-5111-49E8-9F0D-CCF9677CD6FE;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,4;addressid/2455696156;supportBestPay/0;appBuild/167629;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1',
'User-Agent': userAgent (),
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh-Hans;q=0.9'
}
response = requests.get(url=url, verify=False, headers=headers)
result = response.json()
# print(result)
taskName = result['result']['taskVos'][0]['taskName']
taskId = result['result']['taskVos'][0]['taskId']
task_list = result['result']['taskVos'][0]['productInfoVos']
# print(task_list)
for i in range (len (task_list)):
try:
taskToken = task_list[i]['taskToken']
taskToken_list.append(taskToken)
except Exception as e:
pass
# print(taskName, taskId, taskToken_list)
return taskName, taskId, taskToken_list
except Exception as e:
print (e)
msg("【账号{0}】加购任务已全部完成".format(account))
2022-02-12 22:44:36 +08:00
return '','',''
2022-02-12 20:51:03 +08:00
#做任务
def do_task(cookies,taskName,taskId,taskToken,sid,account):
try:
url = 'https://xinruismzd-isv.isvjcloud.com/api/do_task'
url1 = 'https://xinruismzd-isv.isvjcloud.com/api/catch_task'
headers = {
'Connection': 'keep-alive',
'Accept': 'application/json, text/plain, */*',
"Content-Type":"application/json",
"Authorization":cookies,
'Referer': f'https://xinruismzd-isv.isvjcloud.com/healthy-plant2021/?channel=ddjkicon&sid={sid}&un_area=19_1655_4866_0',
'Host': 'xinruismzd-isv.isvjcloud.com',
# 'User-Agent': 'jdapp;iPhone;10.3.0;;;M/5.0;appBuild/167903;jdSupportDarkMode/0;ef/1;ep/%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22ud%22%3A%22Ytq3YtKyDzO5CJuyZtu4CWSyZtC0Ytc1CJLsDwC5YwO0YtS5CNrsCK%3D%3D%22%2C%22sv%22%3A%22CJUkCK%3D%3D%22%2C%22iad%22%3A%22%22%7D%2C%22ts%22%3A1641370097%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1;',
'User-Agent': userAgent (),
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
# "Cookie":"__jd_ref_cls=Mnpm_ComponentApplied; mba_muid=16410448680341440020208.1480.1641370098735; mba_sid=1480.10; __jda=60969652.16410448680341440020208.1641044868.1641357628.1641370076.6; __jdb=60969652.3.16410448680341440020208|6.1641370076; __jdc=60969652; __jdv=60969652%7Ckong%7Ct_1000170135%7Ctuiguang%7Cnotset%7C1641349527806; pre_seq=8; pre_session=b87b02719192f981b2f34b7510b6c9ba4b2908b0|3687; jd-healthy-plantation=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC94aW5ydWlzbXpkLWlzdi5pc3ZqY2xvdWQuY29tXC9hcGlcL2F1dGgiLCJpYXQiOjE2NDEzNTU0NzksImV4cCI6MTY0MTM5ODY3OSwibmJmIjoxNjQxMzU1NDc5LCJqdGkiOiJTcGdZbU1HeU50c084c0Z2Iiwic3ViIjoiNWF1aVRrdlZRVl9icDQ3T0EtVmRQMVFOR3FQcEhMXzUtLU5XdGs5TUhPYyIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.cfuKGTSrCfBX2qxrTdcW2ME3ASBbTo-DCFRwHWoPiDg"
"Origin":"https://xinruismzd-isv.isvjcloud.com",
# "Content-Length":"124",
}
data = r'{"taskToken":"' +f"{taskToken}" +r'","task_id":' + f"{taskId}" + r',"task_type":9,"task_name":"' + f"{taskName}" + r'"}'
res = requests.post(url=url1, verify=False, headers=headers,data=data.encode())
# print(res.status_code)
if res.status_code == 200:
msg("账号【{0}】正在执行任务请稍等10秒".format(account))
time.sleep(10)
response = requests.post(url=url, verify=False, headers=headers,data=data.encode()) #data中有汉字需要encode为utf-8
result = response.json()
print(result)
score = result['score']
msg ("账号【{0}】执行任务【{1}】成功,获取【{2}】能量".format (account, taskName,score))
except Exception as e:
print(e)
#做任务
def do_task2(cookies,taskName,taskId,taskToken,sid,account):
try:
url = 'https://xinruismzd-isv.isvjcloud.com/api/do_task'
headers = {
'Connection': 'keep-alive',
'Accept': 'application/json, text/plain, */*',
"Content-Type":"application/json",
"Authorization":cookies,
'Referer': f'https://xinruismzd-isv.isvjcloud.com/healthy-plant2021/?channel=ddjkicon&sid={sid}&un_area=19_1655_4866_0',
'Host': 'xinruismzd-isv.isvjcloud.com',
# 'User-Agent': 'jdapp;iPhone;10.3.0;;;M/5.0;appBuild/167903;jdSupportDarkMode/0;ef/1;ep/%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22ud%22%3A%22Ytq3YtKyDzO5CJuyZtu4CWSyZtC0Ytc1CJLsDwC5YwO0YtS5CNrsCK%3D%3D%22%2C%22sv%22%3A%22CJUkCK%3D%3D%22%2C%22iad%22%3A%22%22%7D%2C%22ts%22%3A1641370097%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1;',
'User-Agent': userAgent (),
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
# "Cookie":"__jd_ref_cls=Mnpm_ComponentApplied; mba_muid=16410448680341440020208.1480.1641370098735; mba_sid=1480.10; __jda=60969652.16410448680341440020208.1641044868.1641357628.1641370076.6; __jdb=60969652.3.16410448680341440020208|6.1641370076; __jdc=60969652; __jdv=60969652%7Ckong%7Ct_1000170135%7Ctuiguang%7Cnotset%7C1641349527806; pre_seq=8; pre_session=b87b02719192f981b2f34b7510b6c9ba4b2908b0|3687; jd-healthy-plantation=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC94aW5ydWlzbXpkLWlzdi5pc3ZqY2xvdWQuY29tXC9hcGlcL2F1dGgiLCJpYXQiOjE2NDEzNTU0NzksImV4cCI6MTY0MTM5ODY3OSwibmJmIjoxNjQxMzU1NDc5LCJqdGkiOiJTcGdZbU1HeU50c084c0Z2Iiwic3ViIjoiNWF1aVRrdlZRVl9icDQ3T0EtVmRQMVFOR3FQcEhMXzUtLU5XdGs5TUhPYyIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.cfuKGTSrCfBX2qxrTdcW2ME3ASBbTo-DCFRwHWoPiDg"
"Origin":"https://xinruismzd-isv.isvjcloud.com",
# "Content-Length":"124",
}
data = r'{"taskToken":"' +f"{taskToken}" +r'","task_id":' + f"{taskId}" + r',"task_type":9,"task_name":"' + f"{taskName}" + r'"}'
time.sleep(1)
response = requests.post(url=url, verify=False, headers=headers,data=data.encode()) #data中有汉字需要encode为utf-8
result = response.json()
# print(result)
score = result['score']
msg ("账号【{0}】执行任务【{1}】成功,获取【{2}】能量".format (account, taskName,score))
except Exception as e:
print(e)
#充能
def charge(charge_targe_id,cookies,sid,account):
try:
url = 'https://xinruismzd-isv.isvjcloud.com/api/add_growth_value'
headers = {
'Connection': 'keep-alive',
'Accept': 'application/json, text/plain, */*',
"Content-Type":"application/json",
"Authorization":cookies,
'Referer': f'https://xinruismzd-isv.isvjcloud.com/healthy-plant2021/?channel=ddjkicon&sid={sid}&un_area=19_1655_4866_0',
'Host': 'xinruismzd-isv.isvjcloud.com',
# 'User-Agent': 'jdapp;iPhone;10.3.0;;;M/5.0;appBuild/167903;jdSupportDarkMode/0;ef/1;ep/%7B%22ciphertype%22%3A5%2C%22cipher%22%3A%7B%22ud%22%3A%22Ytq3YtKyDzO5CJuyZtu4CWSyZtC0Ytc1CJLsDwC5YwO0YtS5CNrsCK%3D%3D%22%2C%22sv%22%3A%22CJUkCK%3D%3D%22%2C%22iad%22%3A%22%22%7D%2C%22ts%22%3A1641370097%2C%22hdid%22%3A%22JM9F1ywUPwflvMIpYPok0tt5k9kW4ArJEU3lfLhxBqw%3D%22%2C%22version%22%3A%221.0.3%22%2C%22appname%22%3A%22com.360buy.jdmobile%22%2C%22ridx%22%3A-1%7D;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1;',
'User-Agent': userAgent (),
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
# "Cookie":"__jd_ref_cls=Mnpm_ComponentApplied; mba_muid=16410448680341440020208.1480.1641370098735; mba_sid=1480.10; __jda=60969652.16410448680341440020208.1641044868.1641357628.1641370076.6; __jdb=60969652.3.16410448680341440020208|6.1641370076; __jdc=60969652; __jdv=60969652%7Ckong%7Ct_1000170135%7Ctuiguang%7Cnotset%7C1641349527806; pre_seq=8; pre_session=b87b02719192f981b2f34b7510b6c9ba4b2908b0|3687; jd-healthy-plantation=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC94aW5ydWlzbXpkLWlzdi5pc3ZqY2xvdWQuY29tXC9hcGlcL2F1dGgiLCJpYXQiOjE2NDEzNTU0NzksImV4cCI6MTY0MTM5ODY3OSwibmJmIjoxNjQxMzU1NDc5LCJqdGkiOiJTcGdZbU1HeU50c084c0Z2Iiwic3ViIjoiNWF1aVRrdlZRVl9icDQ3T0EtVmRQMVFOR3FQcEhMXzUtLU5XdGs5TUhPYyIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.cfuKGTSrCfBX2qxrTdcW2ME3ASBbTo-DCFRwHWoPiDg"
"Origin":"https://xinruismzd-isv.isvjcloud.com",
# "Content-Length":"124",
}
data = r'{"plant_id":' + f"{charge_targe_id}" + r'}'
for i in range(10):
response = requests.post(url=url, verify=False, headers=headers,data=data.encode()) #data中有汉字需要encode为utf-8
result = response.json()
# print(result)
user_coins = result['user_coins'] #剩余能量
coins = result['plant_info']['coins'] #消耗能量
msg ("账号【{0}】充能成功,消耗【{1}】能量,剩余能量【{2}".format (account, coins,user_coins))
time.sleep(2)
except Exception as e:
# print(e)
message = result['message']
if "充值次数达到上限" in message:
msg("账号【{0}】充能次数已达上限10次".format(account))
def start():
global cookie,cookies,charge_targe_id
print (f"\n【准备开始...】\n")
nowtime = datetime.datetime.now ().strftime ('%Y-%m-%d %H:%M:%S.%f8')
if cookie != '':
account = setName (cookie)
access_token = get_ck(cookie,sid_ck,account)
cookie = get_Authorization (access_token, account)
get_planted_info (cookie, sid,account)
if nowtime > flag_time1 and nowtime < flag_time2:
taskName,taskId,taskToken = get_sleep (cookie,sid)
do_task(cookie,taskName,taskId,taskToken,sid,account)
2022-02-12 22:44:36 +08:00
charge(charge_targe_id,cookie,sid,account)
2022-02-12 20:51:03 +08:00
else:
taskName_list,taskId_list,taskToken_list = get_task (cookie,sid,account)
for i,j,k in zip(taskName_list,taskId_list,taskToken_list):
do_task(cookie,i,j,k,sid,account)
taskName, taskId, taskToken_list = get_task2(cookie,sid,account)
for i in taskToken_list:
do_task2 (cookie, taskName, taskId, i, sid,account)
charge(charge_targe_id,cookie,sid, account)
elif cookies != '':
for cookie, charge_targe_id in zip (cookies, charge_targe_ids):
account = setName (cookie)
access_token = get_ck (cookie, sid_ck, account)
cookie = get_Authorization (access_token, account)
get_planted_info (cookie, sid,account)
for cookie,charge_targe_id in zip(cookies,charge_targe_ids):
try:
account = setName (cookie)
access_token = get_ck (cookie, sid_ck,account)
cookie = get_Authorization (access_token, account)
get_planted_info (cookie,sid,account)
if nowtime > flag_time1 and nowtime < flag_time2:
taskName, taskId, taskToken = get_sleep (cookie,sid)
do_task (cookie, taskName, taskId, taskToken, sid,account)
else:
taskName_list, taskId_list, taskToken_list = get_task (cookie, sid,account)
for i, j, k in zip (taskName_list, taskId_list, taskToken_list):
do_task (cookie, i, j, k, sid,account)
taskName, taskId, taskToken_list = get_task2 (cookie,sid, account)
for i in taskToken_list:
do_task2 (cookie, taskName, taskId, i, sid,account)
charge (charge_targe_id, cookie,sid, account)
except Exception as e:
pass
else:
printT("请检查变量plant_cookie是否已填写")
if __name__ == '__main__':
printT("京东健康社区-种植园")
start ()
if '成熟' in msg_info:
send ("京东健康社区-种植园", msg_info)
if '成功' in msg_info:
send ("京东健康社区-种植园", msg_info)