当前位置: 首页 > news >正文

Cursor长效Token获取核心技术解析

Cursor长效Token获取核心技术解析

深入剖析从Cursor登录Cookie到长效Token的完整技术流程

cursor 账号管理工具

https://pan.quark.cn/s/37259245983b#/list/share

前言

Cursor作为AI驱动的代码编辑器,其认证机制涉及两种token:短效的Cookie token用于Web端认证,长效的Session token用于客户端认证。本文将从技术角度详细解析这一转换过程。

一、Token类型说明

1.1 短效Cookie Token(Web端认证)

从Cursor Web端登录后获得的Cookie格式为:

WorkosCursorSessionToken = user_id%3A%3Ajwt_token

实际示例:

user_01K43D4JHZ7HVR1VQ3GWHQ7PG1%3A%3AeyJhbGciOiJNaIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhdXRoMHx1c2VyXzAxSzQzRDRKSFo3SFZSMVZRM0dXSFE3UEcxIiwidGltZSI6IjE3NTY3NTYwODYiLCJyYW5kb21uZXNzIjoiZjBkMWNhMzEtOTM2NS00Njc3IiwiZXhwIjoxNzYxOTQwMDg2LCJpc3MiOiJodHRwczovL2F1dGhlbnRpY2F0aW9uLmN1cnNvci5zaCIsInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgZW1haWwgb2ZmbGluZV9hY2Nlc3MiLCJhdWQiOiJodHRwczovL2N1cnNvci5jb20iLCJ0eXBlIjoic2Vzc2lvbiJ9.va_W-h_MP8hMnTMYsxlVDZZk0FQNfwKM-S3K5C9d8p8

特点说明:

  • 用途: Cursor Web端后台的认证信息
  • Token类型: type: "web"
  • 格式: user_id%3A%3Ajwt_token%3A%3A:: 的URL编码)

1.2 长效Session Token(客户端认证)

通过PKCE流程获得的长效Token用于Cursor客户端认证:

特点说明:

  • 用途: Cursor客户端的认证信息
  • Token类型: type: "session"
  • 获取方式: 通过PKCE OAuth 2.0流程转换

1.3 JWT Token结构解析

JWT Token包含三部分:header.payload.signature

Payload解码后的内容:

{"sub": "auth0|user_01K43D4JHZ7HVR1VQ3GWHQ7PG1","time": "1756756086","randomness": "f0d1ca31-9365-4677","exp": 1761940086,"iss": "https://authentication.cursor.sh","scope": "openid profile email offline_access","aud": "https://cursor.com","type": "session"
}

关键字段:

  • sub: 用户标识
  • exp: 过期时间戳
  • type: Token类型("web" 或 "session")
  • scope: 权限范围

二、PKCE OAuth 2.0核心流程

2.1 PKCE挑战码生成

import secrets
import hashlib
import base64def generate_pkce_challenge():# 生成32字节随机字符串作为code_verifiercode_verifier = secrets.token_urlsafe(32)# 对code_verifier进行SHA256哈希sha256_hash = hashlib.sha256(code_verifier.encode('utf-8')).digest()# Base64 URL安全编码code_challenge = base64.urlsafe_b64encode(sha256_hash).rstrip(b'=').decode('utf-8')return code_verifier, code_challenge

示例输出:

code_verifier: "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"
code_challenge: "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM"

2.2 登录URL构造

import uuiddef create_login_url():request_uuid = str(uuid.uuid4())code_verifier, code_challenge = generate_pkce_challenge()login_url = f"https://cursor.com/cn/loginDeepControl?challenge={code_challenge}&uuid={request_uuid}&mode=login"return login_url, request_uuid, code_verifier

完整URL示例:

https://cursor.com/cn/loginDeepControl?challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM&uuid=f47ac10b-58cc-4372-a567-0e02b2c3d479&mode=login

2.3 Cookie预设置

在访问登录URL前,需要设置现有的短效token作为Cookie:

def set_auth_cookie(page, user_id, access_token):cookie = {'name': 'WorkosCursorSessionToken','value': f"{user_id}%3A%3A{access_token}",'domain': '.cursor.com','path': '/','secure': True,'httpOnly': True,'sameSite': 'Lax'}page.set.cookies(cookie)

三、长效Token轮询获取

3.1 轮询端点

API端点: https://api2.cursor.sh/auth/poll

请求方式: GET

关键参数:

  • uuid: 登录请求的唯一标识
  • verifier: PKCE的code_verifier

3.2 请求头构造

import secretsdef build_headers():# 动态生成分布式追踪IDtrace_id = secrets.token_hex(16)parent_id = secrets.token_hex(8)traceparent = f"00-{trace_id}-{parent_id}-00"return {"Host": "api2.cursor.sh","Origin": "vscode-file://vscode-app","User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Cursor/1.2.2 Chrome/132.0.6834.210 Electron/34.5.1 Safari/537.36","accept": "*/*","sec-ch-ua": '"Not A(Brand";v="8", "Chromium";v="132"',"sec-ch-ua-mobile": "?0","sec-ch-ua-platform": '"macOS"',"sec-fetch-site": "cross-site","sec-fetch-mode": "cors","sec-fetch-dest": "empty","accept-language": "zh-CN","traceparent": traceparent,"x-ghost-mode": "true","x-new-onboarding-completed": "false"}

