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()