Skip to content

更新日志

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_scriptdom_actiondump_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 实现,补齐 xpath click / type / focus 路径,避免 dom_action 走到未处理分支后只返回 ok=false
  • 原生点击与鼠标移动继续统一复用 root-frame 坐标转换链路,1.5x1.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 clickx/y clickclick_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.dllmedia.dllpdfium.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() 遇到 Windows WinError 32 且本地 core 文件完整时,会自动修复 version-manifest.json,不再因目录占用误报核心更新失败
  • 云端启动前新增代理预检:可识别被误标为 socks5:// 的 HTTP 代理并自动纠正协议;对 ip forbidden、坏代理、连通失败的代理会提前标记失效并切换
  • 补充真实业务回归覆盖,test_example_full.pytest_polymarket_full.py 均验证通过

v0.3.25 (2026-04-01)

修复

  • SidecarClient._decode() 新增 reply payload fallback:优先 payload,其次 data,最后回退到顶层 ok / handled / error 等字段
  • 修正不同机器上 dom_action reply 先到无包装回包时触发的 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_pagestartup_page_unavailablestartup_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 命中视觉子节点时,自动提升到可交互祖先并执行无感 fallback
  • browser.find(...).input() 新增输入后读回校验:原生逐字符输入未落值时,自动同步 DOM property 并补发 input/change 事件
  • 复杂前端站点的错误上下文增强:BIZ_CLICK_FAILED / BIZ_INPUT_FAILED 现在附带 current_urlmatch_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_selected
  • close() 清理三进程: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_registeredenv_id 注册提示与 CSP 说明
  • Sidecar runtime 启动失败诊断增强:增加 port_in_use 与 Windows owner_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.whl

v0.3.0 (2026-02-23)

新功能 — Playwright 风格 API

  • eval_js(script, timeout=15) -> Any — 在浏览器执行 JS 并返回结果(基于 WebSocket 回调机制)
  • text_content(selector, timeout=15) -> str? — 获取元素 textContent,支持 CSS 和 XPath
  • inner_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-siblingancestornormalize-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.whl

v0.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

Linege Anti-Browser Documentation