{"id":13468196,"url":"https://github.com/DreamSaddle/MacCopier","last_synced_at":"2025-03-26T05:30:56.835Z","repository":{"id":41562250,"uuid":"509698325","full_name":"DreamSaddle/MacCopier","owner":"DreamSaddle","description":"MacCopier 是一个提供在 Macos 中收到短信验证码后自动复制到剪贴板功能的软件。","archived":false,"fork":false,"pushed_at":"2025-02-07T06:40:06.000Z","size":406,"stargazers_count":139,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-07T07:28:07.627Z","etag":null,"topics":["macos","sms"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DreamSaddle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-02T08:16:28.000Z","updated_at":"2025-02-07T06:39:05.000Z","dependencies_parsed_at":"2025-02-08T16:01:29.144Z","dependency_job_id":null,"html_url":"https://github.com/DreamSaddle/MacCopier","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreamSaddle%2FMacCopier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreamSaddle%2FMacCopier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreamSaddle%2FMacCopier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreamSaddle%2FMacCopier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DreamSaddle","download_url":"https://codeload.github.com/DreamSaddle/MacCopier/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245597195,"owners_count":20641859,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["macos","sms"],"created_at":"2024-07-31T15:01:06.910Z","updated_at":"2025-03-26T05:30:56.818Z","avatar_url":"https://github.com/DreamSaddle.png","language":"Swift","readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/DreamSaddle/MacCopier/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/DreamSaddle/MacCopier?style=badge\u0026color=58C9B9\" alt=\"RELEASE\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/DreamSaddle/MacCopier/commits/main\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/last-commit/DreamSaddle/MacCopier?style=badge\u0026color=30A9DE\" alt=\"LAST COMMIT\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/DreamSaddle/MacCopier/issues\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/DreamSaddle/MacCopier?style=badge\u0026color=E71D36\" alt=\"ISSUES\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/DreamSaddle/MacCopier/blob/master/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/DreamSaddle/MacCopier?style=badge\u0026color=EFDC05\" alt=\"LICENSE\"/\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n# MacCopier\n\nMacCopier(Message Authentication Code Copier) 是一个提供在 Macos 中收到短信验证码后自动复制到剪贴板功能的软件。\n\n\u003e **Warning**\n\u003e\n\u003e 请务必从[这里下载](https://github.com/DreamSaddle/MacCopier/releases)，此应用目前没有提供其它下载链接，以防止造成您的数据泄露。\n\n## 功能列表\n\n- [x] 收到验证码短信后自动提取验证码到到剪贴板\n- [x] 自动粘贴到当前光标处\n- [x] 自定义验证码提取 Python 脚本\n\n## 隐私信息收集\n\n此应用为开源项目。应用通过不断扫描 `~/Library/Messages/chat.db` 数据库文件获取最新的短信验证码，**期间不会上传系统中任何数据**。\n\n## 安装\n\n1. [点击下载](https://github.com/DreamSaddle/MacCopier/releases)\n2. 解压后，将 MacCopier.app 拖动到 应用程序 目录即可\n\n![image.png](./Screenshots/4.png)\n\n## 使用\n\n### 让您的 Mac 能接收短信息\n\n参照[教程](https://support.apple.com/zh-cn/guide/messages/icht8a28bb9a/mac)将 iPhone 开启**短信转发**功能。\n\n### 设置应用权限\n\n安装好软件后，需要为其设置 **完全磁盘访问权限**。步骤如下：\n\n1. 打开 系统偏好设置 \u003e 安全性与隐私\n   ![image.png](./Screenshots/1.png)\n\n2. 左下角解锁设置后，找到 完全磁盘访问权限 选项，在右侧列表中找到 MacCopier 将其勾选上即可。\n   ![image.png](./Screenshots/2.png)\n\n3. 您也可以在高级设置中勾选 `登录时启动`，这将会在下次登录系统时自动运行此应用。\n\n4. 您也可以勾选 `自动粘贴`，这将会在提取出验证码后自动粘贴到系统当前光标处。`自动粘贴`功能需要您为 `MacCopier`开启`辅助功能`权限。\n\n## 自定义验证码提取 Python 脚本\n\n应用默认采用正则表达式进行匹配，但是正则表达式在提取某些特殊的验证码时存在不符合预期的情况。\n\n所以，现增加自定义 Python 脚本提取验证码的功能。有了此功能，用户可以自定义提取逻辑，比如将短信发送给本地大模型进行处理，这样将会大幅提高提取的准确度。\n\n### 使用方式\n\n你可以在高级设置中进行脚本设置。\n![image.png](./Screenshots/6.png)\n\n#### 说明\n\n应用接收到新的短信后，如果用户自定义了 Python 脚本，将会将短信内容作为参数执行脚本。Python 脚本执行使用的 Python 可执行文件路径为`/usr/bin/python3`\n\n```text\n执行脚本输入：完整的短信内容\n\n执行脚本输出：\n\n1. 如果短信是验证码短信，且脚本执行正常，则返回验证码。\n2. 如果短信不是验证码短信，则返回 `NOT_VALID`。\n3. 如果 Python 脚本执行错误，则返回 `ERROR`，MacCopier 将继续采用正则表达式提取。\n```\n\n#### 示例\n\n下面是我使用的脚本，我在本地安装了 [ollama](https://ollama.com/)，并且使用了 [qwen2.5:3b](https://ollama.com/library/qwen2.5:3b) 模型，自定义 Python 脚本将短信送给本地大模型处理。\n\n```python\nimport http.client as http_client\nimport json\nimport sys\n\n\ndef extract_code(msg):\n    # 定义 prompt\n    prompt = \"\"\"\n                您是一位智能信息提取助手。您的任务是从给定的短信中提取验证码。\n                您应该以 JSON 格式回复,格式如下:\n                {\"code\": \"验证码内容\"}\n\n                注意事项:\n                1. 返回格式中的\\\"验证码内容\\\"就是具体的验证码内容，可能是由数字+字母等其他字符组成。\n                2. 如果我给你的不是包含验证码的短信，请你直接以json格式返回 {\"code\":\"NOT_VALID\"}\n                3. 直接返回json格式，不要以markdown格式返回内容\n\n                下面是我收到的短信内容：\n                \"\"\" + msg\n\n    # 调用 ollama 本地大模型处理\n    conn = http_client.HTTPConnection('127.0.0.1:11434', timeout=5)\n    try:\n        conn.request('POST', '/api/generate', body=json.dumps({\n            'prompt': prompt,\n            'model': 'qwen2.5:3b',\n            'stream': False\n        }), headers={\n            \"Content-Type\": \"application/json\",\n            \"Accept\": \"application/json\"\n        })\n        rep = conn.getresponse()\n        rep_data = rep.read().decode('utf-8')\n        rep_str = json.loads(rep_data)['response']\n        code_rep = json.loads(rep_str)\n        return code_rep['code']\n    except Exception as e:\n        return 'ERROR'\n    finally:\n        conn.close()\n\n\nif __name__ == \"__main__\":\n    # 接收第一个参数为短信内容\n    msg = sys.argv[1]\n    # 打印输出结果\n    print(extract_code(msg))\n```\n\n## 项目依赖\n\n- [LaunchAtLogin](https://github.com/sindresorhus/LaunchAtLogin) 提供登录时启动功能\n- [Sauce](https://github.com/Clipy/Sauce) 提供自动粘贴功能\n\n## 其它\n\n- 扫描短信数据库文件 SQL 来自 [py2fa](https://github.com/TeavenX/py2fa/blob/7cf6514e9d0344b0b2789e2a2eb73bdf5bb1df8b/message2fa.py#L42)。\n","funding_links":[],"categories":["Swift"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDreamSaddle%2FMacCopier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDreamSaddle%2FMacCopier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDreamSaddle%2FMacCopier/lists"}