Zum Inhalt springen

Menschenähnliche Eingaben

Mit humanize führt das SDK Mausbewegungen, Klicks, Scrollen und Tippen auf menschenähnlichen Pfaden und mit menschenähnlichem Timing aus. showCursor blendet den Mauszeiger ein, damit Sie ihm zusehen können.

Menschenähnliche Eingaben (humanize & showCursor)

Übergeben Sie humanize, und alle Eingaben — Bewegen, Klicken, Ziehen, Scrollen und Tippen — laufen nach einem einheitlichen, menschenähnlichen Standard ab, sowohl auf Page-Ebene (page.click / hover / type / fill / mouse.* / keyboard.type) als auch auf Locator-Ebene (locator.click / type / fill / pressSequentially / dragTo / …). Bewegungen folgen einem leicht gewölbten kubischen Bézier-Pfad ab der letzten Cursorposition und werden als Min-Jerk-Summe von Teilbewegungen abgefahren (eine ballistische Hauptbewegung + eine Korrekturbewegung — das mehrgipflige Geschwindigkeitsprofil echter Zielbewegungen statt einer einzigen symmetrischen Glockenkurve), und alles wird als echte, vertrauenswürdige Events ausgelöst (isTrusted === true, und navigator.webdriver bleibt false). Auf Pro folgen Koordinaten-Klicks (mouse.click(x, y)) Bewegungen, die bei echten Menschen aufgezeichnet wurden; alles andere sowie jeder Klick auf dem offenen Build und mit „Kostenlos mit GitHub“ nutzt generierte Pfade. Mit showCursor blenden Sie einen Punkt ein, der der Bewegung folgt, sodass Sie zusehen können.

Weil Bewegungen nativen Input nutzen, bleibt eine mit mouse.down() gedrückte Taste während der Bewegung gehalten — down → move → up ist also echtes Ziehen mit gehaltener Taste (Bedienelemente wie Slider, die man an eine Position zieht, erhalten einen wirklich gedrückten Drag), und auch locator.dragTo ist menschenähnlich. Getippt wird Taste für Taste mit zufälligen Abständen zwischen den Anschlägen + Pausen an Wortgrenzen und gelegentlich einem korrigierten Vertipper; beim Scrollen gibt es Ease-out-Trägheit mit gelegentlichen Lesepausen. fill fokussiert das Feld und tippt den Wert aus (Werte über ~200 Zeichen bleiben atomar, damit große Füllvorgänge nicht dahinkriechen).

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 + key-by-key human typing
page.locator("#password").type("s3cr3t") # locators are humanized too

# 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()