3.3 轮询核心逻辑

import requests
import timedef poll_for_token(request_uuid, code_verifier, max_attempts=50, interval=2):polling_url = "https://api2.cursor.sh/auth/poll"for attempt in range(max_attempts):headers = build_headers()params = {"uuid": request_uuid,"verifier": code_verifier}try:response = requests.get(polling_url, headers=headers, params=params, timeout=10)if response.status_code == 200:data = response.json()if "accessToken" in data and "refreshToken" in data:return {"access_token": data["accessToken"],"refresh_token": data["refreshToken"],"user_id": data.get("userId", "")}elif response.status_code == 404:# 404是正常状态,表示用户尚未确认登录passelse:print(f"Unexpected status code: {response.status_code}")except requests.exceptions.RequestException as e:print(f"Request error: {e}")time.sleep(interval)return None

状态码含义:

  • 200: 成功获取token
  • 404: 等待用户确认登录(正常状态)
  • 其他: 异常状态

3.4 成功响应格式

{"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","userId": "user_01K43D4JHZ7HVR1VQ3GWHQ7PG1"
}

四、关键技术要点

4.1 安全机制

  1. PKCE流程: 防止授权码拦截攻击,确保客户端身份验证
  2. 动态追踪ID: 每次请求生成唯一标识,避免请求重放
  3. Cookie预设: 利用现有Web端认证状态,简化用户操作
  4. JWT验证: 通过数字签名确保token完整性和真实性

4.2 容错处理

  1. 网络重试: 请求失败自动重试,提高成功率
  2. 超时控制: 每个请求10秒超时,避免长时间等待
  3. 状态码识别: 区分正常等待和异常状态,精确处理
  4. 轮询限制: 最多50次轮询防止无限循环,保护系统资源

4.3 性能优化

  1. 轮询间隔: 2秒间隔平衡响应速度和服务器压力
  2. 并发控制: 单线程轮询避免重复请求,降低服务器负载
  3. 资源清理: 及时关闭浏览器释放资源,避免内存泄漏
  4. 请求复用: 复用HTTP连接减少建连开销

结语

通过PKCE OAuth 2.0流程,我们可以将Cursor的短效Cookie token转换为长效Session token,实现从Web端认证到客户端认证的无缝切换。这一技术流程体现了现代OAuth认证机制的安全性和灵活性,为构建可靠的认证系统提供了重要参考。

理解这一流程不仅有助于深入掌握OAuth 2.0协议的实际应用,更为开发者在处理类似认证场景时提供了宝贵的技术洞察。


本文仅供技术学习研究使用,请遵守相关服务条款和法律法规。

技术标签:#OAuth2.0 #PKCE #JWT #认证流程 #Web安全

本文由mdnice多平台发布

http://www.sczhlp.com/news/76189/

相关文章:

  • 网站备案归wordpress force ssl
  • 海口网站制作策划网站加盟城市分站
  • 江苏网站优化近一周内的热点新闻
  • 金融集团网站模板wordpress 账号 有效期
  • 微信公众号小说代理和网站结合怎么做广东网站建设英铭科技
  • 网站的建设论文的选题描述南京刚刚发生的大事
  • 如何系统的学习AI相关的知识,进入到AI行业-grok的答案
  • 并发安全
  • 网站开发 京东网站主视觉
  • 秦皇岛开发区建设局网站网站如何建设目录
  • 做服装招聘的网站有哪些家居网站建设的背景及意义
  • 广西莲城建设集团有限公司网站做网站接私活怎么收费
  • 商城型移动端网站开发多少钱安徽省建设监理协会 旧网站
  • 瑞芯微 RV1106G 硬件参考设计分享,包括原理图、PCB文件以及设计指南
  • 网站备案拍照幕布百度知道网页版登录入口
  • 销售类网站数据库的建设代理网址ip
  • 欧美男女直接做的视频网站google怎么推广
  • 黄冈网站建设优化排名前端网站开发培训
  • 星夜智能建站平台收费图片网站
  • 司法局网站建设方案打开搜索引擎
  • 重新安wordpress网站轻栈小程序官网
  • 河北衡水市网站制作的公司跨境电商官网
  • 青浦工厂网站建设h5制作微信小程序
  • 公司网站页面加密门面商铺装修
  • 全志性能非常强悍的 A733 SoC 硬件参考设计资料分享
  • jn建站系统做一个静态网站导航要多少钱
  • 兰州网站建设专家seo是什么意思 部门
  • php网站开发课程知名的wordpress网站
  • 装修公司网站php源码全国互联网备案信息查询系统
  • 支付宝网站设计分析最佳的搜索引擎