第六章:机器标识管理
欢迎回到 cursor-free-vip
!
在第五章:Cursor数据库接口中,我们学习了如何通过直接操作Cursor应用的内部数据文件(特别是state.vscdb
SQLite数据库和storage.json
文件)来读写认证令牌等敏感信息。
本章将深入探讨Cursor应用识别设备安装的核心机制——机器标识管理系统。
该模块如同数字指纹修改专家,能够精准定位并重置Cursor用于设备识别的各类标识符。
作用
机器标识管理系统主要实现:
- 设备指纹重置:修改存储于多处的机器标识,使Cursor误判为全新安装
- 试用限制解除:通过变更硬件指纹绕过试用期计数机制
- 系统状态回溯:支持备份/恢复历史设备标识,实现状态回滚
场景:设备指纹重构
操作流程如下:
技术实现架构
标识生成体系
采用分层标识生成策略:
# 生成设备指纹(reset_machine_manual.py)
import uuid, hashlib
class MachineIDResetter:
def generate_new_ids(self):
dev_device_id = str(uuid.uuid4()) # 标准UUIDv4
machine_id = hashlib.sha256(os.urandom(32)).hexdigest() # 64位哈希
mac_machine_id = hashlib.sha512(os.urandom(64)).hexdigest() # 128位哈希
return {
"telemetry.devDeviceId": dev_device_id,
"telemetry.machineId": machine_id,
"telemetry.macMachineId": mac_machine_id
}
在[实现Rpc] 项目设计 | 服务端模块划分 | rpc | topic | server种
其中的MID,也是分层
随机生成的
多平台适配
根据操作系统差异处理关键路径:
; config.ini片段
[WindowsPaths]
machine_id_path = C:\ProgramData\Cursor\machineId
[MacPaths]
machine_id_path = /Library/Application Support/Cursor/machineId
注册表操作(Windows)
修改Windows系统级标识:
import winreg
def _update_windows_machine_guid(self):
key = winreg.OpenKey(
winreg.HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Cryptography",
0,
winreg.KEY_WRITE | winreg.KEY_WOW64_64KEY
)
winreg.SetValueEx(key, "MachineGuid", 0, winreg.REG_SZ, str(uuid.uuid4()))
⭕文件修补
使用正则表达式修改Cursor的JS逻辑:
def modify_main_js(self, main_path):
with open(main_path, "r") as f:
content = f.read()
# 替换getMachineId函数逻辑
content = re.sub(
r"async getMachineId\(\)\{return [^??]+\?\?([^}]+)\}",
r"async getMachineId(){return \1}",
content
)
# 写入修改后文件
with tempfile.NamedTemporaryFile(mode="w", delete=False) as tmp_file:
tmp_file.write(content)
使用指南
用户视角
执行重置流程:
- 运行
main.py
启动工具 - 主菜单选择"重置机器ID"(通常为选项1)
- 观察控制台输出的备份路径提示
- 等待"重置成功"提示后重启Cursor
开发者接口
通过MachineIDResetter
类实现深度控制:
from reset_machine_manual import MachineIDResetter
resetter = MachineIDResetter(translator)
# 自定义标识生成策略
resetter.custom_ids = {
"telemetry.devDeviceId": "预设ID_XXXX",
"storage.serviceMachineId": "企业级标识符"
}
resetter.execute_custom_reset()
安全
- 修改系统注册表需管理员权限
- 建议在虚拟机环境测试重置功能
- 避免在正版授权设备使用此功能
- 频繁修改设备ID可能触发风控机制
总结
机器标识管理系统通过以下机制实现设备伪装:
- 多源标识覆盖:同时修改
JSON
配置、SQLite
记录、系统注册表等多处存储 密码学
级生成:采用UUIDv4
和SHA-256/512
算法生成不可逆标识- 跨平台兼容:自动适配Windows/macOS/Linux系统的路径与API差异
- 版本容错设计:支持Cursor 1.75至2.0版本的
JS文件结构差异
(然后覆盖是通过ID存储文件和调用部分的解耦
,所以在ID的时候我们重新write
文件,在下次调用read
时,就自认实现了更新多源配置)
下一章我们将解析自动化注册系统如何实现账户的批量创建与认证维护。
第七章:自动化注册系统
在第六章:机器标识管理中,我们学习了如何通过修改设备指纹重置Cursor的试用限制
。
本章将解析如何通过自动化注册系统实现账户的无人值守创建。
核心使命
自动化注册系统旨在:
- 全流程自动化:从表单填写到邮箱验证的
端到端自动化
- 多场景适配:支持临时邮箱服务与人工验证码输入
双模式
- 密码学安全:采用
Faker库
生成高强度随机密码(如qQ5!kL9@mM3#
) - 反检测机制:
模拟
人类操作间隔(0.3-0.8秒随机延迟)
系统架构
技术实现
浏览器自动化前文:[测试_9] 自动化测试 | web自动化–Selenium实战
浏览器自动化核心
# new_signup.py 核心驱动
from DrissionPage import ChromiumPage
def setup_driver():
# 配置浏览器参数
co = ChromiumOptions()
co.set_argument("--incognito") # 隐身模式
co.headless(False) # 可视化运行
# 加载反检测扩展
co.add_extension("./antidetect/")
return ChromiumPage(co)
表单智能填充
def fill_signup_form(page, first_name, last_name, email):
# 定位元素并模拟输入
page.ele("@name=first_name").input(first_name)
human_delay('input')
page.ele("@name=last_name").input(last_name)
human_delay('input')
page.ele("@name=email").input(email)
human_delay('submit')
page.ele("@type=submit").click()
Turnstile验证破解
def handle_turnstile(page):
# 检测验证框架
if frame := page.get_frame('@src*=challenges.cloudflare.com'):
# 注入破解脚本
frame.run_js('''() => {
window._cf_chl_opt.cUid = 'reserved';
window._cf_chl_enter();
}''')
human_delay('verification', 3.0)
双模验证码处理
def handle_verification_code(mode='auto'):
if mode == 'auto':
# 临时邮箱API轮询
code = TempMailPlus().fetch_code()
else:
# 控制台交互获取
code = input("请输入6位验证码: ")
# 模拟键盘输入
for i, digit in enumerate(code):
page.ele(f"@data-index={i}").input(digit)
human_delay('keypress')
执行流程
自动注册时序
高级功能
分布式注册
支持通过配置文件启动多实例并行注册
:
python main.py --mode batch --workers 5 --config profiles.yml
验证码容错机制
class VerificationHandler:
def retry_policy(self, attempt):
base_delay = 2 ** attempt # 指数退避
jitter = random.uniform(0, 1)
return base_delay + jitter
流量特征伪装
def mimic_human_behavior():
# 随机鼠标移动轨迹
page.scroll.random()
page.mouse.move(
start=(100, 200),
destination=(300, 400),
steps=random.randint(5,20)
)
# 随机打字间隔
for char in text:
type_char(char)
time.sleep(random.gauss(0.1, 0.02))
安全警告
- 使用临时邮箱需遵守《反垃圾邮件法案》
- 自动化注册可能违反Cursor服务条款
- 建议通过代理池隐藏真实IP
- 验证码破解功能仅供学习研究
总结
自动化注册系统通过以下创新实现无人值守:
- 多模态验证处理:云端验证码API与
人工输入
无缝切换 - 行为指纹伪装:鼠标轨迹/输入节奏模拟真实用户
- 异步任务管理:支持
并行
注册任务调度 - 错误弹性设计:验证失败后的
指数退避重试
下一章我们将深入探讨OAuth浏览器处理器如何实现第三方认证的自动化管理。
第8章:OAuth浏览器处理器
在上一章第7章:自动化注册系统中,我们学习了该工具如何作为机器人助手完全自动化创建新Cursor账户的全过程,包括表单填写和邮件验证处理。
现在让我们看看另一种常用于登录的Cursor认证方式:使用现有的Google或GitHub账户。
这通常涉及一个名为OAuth的流程。
想象要登录一个新网站,但不需要为该网站单独创建用户名和密码,而是看到"使用Google继续"或"使用GitHub登录"选项。
当点击其中一个选项时,会被
临时重定向
到Google或GitHub的网站,确认身份(可能需要输入密码),并授权新网站(此处即Cursor)获取邮箱等基本信息。之后Google/GitHub将我们
带回原网站
完成登录。这整个流程就是OAuth!
Cursor应用对其Google和GitHub登录选项使用相同的流程。但由于cursor-free-vip
是命令行工具,它没有内置浏览器来处理这些重定向和交互。
这就是OAuth浏览器处理器的用武之地。
它是
cursor-free-vip
中专门负责使用我们真实浏览器(如Chrome或Edge)执行交互式OAuth登录流程的组件。它不像自动化注册系统那样
尝试自动化
每个步骤,而是启动浏览器导航到正确页面后,等待手动在浏览器窗口完成登录步骤。当在浏览器中通过Google/GitHub成功登录后,处理器会检测到登录成功,
捕获
返回给Cursor的必要认证信息,并用这些信息更新本地Cursor数据库
。
OAuth浏览器处理器相较于 自动化注册,就只是帮我打开到了 需要我们操作的页面
,登录还是要我们手动操作的
OAuth浏览器处理器的用途?
OAuth浏览器处理器的主要目的是通过利用现有浏览器和配置文件,使用第三方服务(Google/GitHub)登录Cursor。
其优势包括:
- 使用已有账户(如主用Google账号)
- 处理命令行工具无法独立完成的复杂
Web
认证流程 - 通过现有浏览器配置文件,
若已登录Google/GitHub可自动完成认证加速流程
它充当命令行工具和基于Web的交互式OAuth登录流程之间的桥梁。
核心用例:使用Google或GitHub登录
核心用例是通过工具启动的浏览器完成Google或GitHub登录,提取认证令牌并更新Cursor本地数据,使应用识别登录状态。
流程包括:
- 识别已安装的浏览器(通常为Chrome/Chromium)
查
找其用户数据目录和配置文件允许
选择使用的浏览器配置文件- 临时关闭现有浏览器实例避免冲突
- 使用
DrissionPage
启动受控浏览器
实例(类似第7章) - 导航至Cursor认证页面
- 点击"使用Google登录"或"使用GitHub登录"按钮
- 等待与浏览器窗口交互完成Google/GitHub登录和授权
- 检测浏览器成功重定向回Cursor网站
- 提取认证令牌(通常存储为类似
WorkosCursorSessionToken
的cookie) 提取
关联邮箱(如有)- 使用Cursor数据库接口
更新
本地数据库(state.vscdb
)
如何使用OAuth浏览器处理器
作为用户
通过主应用控制器的主菜单选项(如"使用Google登录(OAuth)“或"使用GitHub登录(OAuth)”)与处理器交互。
选择选项(如示例main.py
中的选项5
对应Google)后,工具将:
- 显示浏览器初始化信息
- 多配置文件时提示选择(如"
Default
"、"Profile 1"等) - 显示关闭现有浏览器的警告(需确认
y
) 弹出
工具控制的浏览器窗口- 窗口导航至Cursor登录页并重定向到Google/GitHub
- 此时需手动操作:在浏览器完成账户选择和授权
- 成功登录后自动
重定向回
Cursor网站(如authenticator.cursor.sh
) - 工具通过
检查cookie
或URL变更检测登录成功 自动获取
会话令牌和邮箱- 更新Cursor数据库
- 确认成功并关闭浏览器
与自动化注册的关键区别在于需手动完成Google/GitHub
登录步骤。
作为开发者(查看代码)
核心逻辑实现在oauth_auth.py
的OAuthHandler
类。
入口点是oauth_auth.main
函数(由主应用控制器调用):
# main.py中调用示例(Google对应选项5)
case "5":
from oauth_auth import main as oauth_main
oauth_main('google', translator)
print_menu()
oauth_auth.main
根据auth_type
创建OAuthHandler
实例并调用对应处理方法:
# oauth_auth.py简化main函数
def main(auth_type, translator=None):
handler = OAuthHandler(translator, auth_type=auth_type)
if auth_type.lower() == 'google':
success, auth_info = handler.handle_google_auth()
elif auth_type.lower() == 'github':
success, auth_info = handler.handle_github_auth()
if success:
auth_manager = CursorAuth(translator)
if auth_manager.update_auth(
email=auth_info["email"],
access_token=auth_info["token"],
refresh_token=auth_info["token"],
auth_type=auth_type
):
# 成功处理逻辑
该函数协调整个流程:初始化处理器、调用认证逻辑、成功后通过Cursor数据库接口保存凭证。
底层原理(浏览器交互)
oauth_auth.py
中的OAuthHandler
类使用DrissionPage
库控制浏览器实例:
关键代码片段:
- 浏览器配置初始化(
setup_browser
方法):
def setup_browser(self):
user_data_dir = self._get_user_data_directory()
browser_path = self._get_browser_path()
co = ChromiumOptions().set_paths(browser_path, user_data_dir)
self.browser = ChromiumPage(co)
- 用户配置文件选择(
_select_profile
方法):
def _select_profile(self):
profiles = self._load_profiles() # 从Local State加载配置
print("可用的配置文件:")
for i, profile in enumerate(profiles):
print(f"{i+1}. {profile['name']}")
choice = int(input("请选择:"))
self.selected_profile = profiles[choice-1]['id']
- 认证等待循环(
_wait_for_auth
方法):
def _wait_for_auth(self):
while time.time() < start_time + 300:
cookies = self.browser.cookies()
if 'WorkosCursorSessionToken' in cookies:
return self._extract_auth_info()
time.sleep(2)
- 账户删除逻辑(
_delete_current_account
方法):
def _delete_current_account(self):
delete_js = """
fetch('https://www.cursor.com/api/delete-account', {
method: 'POST',
credentials: 'include'
})"""
self.browser.run_js(delete_js)
结论
本章探讨了cursor-free-vip
中负责管理Cursor的Google/GitHub交互式登录的OAuth浏览器处理器。
了解了它如何通过
DrissionPage
启动和控制本地浏览器,引导选择配置文件,导航至认证页面,并关键性地等待用户手动完成登录步骤。成功后自动检测登录状态,提取认证令牌和邮箱,并通过Cursor数据库接口更新本地Cursor安装状态。
该处理器为命令行工具提供了处理Web认证流程的必要桥梁。
END ★,°:.☆( ̄▽ ̄):.°★ 。
自动化注册系统用于批量创建新账户,实现无限续杯
OAuth浏览器处理器用于通过浏览器实现第三方账号(如Google/GitHub)登录认证。