本文へスキップ
入力 · マウス · キーボード · スクロール

マウスとキーボードの入力を、人のような動きで

通常の自動化では、ポインターは瞬間移動し、タイピングは機械の速さです。humanize をオンにすると、Playwright のクリック、ホバー、入力、ドラッグ、スクロールはすべて、人間らしい動きの経路を通ります。曲線を描いて加減速するカーソル、自然なタイミングで 1 キーずつ打つタイピング、慣性のあるスクロール。そのすべてが trusted なネイティブイベントとして送出されます。

すべてのプランで利用可能。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()

主なポイント

曲線と修正を含む軌跡

移動は、直前のカーソル位置からわずかに弧を描くベジェ曲線をたどり、素早い主動作とそれに続く修正動作で進みます。実際に手を伸ばす動作に見られる、複数のピークを持つ速度変化です。

trusted なイベント

入力はネイティブなので、イベントはページのスクリプトから送出されるのではなく、isTrusted が設定された状態で届きます。navigator.webdriver も false のままです。

リズムのあるタイピング

キーは 1 つずつ、ランダムな間隔で入力され、単語の区切りで間を置き、ときどきタイプミスをして修正します。約 200 文字を超える値は一括で入力されるので、大量の入力がのろのろと進むことはありません。

本物のドラッグ

mouse.down() で押したボタンは移動中も押されたままなので、down・move・up はボタンを押し続けた本物のドラッグになります。locator.dragTo も人間らしい動きになります。

慣性のあるスクロール

ホイールスクロールは、実際のホイールやトラックパッドと同じように徐々に減速し、ときどき読むための間を置きます。

安全なクリック、見える動き

trusted なクリックはそれぞれ事前に確認され(表示されている、有効である、安定している、覆われていない)、条件を満たさなければネイティブのクリックにフォールバックします。showCursor を使うとポインターが描画され、動きを目で追えます。

スクリプトへの組み込み方

humanize はページレベル(click、hover、type、fill、mouse.*、keyboard.type)とロケーターレベル(click、type、fill、pressSequentially、dragTo)の両方で機能するため、既存のスクリプトにも手を加えずに適用されます。

独自のイージングを上に重ねないでください。経由点を設定し、その間の補間は humanize に任せましょう。ステップごとに自前で実装したイージングは、通常の入力では決して生じない動きの統計を生み出します。

動きの軌跡はどのビルドでも生成されます。移動、ドラッグ、スクロール、タイピングは SDK が計画し、座標指定クリック(mouse.click)はエンジン自身の軌跡をたどります。Pro ではこれらのクリックが、記録された人間の動きから導出したモーションに従います。また、ライセンスビルド(「GitHub で無料」または Pro)ではポインターの報告がより高精度になります。どのビルドでも、コードを変える必要はありません。

主な用途

振る舞いを見るページ

ポインターやキーボードがどこに行き着くかだけでなく、どう動くかを見るフロー。

ドラッグ操作

ボタンを押したままのドラッグが機能するので、スライダーやドラッグ&ドロップが手で操作したときと同じように動きます。

フォーム入力の多いワークフロー

会員登録、購入手続き、設定ページを、1 回のイベントで貼り付けるのではなく、実際にタイピングして入力します。

デモと録画

showCursor を使えば、自動操作のウォークスルーを動画で見ても分かりやすくなります。

Clearcote は、プライバシー保護、テスト、研究、合法的な自動化のために作られています。どう使うか、そしてアクセスするサイトの規約を守ることは、利用者ご自身の責任です。

差分

標準の Chromium と Clearcote Pro の差は 38,921 行。

これが、Pro ビルドと Google が配布する Chromium との距離です。サイトが読み取れる値はすべて Chromium が計算する場所で設定されるため、ページ、その Worker、iframe がすべて同じデバイスを示します。

  • Canvas
  • WebGL
  • WebGPU
  • オーディオ
  • フォント
  • 画面とウィンドウ
  • WebRTC
  • TLS
  • Client Hints
  • 入力タイミング
  • 音声とコーデック
オープンビルドのパッチを GitHub で読む

Pro ビルド、r57 のパッチスタック(Chromium 156.0.8078.47)から集計。無料のオープンビルドは、より小さな公開パッチセットです。

Chromium 156.0.8078.47 → Clearcote Pro r57

345 files changed, 35915 insertions(+), 3006 deletions(-)

240 件のパッチ

領域別の変更ファイル数

  • レンダリングエンジン(Blink)118
  • ブラウザ(chrome/)52
  • Content レイヤー42
  • コンポーネント39
  • ネットワークスタック22
  • UI とウィンドウ14
  • TLS(BoringSSL)11
  • V8 と URL17
  • その他30

対象プラン

人間らしいマウス操作・タイピング・スクロールはすべてのプランで使えます。Python、Node、.NET では起動オプション 1 つで有効になり、.NET では明示的な呼び出しも使えます。ライセンス版ビルド(GitHub で無料)ではポインターの報告がより忠実になり、Pro では座標クリックが記録された人間の動きに沿います。

プランを比較

よくある質問

Playwright のマウスの動きを人間らしくするには?

Clearcote SDK から humanize: true(Python では humanize=True)を付けて起動します。あとは既存の page.click、fill、mouse の呼び出しが、ほかに何も変えずに人間らしい動きと入力になります。

イベントは trusted(信頼済み)ですか?

はい。ネイティブ入力として送出されるため、event.isTrusted は true になり、ページのスクリプトから合成されるものは何もありません。(showCursor はページに目に見えるオーバーレイを追加するので、デモ用にとどめてください。)

スクリプトは遅くなりますか?

少しだけ遅くなります。人がテレポートより遅いのと同じことです。長い値(約 200 文字超)は一度に入力されるので、大量のデータ入力は速いままです。

.NET SDK でも使えますか?

はい。SDK 0.58.0 から、起動オプション Humanize = true で、Python と Node の humanize と同じように、起動したすべてのページとポップアップが人間らしい操作になります。page または locator に対する明示的な呼び出しもあります:HumanClickAsync、HumanTypeAsync、HumanPressAsync、HumanScrollAsync、HumanDragToAsync、HumanSelectOptionAsync。

独自のマウス移動ライブラリと併用できますか?

おすすめしません。humanize のイージングの上に別のライブラリのイージングを重ねると、人間も通常の入力も生み出さないような動きになります。Playwright には目標だけを渡し、経路は humanize に任せてください。

ドキュメントで詳しく

関連する機能

Clearcote を試す

Playwright & Puppeteer にそのまま組み込め、TLS ハンドシェイクまで整合性を保ちます。まずはオープンソースのビルドから始められます。

ブラウザ 1 つまで無料:GitHub、カード確認、または会社の Google アカウント。請求は一切ありません。