Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OBS-Fishing —— Minecraft 超级隐蔽自动钓鱼工具

通过 OBS 虚拟摄像头 捕获游戏画面,Tesseract OCR 识别屏幕字幕判断鱼讯, 再用 WindMouse 类人鼠标轨迹 模拟真人收杆。全程不接触游戏进程、不注入任何代码, 专为"看起来像真人"而设计。支持中/英文字幕、Tkinter 图形界面、一键打包 exe。

English version is at the bottom. / 英文说明见文末。

⚠️ 免责声明:本项目仅供学习 OpenCV / OCR / 自动化技术使用。 在任何服务器使用自动化工具都可能违反其服务条款,由此产生的封禁等后果请自行承担。


✨ 特性

特性 说明
OBS 虚拟摄像头捕获 通过 OpenCV 读取 OBS 虚拟摄像头画面,完全外部读取,不截图、不 Hook
Tesseract OCR 字幕识别 灰度 + 放大 + Otsu 二值化预处理,支持 eng / chi_sim / chi_sim+eng
中英文关键词触发 英文 splash(Fishing Bobber splashes),中文 水花/浮标(钓鱼浮标:溅起水花),可自定义
WindMouse 曲线移动 风力扰动 + 重力牵引的非线性轨迹,加速→减速,带随机步频
随机延迟收杆 鱼讯后随机等待 200~500ms(可配置)再操作
概率性失误 默认 3% 概率"走神"不操作
偶尔反应慢 默认 10% 概率延迟 1~3 秒,之后还有小概率"忘记"收杆
空闲鼠标微动 极低概率在 ±3px 内不规则抖动,模拟握鼠标的自然手抖
随机点击位置 每次在屏幕中心 ±50px 内随机取点,避免固定坐标
冷却机制 默认 2 秒冷却防止重复触发
自动抛竿 收杆后可选自动再点一次右键重新抛竿(随机间隔)
Arduino 硬件点击(可选) Leonardo/Pro Micro 作为真 USB 鼠标发出点击,软件反作弊无从检测
Tkinter GUI 参数可视化配置、实时预览、拖拽框选识别区域、运行统计与日志
GitHub Actions 打包 仓库页面手动一键构建 Windows auto_fish.exe

📁 项目结构

OBS-Fishing/
├── main.py                    # 程序入口
├── fishbot/
│   ├── config.py              # 配置定义与 JSON 持久化
│   ├── vision.py              # 摄像头捕获 + OCR 识别
│   ├── humanizer.py           # WindMouse 算法 + Win32 点击 + Arduino 串口
│   ├── engine.py              # 钓鱼主循环(反应/失误/冷却/微动逻辑)
│   └── gui.py                 # Tkinter 图形界面
├── arduino/AutoFishMouse.ino  # 可选:硬件鼠标固件
├── requirements.txt           # Python 依赖
└── .github/workflows/build.yml# 自动打包工作流

🚀 快速开始(用户使用流程)

1. 安装 OBS Studio 并启动虚拟摄像头

  • 下载安装 OBS Studio
  • 添加"游戏捕获"或"显示器捕获"来源,确保 Minecraft 画面出现在 OBS 预览中;
  • 点击 OBS 右侧控制面板的 【启动虚拟摄像机】

2. 在 Minecraft 中开启字幕

  • 游戏内 选项 → 音乐和声音 → 显示字幕:开
  • 建议把字幕位置/大小调到清晰可见,字幕将出现在画面下方。

3. 安装 Tesseract OCR

  • 下载 Windows 安装包:https://github.com/UB-Mannheim/tesseract/wiki
  • 安装时务必勾选 Chinese (Simplified)(chi_sim)语言包(仅用英文可跳过);
  • 记住安装路径(默认 C:\Program Files\Tesseract-OCR),稍后在程序里填写 tesseract.exe 完整路径,或将该目录加入系统 PATH。

4. 运行程序

  • 直接运行打包好的 auto_fish.exe(见下方下载/打包说明); 或本地运行源码:
pip install -r requirements.txt
python main.py

