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

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

通常の自動化では、ポインターは瞬間移動し、タイピングは機械の速さです。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 は、プライバシー保護、テスト、研究、合法的な自動化のために作られています。どう使うか、そしてアクセスするサイトの規約を守ることは、利用者ご自身の責任です。

対象プラン

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

プランを比較

よくある質問

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

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

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

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

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

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

.NET SDK でも使えますか?

はい。ただし起動オプションではなく、明示的な呼び出しとして提供しています。page または locator に対する HumanClickAsync、HumanTypeAsync、HumanPressAsync、HumanScrollAsync、HumanDragToAsync、HumanSelectOptionAsync です。フラグ 1 つで済む humanize オプションは Python と Node 向けです。

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

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

ドキュメントで詳しく

関連する機能

Clearcote を試す

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

GitHub があればブラウザ 1 つまで無料。カード登録は不要です。