├── xyks.py └── README.md /xyks.py: -------------------------------------------------------------------------------- 1 | from mitmproxy import ctx, http 2 | import json 3 | 4 | class XiaoYuanKouSuan: 5 | def request(self, flow): 6 | if (flow.request.url.find("https://xyks.yuanfudao.com/leo-game-pk/%7Bclient%7D/math/pk/match") != -1): 7 | flow.request.url = flow.request.url.replace("%7Bclient%7D", "android") 8 | print("Fix request url to", flow.request.url) 9 | 10 | def response(self, flow): 11 | if (flow.request.url.find("https://xyks.yuanfudao.com/leo-math/android/exams") != -1 or flow.request.url.find("https://xyks.yuanfudao.com/leo-game-pk/android/math/pk/match") != -1): 12 | response = json.loads(flow.response.get_text()) 13 | response["questionCnt"] = 1 14 | response["questions"] = [ 15 | { 16 | "id": 1, 17 | "content": "9+\\square=12", 18 | "answer": "1", 19 | "userAnswer": None, 20 | "answers": [ "1" ], 21 | "script": None, 22 | "wrongScript": None, 23 | "status": 0, 24 | "errorState": 0, 25 | "costTime": 0 26 | } 27 | ] 28 | flow.response.set_text(json.dumps(response)) 29 | print("Modified!"); 30 | 31 | addons = [ 32 | XiaoYuanKouSuan() 33 | ] -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 小猿口算 mitmproxy 脚本 2 | 3 | **小猿口算目前好像无法提交 0.1秒/题 及以内的提交记录,所以各位在使用脚本时将速度控制在 0.11秒/题** 4 | 5 | **只需要稍微减缓绘制 1 的速度即可** 6 | 7 | **更新:现在 0.2秒/题 以内的速度也无法提交了,最高可提交速度为 0.21秒/题** 8 | 9 | 使用 mitmproxy 修改小猿口算请求,实现 0.01秒/题 10 | 11 | 此方法手机无需使用 root 也能实现请求修改 12 | 13 | 参考 ,感谢大神的指导 14 | 15 | ## 战绩可查 16 | 17 | ![222](https://github.com/user-attachments/assets/994b4fea-8573-41b5-b1d0-2d88210610d3) 18 | 19 | ![111](https://github.com/user-attachments/assets/57d7fb07-de00-460e-8815-05a6d6bb73cc) 20 | 21 | ## 环境要求 22 | 23 | 1. 任何 Android 设备,需要安装小猿口算。 24 | 2. Windows / Linux 设备,也可以在 Android 使用 Termux 的 Linux proot 容器。MacOS 没测试过。 25 | 3. Python3。 26 | 27 | ## 如何使用 28 | 29 | 服务端操作: 30 | 31 | 1. 安装 mitmproxy,详见 。 32 | 2. 下载本仓库根目录下的 xyks.py,放在任意目录 33 | 3. Windows 端可能还需要单独安装 mitmproxy 的证书,详见 。 34 | 4. 使用 `mitmdump -s xyks.py -p 8080 --ssl-insecure` 启动 mitmproxy 服务器。 35 | 36 | 如果出现以下内容则说明 mitmproxy 以及小猿口算脚本安装成功: 37 | 38 | ```bash 39 | Loading script xyks.py 40 | Proxy server listening at http://*:8080 41 | ``` 42 | 43 | 手机端操作: 44 | 45 | 1. 在 Android 手机上安装 mitmproxy 的证书至用户凭据。mitmproxy 证书位于服务端根目录下的 `.mitmproxy/mitmproxy-ca-cert.pem`。 46 | 2. 打开手机设置 > WLAN 界面,进入网络详细设置,将代理更改为手动,并在随后的主机名中填写服务端 ip,端口中填写 `8080` 后保存网络。 47 | 3. 进入小猿搜题,如果此时服务端出现类似 `xxx.xxx.xxx.xxx:xxxxx: GET https://xyks.yuanfudao.com/` 的字样,则说明配置成功。 48 | 49 | 到目前为止,您已经完成了所有的配置工作,点击开始练习后题目数量恒定为 `1`,答案恒定为 `1`,自己想办法刷到 `0.01` 即可。 50 | 51 | 如果有任何问题,欢迎在 issues 提问。 52 | 53 | ## 已知问题 54 | 55 | 经测试,目前口算 pk 由于未知原因,访问接口会返回 `417`,导致无法进行比赛。 56 | 57 | 当 `questionCnt = 0` 时,小猿口算无法结束,出现 bug,因此最低 `questionCnt` 只能为 `1`。 58 | 59 | 如果还有其他问题,欢迎在 issues 里提出。 60 | 61 | ## 后记 62 | 63 | 抱怨两句。 64 | 65 | 其实本人昨天就已经抓到包了,本来想着不经过 app 直接访问小猿口算接口来实现 0.00s 的。 66 | 67 | 结果卡到上传结果那一步了,抓包发现上传的数据加了密,本人无法解开,于是摆了。 68 | 69 | 结果今天中午才发现直接在 response 里改试题数据就可以了。 70 | 71 | 所以小猿口算的后台是没做对发送的 response 和回收的 request 的校验的吗?气死我了,什么神仙操作。 72 | --------------------------------------------------------------------------------