5. 在界面中配置

  1. 摄像头索引:默认 1(0 通常是物理摄像头)。点击【打开摄像头】确认预览里能看到游戏画面;
  2. OCR 语言:英文客户端选 eng,中文客户端选 chi_sim
  3. 识别区域:在预览画面上直接按住左键拖拽框选字幕区域(绿色框为当前区域),也可手动输入像素坐标;全填 0 则使用自动区域;
  4. 关键词:默认英文 splash、中文 水花,浮标,一般无需修改;
  5. 点击【开始钓鱼】即可挂机。日志区会显示每次鱼讯与操作详情。

6. OBS 画面调整技巧

  • 让字幕区域在画面中尽量大、对比清晰;
  • 若识别率低:放大字幕(OBS 缩放/游戏内字幕设置)、把区域框得更贴合文字、降低识别间隔。

🛠 隐蔽性设计说明

所有行为参数都在 GUI / config.json 中可调:

参数 默认值 作用
反应延迟 200~500ms 鱼讯到收杆的随机等待
走神概率 3% 检测到鱼讯却故意不操作
慢反应概率 10% 延迟 1~3 秒再收杆
慢后遗忘概率 25% 慢反应后仍不操作
空闲微动概率 ~1%/秒 ±3px 无规律抖动
冷却时间 2.0s 两次动作的最小间隔
点击偏移 ±50px 屏幕中心附近的随机点击位置

鼠标移动使用 WindMouse 算法(fishbot/humanizer.py):重力牵引保证到达目标, 随机风力使轨迹弯曲不规则,速度上限 + 随机步频呈现"加速—减速"节奏; 点击按住时长也在 40~120ms 内随机。

硬件级增强(可选)

Arduino Leonardo / Pro Micro 刷入 arduino/AutoFishMouse.ino 后, 它就是操作系统眼中的一只真 USB 鼠标。在程序中勾选【Arduino 硬件鼠标】 并填写串口号(如 COM3),所有右键点击将由硬件发出—— 软件反作弊在原理上无法与真人区分。

📦 GitHub Actions 一键打包(手动触发)

在仓库页面:Actions → Build Windows EXE → Run workflow → 绿色按钮, 点一下即可开始打包,无需推送 tag。

构建完成后,在该次运行页面的 Artifacts 中下载 auto_fish-windows (内含 auto_fish.exe,无需安装 Python 即可运行)。

打包命令(本地手动打包同理):

pip install pyinstaller -r requirements.txt
pyinstaller --onefile --noconsole --name auto_fish main.py

❓ 常见问题

  • 提示"无法打开摄像头":确认 OBS 已【启动虚拟摄像机】;尝试索引 0/2; 关闭其他占用摄像头的程序(如视频通话软件)。
  • 提示"未找到 Tesseract":安装 Tesseract 并在设置中填写 tesseract.exe 完整路径。
  • 识别不到字幕:检查语言与客户端语言是否一致、区域是否框住字幕、 关键词是否匹配;日志区"最近识别"会显示 OCR 实际读到的文本,便于排查。
  • 中文识别报错:Tesseract 安装时未勾选 chi_sim 语言包,重新安装并勾选。
  • 识别太慢:调大 OCR 间隔 降低 CPU 占用,或调小提高灵敏度(默认 250ms)。

English Summary

An ultra-stealthy AFK fishing tool for Minecraft Java Edition. It reads the game screen through an OBS Virtual Camera (fully external, no screenshots or hooks), detects the fishing bite via Tesseract OCR on the subtitles ("Fishing Bobber splashes" / "钓鱼浮标:溅起水花"), and reels in with a WindMouse human-like cursor path plus randomized reaction delays, occasional "misses" and idle micro-jitters.

  • GUI (Tkinter) with live preview and drag-to-select OCR region
  • Languages: eng, chi_sim, chi_sim+eng
  • Optional Arduino Leonardo hardware USB-mouse clicks (undetectable in principle)
  • One-file Windows exe built by GitHub Actions (manual one-click trigger)

Setup: OBS → Start Virtual Camera; Minecraft → Show Subtitles ON; install Tesseract (with chi_sim if needed) → run auto_fish.exe, pick camera index (usually 1), drag the subtitle region, press Start.

For educational purposes only. Using automation on servers may violate their rules — use at your own risk.

📜 License

LICENSE

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages