在线地址:http://kousuan.20130314.com/ 注册个账号就可以玩了,自动兼容PC和移动端。谁家娃口算不好的,可以给他用下。应用源码可到这里下载:有截图预览。https://www.cmspro.cn/apps/cmspro.rabbitmath
想当年我口算不好都是皮带伺候,慢慢就好了
昨晚花了几小时,今天又优化调整了一上午。
现在有AI以后,发现好多程序想想就能搞出来
wwwroot 想当年我口算不好都是皮带伺候,慢慢就好了
打也打了,骂也骂了。两个个位数相加减都能做到耗费几分钟计算,不知道是云游了还是怎么了。
让它当游戏玩得了。
有个 brain.training,脑力训练,开发中,现在只有算术
咋说呢,既然你都用上AI了,其实也可以把你家孩子情况告诉AI帮你分析分析
朹方 咋说呢,既然你都用上AI了,其实也可以把你家孩子情况告诉AI帮你分析分析
AI不是万能的,分析来分析去还不是 模板照搬。
用了这个遥遥领先
自动刷题
import requests import time import random import threading from typing import List, Dict from concurrent.futures import ThreadPoolExecutor, as_completed class RabbitMathGame: def __init__(self, csrf_token: str, cookie: str): self.base_url = "http://kousuan.20130314.com" self.session = requests.Session() self.session.headers.update({ "User-Agent": "Mozilla/5.0 (Linux; Android 10; V1938CT Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36", "Accept": "*/*", "X-Requested-With": "XMLHttpRequest", "Origin": self.base_url, "Referer": f"{self.base_url}/game", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", "X-CSRF-TOKEN": csrf_token, "Cookie": cookie }) # 统计信息 self.success_count = 0 self.fail_count = 0 self.total_requests = 0 self.lock = threading.Lock() def start_game(self) -> Dict: """开始游戏,获取题目""" url = f"{self.base_url}/api/rabbitmath/game/start" response = self.session.post(url, timeout=5) return response.json() def submit_answers(self, record_id: int, answers: List[int], duration: int) -> Dict: """提交答案""" url = f"{self.base_url}/api/rabbitmath/game/submit" data = { "record_id": record_id, "duration": duration } for i, ans in enumerate(answers): data[f"answers[{i}]"] = ans response = self.session.post(url, data=data, timeout=5) return response.json() def auto_play(self, round_num: int) -> bool: """自动完成一轮游戏""" try: # 开始游戏 start_resp = self.start_game() if start_resp.get("code") != 0: with self.lock: self.fail_count += 1 self.total_requests += 1 return False data = start_resp.get("data", {}) questions = data.get("questions", []) record_id = data.get("record_id") # 提取答案 answers = [q.get("answer") for q in questions] # 快速答题(几乎不耗时) duration = 1 # 最少1秒 # 提交答案 submit_resp = self.submit_answers(record_id, answers, duration) with self.lock: self.total_requests += 1 if submit_resp.get("code") == 0 and submit_resp.get("data", {}).get("is_passed", False): self.success_count += 1 return True else: self.fail_count += 1 return False except Exception as e: with self.lock: self.fail_count += 1 self.total_requests += 1 return False def worker(game: RabbitMathGame, round_num: int): """工作线程""" return game.auto_play(round_num) def main(): # 替换为你的token和cookie CSRF_TOKEN = "Q0guXGXovwMiAD3JxhzrW5QcpjtwtdalkL9P34qL" COOKIE = "XSRF-TOKEN=eyJpdiI6ImxCUnBTaVBYZ0dnREpPc0QzeHdIc2c9PSIsInZhbHVlIjoicnFVYVVQRVhrMncwQitnZ3R6ckVaSVczQkhiaVNmZFdXc2NXMEdONEJaQVlJdUtXRTFsNjA3SGRUWlBGU2MzdTJ0TmpPK1hZQlpEdW1HcHB3cnVNdG9LM3duNWxPNlR1ZVlxUWpRZ0hvOStRSkMzcUNOWjdCb3I5RzFTRjgxSm8iLCJtYWMiOiI1YTRjZWYzNTA5ZmUwZGJhNTZhMzUzM2U2MzZjZmI1YmM3N2MzYjFmMWZkODI0NGI3ZjQ5YzM5NDUzYWE4M2MzIiwidGFnIjoiIn0%3D; cmspro_session_20130314_com=eyJpdiI6InVHdnNYU0QwYXNBZUNyb3RQQnFBOXc9PSIsInZhbHVlIjoiaG9kVXRxL28zQzM0cnN2dUpqQmV5aUpMVnRWT0dlam8wWHBVVnFlM2x2TENjRHk4OERRSGo2SGhTb0JmSkdhVnBkbEI3MGszVTRGdkd5VGZCZ3NTU01ubjgxbzdQUFNrSkI0R1RaT2ROemVPcEJybWk4WHEyTmF5eFV6bjIxdkkiLCJtYWMiOiI1MmU0YjE0YjZjNmI3NzNkY2Q0OTg0OTIwZmVjYTU5NWFkMmU0ZTIwZGU1YWEzZGVmMzI0ZWZhMWI1ZmNlNGUzIiwidGFnIjoiIn0%3D" game = RabbitMathGame(CSRF_TOKEN, COOKIE) # 目标:100次请求,每秒10次 total_requests = 100 requests_per_second = 10 max_workers = 10 # 并发线程数 print("🐰 开始高频刷题...") print(f"目标: {total_requests} 次请求") print(f"速率: {requests_per_second} 次/秒") print(f"并发线程: {max_workers}") print(f"开始时间: {time.strftime('%Y-%m-%d %H:%M:%S')}") print("="*50) start_time = time.time() # 使用线程池并发执行 with ThreadPoolExecutor(max_workers=max_workers) as executor: futures = [] # 提交所有任务 for i in range(1, total_requests + 1): future = executor.submit(worker, game, i) futures.append(future) # 控制每秒提交数量(每秒10个) if i % requests_per_second == 0: time.sleep(1) # 每10个任务等待1秒 # 等待所有任务完成 completed = 0 for future in as_completed(futures): completed += 1 if completed % 10 == 0: print(f"进度: {completed}/{total_requests}") # 统计结果 elapsed_time = time.time() - start_time print("\n" + "="*50) print("📊 最终统计") print("="*50) print(f"总请求: {game.total_requests}") print(f"成功: {game.success_count} 次 ({game.success_count/game.total_requests*100:.1f}%)") print(f"失败: {game.fail_count} 次 ({game.fail_count/game.total_requests*100:.1f}%)") print(f"总耗时: {elapsed_time:.2f} 秒") print(f"实际速率: {game.total_requests/elapsed_time:.2f} 次/秒") print(f"结束时间: {time.strftime('%Y-%m-%d %H:%M:%S')}") if __name__ == "__main__": main()
自动喂食
import requests import time import random import signal import sys from typing import Dict class RabbitFeed: def __init__(self, csrf_token: str, cookie: str): self.base_url = "http://kousuan.20130314.com" self.session = requests.Session() self.session.headers.update({ "User-Agent": "Mozilla/5.0 (Linux; Android 10; V1938CT Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36", "Accept": "*/*", "X-Requested-With": "XMLHttpRequest", "Origin": self.base_url, "Referer": f"{self.base_url}/rabbit", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", "X-CSRF-TOKEN": csrf_token, "Cookie": cookie, "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" }) self.running = True self.total_feeds = 0 self.success_feeds = 0 self.fail_feeds = 0 # 注册信号处理 signal.signal(signal.SIGINT, self.signal_handler) signal.signal(signal.SIGTERM, self.signal_handler) def signal_handler(self, sig, frame): """处理Ctrl+C退出""" print("\n\n⚠️ 收到停止信号,正在退出...") self.running = False def feed_rabbit(self, food_type: str) -> Dict: """喂兔子""" url = f"{self.base_url}/api/rabbitmath/rabbit/feed" data = {"food_type": food_type} response = self.session.post(url, data=data, timeout=5) return response.json() def feed_forever(self): """无限循环喂食""" food_types = ["milk", "carrot"] food_names = {"milk": "🥛 牛奶", "carrot": "🥕 胡萝卜"} food_emojis = {"milk": "🥛", "carrot": "🥕"} print("🐰 开始无限喂食模式...") print("按 Ctrl+C 停止") print("="*50) start_time = time.time() last_status_time = time.time() while self.running: try: # 随机选择食物 food_type = random.choice(food_types) food_name = food_names[food_type] emoji = food_emojis[food_type] # 喂食 resp = self.feed_rabbit(food_type) if resp.get("code") == 0: self.success_feeds += 1 self.total_feeds += 1 data = resp.get("data", {}) food_remain = data.get("food_remain", {}) # 获取剩余数量 milk_remain = food_remain.get("milk", "?") carrot_remain = food_remain.get("carrot", "?") # 每10次显示一次详细信息 if self.total_feeds % 10 == 0: elapsed = time.time() - start_time rate = self.total_feeds / elapsed if elapsed > 0 else 0 print(f"\n📊 统计: 总喂食 {self.total_feeds} 次 | 速率 {rate:.1f} 次/秒 | 🥛:{milk_remain} 🥕:{carrot_remain}") # 每次都显示喂了什么 print(f" ✅ {emoji} 喂 {food_name} 成功 | 🥛:{milk_remain} 🥕:{carrot_remain}") # 如果某食物为0,换另一种 if milk_remain == 0 and food_type == "milk": print(f" ⚠️ 🥛 牛奶已用完,切换到 🥕 胡萝卜") food_type = "carrot" elif carrot_remain == 0 and food_type == "carrot": print(f" ⚠️ 🥕 胡萝卜已用完,切换到 🥛 牛奶") food_type = "milk" # 如果两种都为0,等待刷新 if milk_remain == 0 and carrot_remain == 0: print(" ⏳ 所有食物已用完,等待30秒刷新...") time.sleep(30) continue else: self.fail_feeds += 1 self.total_feeds += 1 error_msg = resp.get("message", "未知错误") print(f" ❌ 喂食失败: {error_msg}") # 如果是食物不足,等待一段时间 if "不足" in error_msg or "没有" in error_msg: print(f" ⏳ 等待10秒后继续...") time.sleep(10) continue # 每次间隔0.3-0.8秒 time.sleep(random.uniform(0.3, 0.8)) except requests.exceptions.RequestException as e: print(f" ❌ 网络错误: {str(e)}") print(f" ⏳ 等待5秒后重试...") time.sleep(5) continue except Exception as e: print(f" ❌ 异常: {str(e)}") print(f" ⏳ 等待3秒后继续...") time.sleep(3) continue # 退出统计 elapsed = time.time() - start_time print("\n" + "="*50) print("📊 喂食统计") print("="*50) print(f"总喂食次数: {self.total_feeds}") print(f"成功: {self.success_feeds} 次") print(f"失败: {self.fail_feeds} 次") print(f"成功率: {self.success_feeds/self.total_feeds*100:.1f}%" if self.total_feeds > 0 else "成功率: 0%") print(f"总运行时间: {elapsed:.1f} 秒") print(f"平均速率: {self.total_feeds/elapsed:.2f} 次/秒" if elapsed > 0 else "平均速率: 0") print("="*50) def main(): # 从最新的请求中提取的token和cookie CSRF_TOKEN = "Q0guXGXovwMiAD3JxhzrW5QcpjtwtdalkL9P34qL" COOKIE = "XSRF-TOKEN=eyJpdiI6ImEybmt5Y096R2hqOUladnlOWXNUNHc9PSIsInZhbHVlIjoiSDBPQTZOdENxNU9SdlEzUjN3SXRFcE92Z3lwUjBDbXNmMnJsWE9KRnJqelZOY2NlN2JyUGRkZzBBVHRSVmdrb0dPaEEzTFBhZUExbDRxS2tjS2RLaUVXTUdkTUNzOGhtM3Z5amM5SmlvcnpqY0xraEpoejRQSUxZb09lcFI3QnoiLCJtYWMiOiI5MDYxMjc5MWUyZTJlMjEyY2JhNDBkOGJhOWNhMzcyNGIzZmQ4NWU4MDQxMjUzYzNmYzZjMGE4M2MxM2NjYWM5IiwidGFnIjoiIn0%3D; cmspro_session_20130314_com=eyJpdiI6ImNOL09SUGorSi9DUWFuK1VRTTFjZ2c9PSIsInZhbHVlIjoiRjVwdDFMejlkSmtlRXVIckswVG81c0tQT1FuSkVMK2ppancwVXFjeGYybU9NbVptMDJMbDRSSDNRU2w0bEUzN2FMM0EzMXE2R28zQTk1ZDBCOXpnSVE5Z3hhUU1nMk5jblZaZkNGeENhd0pCb2xHTW1NUFh0blZFNjg3Nit4dzUiLCJtYWMiOiI0Yzc4ZmY2ZDJlZTc3NzAwODBiYjE1YTk4ZTFlNTkwYzY5NzJkMjU1N2Y2ZWY1NGFmNGM3ZTk5NzY0MzFhMzhhIiwidGFnIjoiIn0%3D" # 创建喂食实例 feeder = RabbitFeed(CSRF_TOKEN, COOKIE) # 开始无限喂食 feeder.feed_forever() if __name__ == "__main__": main()
Eno 用了这个遥遥领先 自动刷题 import requests import time import random import threading from typing import List, Di ...
666、有无浏览器f12控制台执行脚本
cmspro 打也打了,骂也骂了。两个个位数相加减都能做到耗费几分钟计算,不知道是云游了还是怎么了。 让它当游戏玩得了。
好吧
只好如此了,我家孩子还没到这个年纪
这…… 有必要么。
我再增加个频率限制和每日答题限制就可以完全规避了。
其实没必要,谁家娃口算都不利索的会用程序。
感觉这个做成APP很好玩啊
sievr 感觉这个做成APP很好玩啊
可以套个壳就可以当成APP了。其实就是做个自己用的,没必要搞成APP,浏览器打开就行,随时随地。
有需要的可以自己下载自己魔改。
不错