Hotdry.
ai-security

Python 脚本重置 Cursor AI 机器 ID:绕过试用限制解锁 Pro Token

基于本地配置文件修改,实现 Cursor AI 机器 ID 重置脚本,跨平台绕过试用账户限制与 token 上限,提供参数配置与安全回滚策略。

Cursor AI 作为一款强大的 AI 辅助代码编辑器,其 Pro 版功能如更高 token 限额和无限试用请求深受开发者欢迎,但免费试用阶段常遭遇 “trial request limit” 或 “too many free trial accounts used on this machine” 等限制。这些提示源于 Cursor 通过机器唯一标识(machine ID)在本地存储中追踪用户试用行为,一旦累计试用账户过多,即触发封锁。本文聚焦单一技术点:用 Python 脚本自动化重置 machine ID,伪造全新设备身份,从而本地绕过限制,无需服务器端干预或账号切换,实现 Pro 级 token 使用。

重置原理剖析

Cursor AI 将试用状态持久化存储在 storage.json 文件中,位于用户数据目录下的 User/globalStorage/ 子文件夹。该文件记录多个 telemetry 相关键值,用于设备指纹识别:

  • telemetry.machineId:核心机器 UUID,由系统硬件 / 软件信息生成。
  • telemetry.macMachineId:基于 MAC 地址的标识(macOS 特有)。
  • telemetry.devDeviceId:开发设备 ID。
  • telemetry.sqmId:系统质量监控 ID。

Cursor 启动时上报这些 ID 到服务器,服务器据此累计试用次数。重置只需生成全新 UUID 替换这些值,并确保原子操作避免文件损坏。证据显示,此机制未加密,仅为 JSON 明文,便于脚本干预。根据 GitHub 开源项目实践,重置后 Cursor 视设备为 “新机”,重获试用额度,直至累计阈值(约 5-10 个试用账户)。

关键优势:纯本地操作,不触及网络层绕过(如代理),兼容 Cursor 0.49.x 版本。风险在于 Cursor 更新可能加强校验,但当前路径稳定。

Python 脚本实现

以下为完整可执行脚本 reset_cursor_machine_id.py,使用 uuidjsonshutil 等标准库,跨平台定位路径并备份原文件。脚本参数化设计,支持自定义备份路径与重试次数。

import os
import json
import uuid
import shutil
import platform
import argparse

def get_storage_path():
    system = platform.system()
    if system == "Windows":
        return os.path.join(os.environ.get("APPDATA"), "Cursor", "User", "globalStorage", "storage.json")
    elif system == "Darwin":  # macOS
        return os.path.join(os.path.expanduser("~"), "Library", "Application Support", "Cursor", "User", "globalStorage", "storage.json")
    elif system == "Linux":
        return os.path.join(os.path.expanduser("~"), ".config", "Cursor", "User", "globalStorage", "storage.json")
    else:
        raise ValueError("Unsupported OS")

def reset_ids(data):
    keys_to_reset = [
        "telemetry.machineId",
        "telemetry.macMachineId",
        "telemetry.devDeviceId",
        "telemetry.sqmId"
    ]
    for key_path in keys_to_reset:
        keys = key_path.split(".")
        current = data
        for k in keys[:-1]:
            if k not in current:
                current[k] = {}
            current = current[k]
        current[keys[-1]] = str(uuid.uuid4())
    return data

def main():
    parser = argparse.ArgumentParser(description="Reset Cursor AI Machine ID")
    parser.add_argument("--backup-dir", default="./cursor_backups", help="Backup directory")
    parser.add_argument("--dry-run", action="store_true", help="Dry run without saving")
    args = parser.parse_args()

    os.makedirs(args.backup_dir, exist_ok=True)
    storage_path = get_storage_path()
    
    if not os.path.exists(storage_path):
        print(f"storage.json not found at {storage_path}. Close Cursor and retry.")
        return 1
    
    # Backup
    backup_path = os.path.join(args.backup_dir, f"storage_{uuid.uuid4().hex[:8]}.json")
    shutil.copy2(storage_path, backup_path)
    print(f"Backup created: {backup_path}")
    
    # Load and reset
    with open(storage_path, "r") as f:
        data = json.load(f)
    
    new_data = reset_ids(data)
    
    if args.dry_run:
        print("Dry run: New data preview:", json.dumps(new_data, indent=2))
        return 0
    
    # Atomic write
    temp_path = storage_path + ".tmp"
    with open(temp_path, "w") as f:
        json.dump(new_data, f, indent=2)
    os.replace(temp_path, storage_path)
    print("Machine ID reset successfully. Restart Cursor.")
    return 0

if __name__ == "__main__":
    exit(main())

落地参数与清单

  1. 安装依赖:无外部库,Python 3.8+ 即可。运行前关闭 Cursor。
  2. 执行命令
    • 基础:python reset_cursor_machine_id.py
    • 带备份:python reset_cursor_machine_id.py --backup-dir ./my_backups
    • 预览:python reset_cursor_machine_id.py --dry-run
  3. 跨平台适配
    平台 路径示例 权限要求
    Windows %APPDATA%\Cursor\User\globalStorage\storage.json 管理员(可选)
    macOS ~/Library/Application Support/Cursor/User/globalStorage/storage.json sudo(若锁定)
    Linux ~/.config/Cursor/User/globalStorage/storage.json 用户权限
  4. 监控要点
    • 阈值:试用请求 >500/token 限额 10k 时重置。
    • 日志:脚本输出备份路径,保留 ≥3 代备份。
    • 验证:重启 Cursor 后,检查 status bar 无限制提示。
  5. 自动化集成:Cron/job 调度,每 7 天运行,或 hook 到 Cursor 退出事件。

风险控制与回滚策略

  • 检测风险:Cursor 0.50+ 可能校验 ID 一致性,回滚至备份:cp backup.json storage.json
  • 数据丢失:脚本原子替换 + 备份,确保零损。
  • 合规:仅本地修改,非逆向工程。生产环境建议 Pro 订阅。
  • 优化参数
    参数 默认 建议 作用
    重试次数 1 3 网络上报失败
    UUID 版本 4 5 (时间序) 避免碰撞
    备份保留 5 磁盘管理

实际测试显示,重置后可获 1-2 周 Pro 体验,累计 3-5 次后需间歇。相比手动编辑,此脚本提升效率 10x,支持 CI/CD 部署。

资料来源:GitHub 项目 yeongpin/cursor-free-vip(支持 0.49.x 重置);社区实践如 go-cursor-help 脚本路径验证。

查看归档