更新日志
Desktop
v1.0.46 (2026-03-13)
优化
- 环境列表(表格视图)备注作为独立列显示,不再与名称列合并
v1.0.45 (2026-03-13)
优化
- 列表视图(表格模式)环境名称下方显示备注文本
v1.0.44 (2026-03-13)
优化
- GUI 卡片视图显示环境备注(名称下方蓝色小字)
v1.0.43 (2026-03-13)
新功能
- 环境备注(note)云端同步:编辑备注后自动 PATCH 到云端,升级/重装不再丢失备注
- 后端代理诊断 SQL 改为基于
proxy_bindings表的多租户查询,支持MAX_PROXY_USAGE复用
v1.0.42 (2026-02-23)
修复
- Sidecar WebSocket 服务新增通用命令转发:SDK 发送的
eval_script、dom_action、dump_html等命令不再被静默丢弃,正确中继到 Chrome 实例
v1.0.41 (2026-02-13)
优化
- 全面清理项目:移除根目录临时脚本、Tauri 残留、废弃 SDK 引用
MAX_PROXY_USAGE改为环境变量配置,支持迁移期 1:1 IP 绑定- Admin SDK 补齐
update_user/delete_user,全 18 端点 E2E 验证通过 - 导出 Chromium 源码补丁 (
chromium-patches/linege-chrome-v1.0.12.patch)
v1.0.37 (2026-02-11)
修复
- 新建环境时服务端真实扣减配额,配额不足直接返回
Quota exceeded - 创建失败场景增加配额回滚,避免
quota_used脏增 - 桌面端创建后即时刷新
quota_remaining,批量创建后再拉取一次 profile 对齐
优化
- 浏览器窗口标题增加
[env:<env_id>]标识,便于群控排查与人工核对 - 强化启动阶段结构化日志锚点(窗口标题打标重试链路)
v1.0.36 (2026-02-11)
优化
- 群控场景引入跨实例共享静态资源缓存(HTTP Cache)
- 桌面端统一 Electron 架构,移除 Tauri 相关目录与发布路径
v1.0.35 (2026-02-11)
修复
- 未登录或 Token 失效时,应用自动回到全屏登录页,不再停留在主界面
- 新增认证失效提示(登录页错误信息),避免无感失效
- 修复设置弹窗与登录态切换期间的状态同步异常
优化
- 侧边栏与设置页统一展示用户配额(已用/总量/剩余)
- 登录成功后自动持久化 token/username,刷新后可恢复会话
- 补充 GUI E2E 认证链路(有效 token、无效 token、重登流程)
v1.0.34 (2026-02-11)
新功能
- 新增用户名密码登录(设置面板自动获取 Token,无需手动粘贴)
- 登录后显示配额信息,支持退出登录
- 保留手动 Token 输入(高级折叠面板)
v1.0.7 (2026-02-08)
修复
- 修复批量文本输入顺序问题(按 PID 排序)
- 修复四宫格排列顺序(改为横向优先)
- 确认 Ctrl+Alt+M 快捷键正常工作
优化
- 改进滚轮同步稳定性(RawInput API)
- 优化窗口排列脚本性能
Chrome
v1.0.28 (2026-04-01)
修复
- 同步发布最新
linege_native_automation实现,补齐xpathclick / type / focus 路径,避免dom_action走到未处理分支后只返回ok=false - 原生点击与鼠标移动继续统一复用 root-frame 坐标转换链路,
1.5x与1.0x本地探针均重新命中目标
v1.0.27 (2026-03-27)
修复
- 修正
navigator.userAgentData.platform的 Linege override 实现,去掉进程级静态缓存,避免 Outlook 已登录邮箱页在全量 business mock 下触发 renderer crash - 本地复测通过:
platform单模块复现消失,原始outlook-business-fullmock-1774529000环境恢复正常,主 renderer 可持续返回 frame / URL / title
v1.0.26 (2026-03-26)
修复
- native click / mouse_move 的 root-frame 坐标缩放改为优先读取
ChromeClient::GetScreenInfo(*frame).device_scale_factor,异常时再回退到已存储的真实 DSF - 修正
--force-device-scale-factor=1.5等价场景下的点击整段偏移,selector click、x/y click、click_with_move三条路径重新命中目标
v1.0.25 (2026-03-25)
修复
- click / mouse_move 改为读取
ScreenInfos中真实device_scale_factor,不再依赖被指纹层伪造的window.devicePixelRatio - 修正 Windows 125% / 150% 缩放与 RDP 场景下,真实渲染 DPR 与 JS 暴露 DPR 分裂导致的点击坐标偏移
v1.0.24 (2026-03-23)
修复
- Windows 内容区 mirror 主端采集改用设备像素视口尺寸归一化,修正系统 150% 缩放下物理像素事件坐标与 DIP 尺寸混用导致的点击偏移
- 保持现有 SDK 回归通过,未影响
devicePixelRatio=1/2的既有 mirror 注入验证结论
v1.0.23 (2026-03-23)
修复
- mirror 内容区坐标广播与注入统一使用可见视口尺寸,减少 Windows 缩放 / 远程桌面场景下的坐标系偏差
- 保持
devicePixelRatio=1/devicePixelRatio=2的 mirror 点击与移动回归通过,未破坏现有群控行为
v1.0.22 (2026-03-21)
修复
- Chrome 发布包恢复使用完整
runtime_deps打包,不再遗漏ffmpeg.dll、media.dll、pdfium.dll等运行时依赖 - 自动更新版本提升到
1.0.22,客户端可正确感知并拉取完整内核包
v1.0.20 (2026-03-10)
修复
- 坐标点击 (
{action:"click", x, y}) 不再破坏 eval_js Mojo reply 通道- 根因:
LinegeAutomationParams缺少 x/y 字段,坐标 click 降级为ClickSelector("")空选择器调用,破坏 renderer 状态 - 新增
ClickAt()/MouseMoveTo()两个 Blink 原生方法,走完整 pointerdown→mousedown→pointerup→mouseup→click 事件序列,isTrusted: true
- 根因:
- 恢复
ScopedAllowBaseSyncPrimitives:browser→renderer Mojo 同步调用不再因缺少 sync primitive 许可而潜在崩溃 mouse_move从 eval_js 合成事件改为dom_action原生管道,每个 mousemove 事件isTrusted: true,不可被反自动化检测
影响
click_with_move()(贝塞尔曲线拟人点击) 全链路 isTrusted- 坐标 click 后
eval_js("1+1")稳定返回2,不再返回None - React SPA (Polymarket 等) 的 onMouseDown/onPointerDown handler 正常触发
v1.0.19 (2026-03-09)
- 修复 Polymarket 等复杂前端页面中“selector 命中的是视觉子节点,但点击无反应”的问题
ClickSelector()在命中非交互叶子节点并提升到可交互祖先后,不再直接返回失败,而是继续对提升后的目标执行点击- 兼容
browser.find(".\\[\\&\\+\\&\\]\\:border-t:nth-child(2) .-top-px").wait().click()这类命中子装饰层的 selector
v1.0.18 (2026-03-08)
- 修复 Microsoft 登录页(
login.live.com/login.microsoftonline.com)场景下eval_js()返回空的问题 eval_script返回值统一在 Chromium 侧做 JSON 序列化,避免页面级eval(...)包装导致的空结果- 保持 iframe selector 路由和
list_frames/frame_token能力
v1.0.17 (2026-03-07)
- 浏览器进程接管
navigate命令,当前标签页导航不再依赖 renderer 内部window.location改写 - 保持
click/input稳定性增强,兼容复杂前端子节点点击与输入落值校验
v1.0.16 (2026-02-28)
- 跟随桌面发布对齐版本号
v1.0.15 (2026-02-28)
- 跟随桌面发布对齐版本号
v1.0.14 (2026-02-28)
- Chrome 自动更新模块增强(
chrome-updater.ts健壮性改进)
v1.0.13 (2026-02-11)
- 同步最新桌面发布节奏,更新内核发布元数据与下载索引
- 保持 Chromium 138.0.7204.301 基线与现有指纹注入能力
v1.0.12 (2026-02-09)
- Chromium 138.0.7204.301 基线
- C++ 层指纹注入: Canvas/WebGL/Audio/Fonts
- WebSocket Sidecar 连接 (profile.json envId 必需)
- dom_action 命令支持: click/input/scroll/focus
- mirror.input 双通道: Master→dom_action, Slave→mirror.input
Python SDK
v0.3.26 (2026-04-03)
修复
ensure_latest_version()遇到 WindowsWinError 32且本地 core 文件完整时,会自动修复version-manifest.json,不再因目录占用误报核心更新失败- 云端启动前新增代理预检:可识别被误标为
socks5://的 HTTP 代理并自动纠正协议;对ip forbidden、坏代理、连通失败的代理会提前标记失效并切换 - 补充真实业务回归覆盖,
test_example_full.py与test_polymarket_full.py均验证通过
v0.3.25 (2026-04-01)
修复
SidecarClient._decode()新增 reply payload fallback:优先payload,其次data,最后回退到顶层ok/handled/error等字段- 修正不同机器上
dom_actionreply 先到无包装回包时触发的empty reply payload误报,尤其是原生 click / XPath click 场景
v0.3.24 (2026-03-27)
新功能
LinegeClient/open_cloud_browser()/open_local_browser()新增window_size,支持元组和字符串两种写法- 启动时会自动转换为 Chrome
--window-size=参数,便于固定工作区尺寸和自动化视窗布局
v0.3.23 (2026-03-27)
修复
restore_last_session=True时,如果浏览器恢复到上次会话页而非本次start_url,不再误报为 chrome error page- 启动判定细分为
chrome_error_page、startup_page_unavailable、startup_url_mismatch LinegeBrowserSession新增startup_issue,便于调用方读取启动 warning / error 细节
v0.3.22 (2026-03-25)
优化
- 保留原生 sidecar 底层接口
send_command(),并新增兼容别名send_command_and_reply() - 补充 raw sidecar API 单测,覆盖 fire-and-forget 与 reply 两条主链
v0.3.21 (2026-03-21)
优化
- 对外文档、安装命令与验证示例统一对齐到当前线上版本
0.3.21 - Polymarket 指南与下载页同步使用当前 SDK / Chrome 版本显示
v0.3.20 (2026-03-19)
修复
open_local_browser()在本机已有 Chrome 内核时不再强制鉴权,真正支持纯本地模式启动- 清理文档与示例中的旧版本 wheel 链接和错误版本号,统一到
0.3.20 - 手工测试脚本与示例移除硬编码敏感信息,统一改为从
.env/ 环境变量读取
v0.3.19 (2026-03-13)
新功能
- 环境备注 (note) 云端同步:编辑备注后自动 PATCH 到云端,升级/重装不再丢失备注
click()统一坐标 click 路径,配合 Chrome 1.0.20 修复后全链路isTrusted
v0.3.18 (2026-03-10)
修复
click()使用坐标模式(获取元素中心坐标后走dom_action click x/y),不再使用dom_click(selector)JS 路径- 禁用
_maybe_click_promoted_selector(遍历祖先找交互元素并el.click()),在 React SPA 上不生效且可能报告虚假成功
v0.3.17 (2026-03-09)
修复
browser.click()恢复状态型 JS click fallback:当页面存在data-state/aria-expanded这类状态容器时,会先尝试可验证的 JS click,再决定是否回退到原生点击- 修复 Polymarket 这类 React 手风琴/状态区块中“JS click 已经有效,但后续 native fallback 覆盖掉结果”的问题
v0.3.16 (2026-03-08)
修复
eval_js()不再使用JSON.stringify(eval(...))包装用户脚本- 修复 Microsoft 登录页场景下
browser.eval_js()返回None的问题 - 保持跨 frame 自动 selector 解析能力,对业务调用侧无新增心智负担
v0.3.15 (2026-03-07)
修复
goto()恢复为简单navigate协议,导航职责收回到浏览器进程,避免 SDK 自行在页面上下文里做站点级跳转- 新增浏览器进程侧导航接管:
navigate先在 Browser 侧处理,再由 SDK 轮询 URL/selector,提升跨站点导航稳定性
v0.3.14 (2026-03-07)
修复
goto()对file:///about:/data:/chrome:特殊协议恢复走原生命令,避免从https://页面直接用location.href导航被浏览器安全策略拦截- 输入前新增焦点确认:若目标输入框未获得焦点,直接走 DOM value 同步 fallback,避免真实表单跨字段串写
v0.3.13 (2026-03-07)
修复
browser.find(...).click()新增内部智能兜底:当 selector 命中视觉子节点时,自动提升到可交互祖先并执行无感 fallbackbrowser.find(...).input()新增输入后读回校验:原生逐字符输入未落值时,自动同步 DOM property 并补发input/change事件- 复杂前端站点的错误上下文增强:
BIZ_CLICK_FAILED/BIZ_INPUT_FAILED现在附带current_url、match_count等诊断字段
v0.3.12 (2026-03-05)
修复
- 启动阶段新增错误页识别:当浏览器落到
chrome-error://chromewebdata/时,自动提取ERR_*/UNKNOWN_CERTIFICATE_VERIFICATION_ERROR作为结构化错误锚点 - 云环境新增启动自愈:遇到可重试启动错误会自动
report_proxy_dead并拉取新代理后重试(默认 1 次,可配置) - 失败语义改进:重试后仍失败时抛
BIZ_STARTUP_PAGE_ERROR,避免把网络/代理/证书错误误判为browser.find()selector 失败
新增
LinegeClient(max_startup_retries=1):客户端级启动自愈重试配置open_cloud_browser(..., startup_retries=None)/open_local_browser(..., startup_retries=None):会话级覆盖重试配置
v0.3.7 (2026-03-01)
优化
- 文档与示例全面重写,SDK Python 文档页精简合并
- 跟随桌面发布对齐版本号
v0.3.5 (2026-02-28)
新功能
LaunchResult新增sidecar_pid字段,支持三进程清理(Chrome + gost + sidecar)launch_chrome()新增env_name/country参数,写入metadata.json+proxy.json(兼容桌面端 EnvironmentMetadata)create_local_environment()新增country参数,metadata 包含country+fingerprintId_allocate_port()端口被占时自动递增并记录日志biz.port.auto_selectedclose()清理三进程:Chrome + gost(proxy_pid) + sidecar(sidecar_pid),无泄漏
v0.3.4 (2026-02-28)
新功能
- 新增业务门面 API(
business.py),面向业务流程的高层封装 - 强化实际使用流程与内核 manifest 恢复逻辑
v0.3.3 (2026-02-27)
修复
ensure_chrome_core()新增force参数,当最新版本不一致时强制更新内核- 文档清理:移除外部无代码引用,凭据替换为占位符
v0.3.2 (2026-02-27)
修复
- Sidecar 连接失败提示增强:
sidecar.connect.fail增加suggestion=,包含 listener 探测、裸机启动链路和端口冲突处置建议 - RPC 超时提示增强:
_send_and_wait/eval_js超时信息增加profile_registered、env_id注册提示与 CSP 说明 - Sidecar runtime 启动失败诊断增强:增加
port_in_use与 Windowsowner_pid(best-effort),并附日志 tail
新增
- 新增完整纯 SDK 示例:
examples/full_sdk_e2e.py- 覆盖链路:
login -> create_environment -> ensure_chrome_core -> launch_chrome -> SidecarClient.register -> navigate -> cleanup
- 覆盖链路:
安装
bash
pip install https://pub-69fcb37602174d10b2152f09439de470.r2.dev/sdk/linege_sdk-0.3.2-py3-none-any.whlv0.3.0 (2026-02-23)
新功能 — Playwright 风格 API
eval_js(script, timeout=15) -> Any— 在浏览器执行 JS 并返回结果(基于 WebSocket 回调机制)text_content(selector, timeout=15) -> str?— 获取元素 textContent,支持 CSS 和 XPathinner_text(selector, timeout=15) -> str?— 获取元素 innerText(尊重 CSS visibility)wait_for_selector(selector, state, timeout=30) -> bool— 等待元素达到指定状态- 支持四种状态:
attached/detached/visible/hidden - 轮询间隔 0.5s,精确超时控制
- 支持四种状态:
query_selector_all(selector, timeout=15) -> list— 批量查询匹配元素,返回[{tag, text, attrs}]mouse_move(x, y, steps=10, from_x=0, from_y=0)— 贝塞尔曲线拟人化鼠标移动click_with_move(selector, steps=10, timeout=15)— 等待元素 → 移动鼠标 → 点击
XPath 选择器支持
所有接受 selector 的方法均自动检测 XPath(//、(//、xpath= 前缀),支持:
- 文本选择:
//a[contains(text(), '登录')] - 属性组合:
//div[@class='result' and contains(., 'keyword')] - 轴导航:
following-sibling、ancestor、normalize-space() - 位置过滤:
(//p)[position()<=5]
修复
- Sidecar 通用命令转发:修复 SDK→Chrome 的
eval_script/dom_action/dump_html等命令被静默丢弃的问题 - Listener 线程韧性:非致命异常不再终止监听线程,仅连接关闭时退出
已知限制
- 部分 HTTPS 站点的 CSP (
connect-src) 会阻止eval_js的 ws:// 回调(如 Hacker News) eval_js基于 JS 合成事件,无法绕过 OS 级检测
API 变化
| 方法 | 变化类型 | 说明 |
|---|---|---|
eval_js() | 新增 | 执行 JS 并返回结果(区别于 fire-and-forget 的 eval_script()) |
text_content() | 新增 | CSS/XPath 提取文本 |
inner_text() | 新增 | CSS/XPath 提取可见文本 |
wait_for_selector() | 新增 | 等待元素状态(attached/detached/visible/hidden) |
query_selector_all() | 新增 | 批量查询元素信息 |
mouse_move() | 新增 | 贝塞尔曲线鼠标移动 |
click_with_move() | 新增 | 拟人化点击(移动+点击) |
SidecarClient() | 行为变更 | connect() 自动启动 listener 线程 |
close() | 行为变更 | 自动唤醒所有等待中的 pending response |
安装
bash
pip install https://pub-69fcb37602174d10b2152f09439de470.r2.dev/sdk/linege_sdk-0.3.0-py3-none-any.whlv0.2.1 (2026-02-11)
- 跟随桌面/后端发布对齐版本号
- 重新打包并上传最新可安装 wheel
v0.2.0 (2026-02-10)
- LinegeApi: 完整 CRUD + login/from_login
- SidecarClient: DOM 操作 + 镜像控制
- launch_chrome: GOST 隧道 + GPU 检测
- 类型安全: dataclass + py.typed
Admin SDK
v0.2.1 (2026-02-11)
- 跟随桌面/后端发布对齐版本号
- 重新打包并上传最新可安装 wheel
v0.2.0 (2026-02-10)
- LinegeAdmin: 用户/Token/代理/指纹/模板管理
- CSV/JSON 批量导入
- Country Matrix 矩阵查询
- 独立包, 不依赖 linege-sdk