diff --git a/ksdt820.py b/ksdt820.py new file mode 100644 index 0000000..d096caa --- /dev/null +++ b/ksdt820.py @@ -0,0 +1,186 @@ +import time +import requests +import random +import os +import json +import sys + +IP1 = "119.29.118.112:20238" +IP2 = "authentication.pearsons.live:35003" + + +def ger_env(key): + cookies = os.getenv(key) + if cookies: + cookies = cookies.split("&") + return cookies + else: + print("===获取环境变量失败===") + sys.stdout.flush() + +def printf(text): + print(f"[账号{i}]---{text}") + sys.stdout.flush() + + +class KS: + def __init__(self, cookie): + cookie_list = cookie.split("#") + self.cookie = cookie_list[0] + self.ua = cookie_list[1] + + def run(self): + roundId, index, question, options = self.get_question() + while roundId: + time.sleep(0.5) + answer_index = self.search(question, options) + time.sleep(random.randint(3, 5)) + roundId, index, question, options = self.reply(roundId, index, question, options, answer_index) + if index == 9: + break + + def get_question(self): + url = "https://encourage.kuaishou.com/rest/n/encourage/game/quiz/round/kickoff?reKickoff=false&sigCatVer=1" + header = { + "Host": "encourage.kuaishou.com", + "User-Agent": self.ua, + "X-Requested-With": "com.kuaishou.nebula", + "Sec-Fetch-Site": "same-origin", + "Sec-Fetch-Dest": "empty", + "Cookie": self.cookie, + "content-type": "application/x-www-form-urlencoded;charset=UTF-8" + } + try: + response = requests.get(url=url, headers=header) + if response.json().get("result") == 1 and response.json().get("data").get("roundId"): + roundId = response.json().get("data").get("roundId") + questionDetail = response.json().get("data").get("questionDetail") + index = questionDetail.get("index") + question = questionDetail.get("question") + options = questionDetail.get("options") + current_amount = response.json().get("data").get("amount").get("current") + printf(f"当前金币{current_amount}") + sys.stdout.flush() + printf(f"开始答题:{question}") + sys.stdout.flush() + printf(f"选项:{options}") + sys.stdout.flush() + return roundId, index, question, options + + elif response.json().get("result") == 103703: + printf("今日题目已答完") + sys.stdout.flush() + return None, None, None, None + except: + print("未知错误") + sys.stdout.flush() + return None, None, None, None + + def search(self, question, options): + try: + printf("开始数据库查找答案") + sys.stdout.flush() + url1 = f"http://{IP1}/search?question={question}" + url2 = f"http://{IP2}/search?question={question}" + response1 = requests.get(url=url1) + if response1.json().get("status") == "200": + printf("找到答案了") + sys.stdout.flush() + answer = response1.json().get("content") + answer_index = options.index(answer) + return answer_index + else: + response2 = requests.get(url=url2) + if response2.json().get("status") == "200": + printf("找到答案啦") + sys.stdout.flush() + answer = response2.json().get("content") + answer_index = options.index(answer) + self.upload(IP1, question, answer) + return answer_index + else: + printf("没有找到答案,随便选一个吧") + sys.stdout.flush() + return 4 + except: + return 4 + + def reply(self, roundId, index, question, options, answer_index): + url = "https://encourage.kuaishou.com/rest/n/encourage/game/quiz/round/answer/upload?sigCatVer=1" + header = { + "Host": "encourage.kuaishou.com", + "User-Agent": self.ua, + "Accept": "*/*", + "Origin": "https://encourage.kuaishou.com", + "X-Requested-With": "com.kuaishou.nebula", + "Sec-Fetch-Site": "same-origin", + "Sec-Fetch-Mode": "cors", + "Sec-Fetch-Dest": "empty", + "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + "Cookie": self.cookie, + "content-type": "application/json" + } + payload = { + "roundId": roundId, + "index": index, + "answer": answer_index + } + if answer_index == 4: + payload = { + "roundId": roundId, + "index": index, + "answer": random.randint(0, 3) + } + payload = json.dumps(payload) + response = requests.post(url=url, headers=header, data=payload) + if answer_index == 4: + question = question + correctAnswerIndex = response.json().get("data").get("answerDetail").get("correctAnswerIndex") + correct_answer = options[correctAnswerIndex] + self.upload(IP1, question, correct_answer) + time.sleep(0.5) + if response.json().get("data").get("answerDetail").get("correct") and response.json().get("result") == 1: + amount = response.json().get("data").get("amount").get("reward") + current_amount = response.json().get("data").get("amount").get("current") + printf(f"第[{int(index) + 1}]题回答正确,获得金币{amount}") + sys.stdout.flush() + printf(f"当前金币{current_amount}") + sys.stdout.flush() + questionDetail = response.json().get("data").get("nextQuestionDetail").get("questionDetail") + index = questionDetail.get("index") + roundId = response.json().get("data").get("nextQuestionDetail").get("roundId") + question = questionDetail.get("question") + options = questionDetail.get("options") + printf(f"开始答题:{question}") + sys.stdout.flush() + printf(f"选项:{options}") + sys.stdout.flush() + return roundId, index, question, options + else: + printf(f"第[{int(index) + 1}]题回答错误") + sys.stdout.flush() + return None, None, None, None + + def upload(self, ip, question, answer): + try: + printf("开始上传题目和答案") + sys.stdout.flush() + url = f"http://{ip}/upload" + payload = { + "question": question, + "answer": answer + } + response = requests.post(url=url, data=payload) + if response.json().get("status") == 200: + printf("上传成功") + sys.stdout.flush() + except: + pass + + +if __name__ == "__main__": + cookies = ger_env("ksdt") + i = 0 + for cookie in cookies: + i += 1 + KS(cookie).run() \ No newline at end of file