1
+ """
2
+ const $ = new Env("京东饭粒");
3
+ 京东饭粒任务
4
+ 活动入口:https://u.jd.com/ytWx4w0
5
+ 每天60豆小毛,爱要不要
6
+ cron:
7
+ 46 9 * * * jd_fanli.py
8
+ """
9
+ import json
10
+ import sys
11
+ import os
12
+ import time
13
+ import re
14
+ import requests
15
+ import random
16
+
17
+ proxies = {"http" : None , "https" : None }
18
+
19
+
20
+ def printf (text ):
21
+ print (text )
22
+ sys .stdout .flush ()
23
+
24
+
25
+ def randomstr (num ):
26
+ randomstr = ""
27
+ for i in range (num ):
28
+ randomstr = randomstr + random .choice ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" )
29
+ return randomstr
30
+
31
+
32
+ def randomstr1 ():
33
+ randomstr = ""
34
+ for i in range (16 ):
35
+ randomstr = randomstr + random .choice ("0123456789" )
36
+ randomstr += "-"
37
+ for i in range (16 ):
38
+ randomstr = randomstr + random .choice ("0123456789" )
39
+ return randomstr
40
+
41
+
42
+ def getheader (ck ):
43
+ return {
44
+ "Host" : "ifanli.m.jd.com" ,
45
+ "Connection" : "keep-alive" ,
46
+ "Accept" : "application/json, text/plain, */*" ,
47
+ "Cache-Control" : "no-cache" ,
48
+ "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 (),
49
+ "Sec-Fetch-Mode" : "cors" ,
50
+ "X-Requested-With" : "com.jingdong.app.mall" ,
51
+ "Sec-Fetch-Site" : "same-origin" ,
52
+ "Referer" : "https://ifanli.m.jd.com/rebate/earnBean.html?paltform=null" ,
53
+ "Accept-Encoding" : "gzip, deflate, br" ,
54
+ "Accept-Language" : "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" ,
55
+ "Cookie" : ck ,
56
+ "Content-Type" : "application/json;charset=UTF-8"
57
+ }
58
+
59
+
60
+ def getTaskList (ck ):
61
+ url = "https://ifanli.m.jd.com/rebateapi/task/getTaskList"
62
+ headers = getheader (ck )
63
+ r = requests .get (url , headers = headers , proxies = proxies )
64
+ # printf(r.text)
65
+ return r .json ()["content" ]
66
+
67
+
68
+ def getTaskFinishCount (ck ):
69
+ url = "https://ifanli.m.jd.com/rebateapi/task/getTaskFinishCount"
70
+ headers = getheader (ck )
71
+ r = requests .get (url , headers = headers , proxies = proxies )
72
+ printf (
73
+ '已完成任务次数:' + str (r .json ()["content" ]["finishCount" ]) + ' 总任务次数:' + str (r .json ()["content" ]["maxTaskCount" ]))
74
+ return r .json ()["content" ]
75
+
76
+
77
+ def saveTaskRecord (ck , taskId , taskType ):
78
+ url = "https://ifanli.m.jd.com/rebateapi/task/saveTaskRecord"
79
+ headers = getheader (ck )
80
+ data = '{"taskId":%s,"taskType":%s}' % (taskId , taskType )
81
+ r = requests .post (url , headers = headers , data = data , proxies = proxies )
82
+ # printf(r.text)
83
+ return r .json ()["content" ]["uid" ], r .json ()["content" ]["tt" ]
84
+
85
+
86
+ def saveTaskRecord1 (ck , taskId , uid , tt , taskType ):
87
+ # tt=int(time.time()*1000)
88
+ url = "https://ifanli.m.jd.com/rebateapi/task/saveTaskRecord"
89
+ headers = getheader (ck )
90
+ data = '{"taskId":%s,"taskType":%s,"uid":"%s","tt":%s}' % (taskId , taskType , uid , tt )
91
+ # printf(data)
92
+ r = requests .post (url , headers = headers , data = data , proxies = proxies )
93
+ printf (r .json ()["content" ]["msg" ])
94
+
95
+
96
+ if __name__ == '__main__' :
97
+ try :
98
+ cks = os .environ ["JD_COOKIE" ].split ("&" )
99
+ except :
100
+ f = open ("/jd/config/config.sh" , "r" , encoding = 'utf-8' )
101
+ cks = re .findall (r'Cookie[0-9]*="(pt_key=.*?;pt_pin=.*?;)"' , f .read ())
102
+ f .close ()
103
+ for ck in cks :
104
+ ptpin = re .findall (r"pt_pin=(.*?);" , ck )[0 ]
105
+ printf ("--------开始京东账号" + ptpin + "--------" )
106
+ try :
107
+ count = getTaskFinishCount (ck )
108
+ if count ["finishCount" ] < count ["maxTaskCount" ]:
109
+ for times in range (count ["maxTaskCount" ] - count ["finishCount" ]):
110
+ tasks = getTaskList (ck )
111
+ for i in tasks :
112
+ if i ["statusName" ] != "活动结束" :
113
+ printf ("开始做任务:" + i ["taskName" ])
114
+ uid , tt = saveTaskRecord (ck , i ["taskId" ], i ["taskType" ])
115
+ time .sleep (10 )
116
+ saveTaskRecord1 (ck , i ["taskId" ], uid , tt , i ["taskType" ])
117
+ break
118
+ except :
119
+ printf ("发生异常错误" )
0 commit comments