鼠标与键盘输入,像真人一样移动
常规自动化会让指针瞬移,并以机器的速度打字。开启 humanize 后,Playwright 中的每一次点击、悬停、填写、拖拽和滚动都走同一条拟人化路径:弧形、带缓动的光标,节奏自然的逐键输入,以及带惯性的滚动,全部作为可信的原生事件派发。
所有套餐均可用。在 Pro 上,坐标点击会遵循录制的真人运动轨迹。
打开开关,脚本不变
from clearcote import launch
browser = launch(fingerprint="seed-123", humanize=True, show_cursor=True)
page = browser.new_page()
page.goto("https://example.com")
page.click("text=Sign in") # eased curve, then a trusted click
page.fill("#email", "you@example.com") # focus, then key-by-key typing
page.locator("#password").type("s3cr3t") # locators are humanized too
# a held-button drag (e.g. a slider): the press stays held across the move
x0, y0, x1 = 100, 300, 400 # the handle's start, and where to release it
page.mouse.move(x0, y0); page.mouse.down()
page.mouse.move(x1, y0); page.mouse.up()
browser.close()亮点
带修正的弧形路径
移动从上一次光标位置出发,沿一条略带弧度的贝塞尔曲线进行,分为一次快速的主移动加一次修正:这正是真人伸手取物时的多峰速度曲线。
可信事件
输入是原生的,因此事件到达时带有 isTrusted 标记,而不是由页面脚本派发,navigator.webdriver 也保持为 false。
有节奏的打字
按键逐个输入,间隔随机,在词语边界处停顿,偶尔还会打错再改正。超过约 200 个字符的值会整体填入,免得批量填写慢如蜗牛。
真正的拖拽
用 mouse.down() 按下的按键会在移动过程中一直保持按住,所以 down、move、up 构成一次真正按住按键的拖拽;locator.dragTo 同样是拟人化的。
带惯性的滚动
滚轮滚动会像真实的滚轮或触控板那样逐渐减速,偶尔还会停下来阅读。
安全的点击,可见的运动
每次可信点击都会先做检查(可见、可用、稳定、未被遮挡),不满足时回退到原生点击。showCursor 会把指针画出来,方便你观看。
它如何融入你的脚本
humanize 在页面层面(click、hover、type、fill、mouse.*、keyboard.type)和 locator 层面(click、type、fill、pressSequentially、dragTo)都会生效,所以现有脚本无需修改就能用上。
不要在上面叠加你自己的缓动。设好途经点,让 humanize 在它们之间插值:手写的逐步缓动会产生常规输入从不会出现的运动统计特征。
每个构建都会生成运动路径:SDK 负责规划移动、拖拽、滚动和打字,坐标点击(mouse.click)则走引擎自己的路径。在 Pro 上,这些点击遵循从录制的真人移动中得出的运动轨迹;在授权版构建上(GitHub 免费版或 Pro),指针上报的保真度更高。在这些版本之间切换,你的代码无需任何改动。
典型用途
监测行为的页面
不仅关注指针和键盘落在哪里、还关注它们如何移动的流程。
拖拽交互
支持按住按键拖拽,所以滑块和拖放的表现与手动操作一致。
表单密集的工作流
注册、结账和设置页面逐字输入,而不是在一个事件里整段粘贴。
演示与录屏
showCursor 让自动化演示在视频里一目了然。
Clearcote 专为隐私保护、测试、研究和合法自动化而打造。你须对自己的使用方式负责,并遵守所访问网站的条款。
哪些套餐包含此功能
拟人化的鼠标、打字和滚动在所有套餐中都可用:Python 和 Node 中是一个启动选项,.NET 中则是显式调用。在授权版构建(GitHub 免费版即可使用)上,指针上报的保真度更高;在 Pro 上,Python 和 Node 的坐标点击会遵循录制的真人移动轨迹。
对比套餐常见问题
如何让 Playwright 的鼠标移动看起来像真人?
通过 Clearcote SDK 启动,并设置 humanize: true(Python:humanize=True)。之后,你现有的 page.click、fill 和 mouse 调用都会以拟人化的方式移动和输入,其他一概不用改。
这些事件是可信的吗?
是的。它们作为原生输入派发,所以 event.isTrusted 为 true;没有任何事件是由页面脚本合成的。(showCursor 会在页面上叠加一个可见的覆盖层,所以请只在演示时使用。)
它会拖慢脚本吗?
会慢一点,就像真人总比瞬移慢一样。较长的值(超过约 200 个字符)会一次性填入,所以批量录入数据依然很快。
.NET SDK 中可以用吗?
可以,但以显式调用而非启动选项的形式提供:页面或 locator 上的 HumanClickAsync、HumanTypeAsync、HumanPressAsync、HumanScrollAsync、HumanDragToAsync 和 HumanSelectOptionAsync。一个开关搞定的 humanize 选项仅适用于 Python 和 Node。
能和我自己的鼠标移动库一起用吗?
最好不要。在 humanize 之上再叠加另一个库的缓动,产生的运动既不像真人,也不像常规输入。把目标交给 Playwright,让 humanize 来规划路径。
在文档中深入了解
相关功能
可直接替换的 Chromium,适用于 Playwright 和 Puppeteer:在 Python、Node 或 .NET 中只需改一行 import,浏览器会自动下载并完成 SHA-256 校验。
每个账号一个种子:每次会话都是同一台设备,下一个账号则是另一台,cookie 和存储在多次运行之间持久保留。
为 browser-use、Stagehand、Crawl4AI 或你自己的智能体提供具备引擎层面身份控制的 Chromium,或者用你自己的模型运行 Clearcote 需主动开启的浏览器内置智能体。
Canvas、WebGL、WebGPU、音频、字体、屏幕和硬件都由 C++ 引擎从一个种子派生,区域设置和时区也随之匹配,让每个检测面彼此一致。
相关阅读
试用 Clearcote
可直接接入 Playwright 与 Puppeteer,一直到 TLS 握手都保持一致,并提供开源构建作为起点。
通过 GitHub 可免费使用一个浏览器。无需信用卡。