Python Selenium wie ein Mensch schreiben? mit random string?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Yokozuna
User
Beiträge: 20
Registriert: Mittwoch 14. September 2022, 07:24

Hallo,

Ich bin Anfänger von Python und arbeite im Moment mit Selenium. Ich weiß wie ich programmieren kann, dass Selenium wie ein Mensch schreibt. Allerdings weiß ich nur, wie ich meinen eigenen Text dafür verwenden kann. Ich weiß übrigens wie man einen random String macht, weiß jemand wie ich einstellen kann, dass Selenium wie ein Mensch schreibt, aber mit random Buchstaben? Der Code für das Menschliche schreiben ist darunter. Ich wäre sehr dankbar dafür.

falls jemand einen anderen Code hat, würde diesen auch gerne nehmen.

elem = driver.find_element(By.ID, 'signup-username')
text = ''test"
for character in text:
actions = ActionChains(driver)
actions.move_to_element(elem)
actions.click()
actions.send_keys(character)
print(character)
actions.perform()
time.sleep(random.uniform(0.2,0.5))
Benutzeravatar
noisefloor
User
Beiträge: 4195
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

was heißt denn "wie ein Mensch schreiben" und "aber mit random Buchstaben?" Das macht in der Kombination doch keinen Sinn. Wenn ein Mensch schreibt sind es doch gerade _keine_ zufälligen Buchstaben, sondern die Buchstaben sind i.d.R. sinnvoll aneinandergereit, so dass ein Wort raus kommt und die Worte so sinnvoll aneinander gereit, dass der Satz einen Sinn ergibt (hoffentlich jedenfalls).

Was hast du denn vor? Einen next-level Spambot, der nicht so gruselig schreibt wie die Spambots, die einfach maschinelle, schlecht übersetzte Texte nutzen?

Gruß, noisefloor
Yokozuna
User
Beiträge: 20
Registriert: Mittwoch 14. September 2022, 07:24

Hallo,

Muss nicht unbedingt mit random Buchstaben sein. Es wäre auch cool, wenn er z. B. Namen aus einem Text File nimmt und die wie ein Mensch eingibt.
Meine Frage wäre, wenn er die Namen in dem Fall nimmt, wie ich es so aussehen lassen könnte, als wenn das ein Mensch geschrieben hätte. Und um deine Frage zu beantworten, meine Intention dahinter ist ganz einfach, dass ich mich in Zukunft mit Python mehr auskennen will, da mich Python sehr interessiert. Deshalb möchte ich es wissen. Ich werde demnach auch mehrere Fragen im Forum stellen, wozu ich nichts Richtiges im Internet finde.


with open('test.txt') as f:
lines = f.readlines()
i = random.randrange(len(lines))
driver.find_element(By.ID, "test").send_keys(lines)

Grüße Yokozuna
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Da Selenium ja für die Automatisierung gedacht ist, muß es nicht so aussehen, wie ein Mensch es tippen würde, schaut eh niemand zu. Und ein Mensch hat einen ziemlich gleichmäßigen Anschlag, wenn es um das Tippen seines Names geht.
Yokozuna
User
Beiträge: 20
Registriert: Mittwoch 14. September 2022, 07:24

Sirius3 hat geschrieben: Mittwoch 14. September 2022, 09:24 Da Selenium ja für die Automatisierung gedacht ist, muß es nicht so aussehen, wie ein Mensch es tippen würde, schaut eh niemand zu. Und ein Mensch hat einen ziemlich gleichmäßigen Anschlag, wenn es um das Tippen seines Names geht.
Hallo,

Stimmt es muss nicht so aussehen, aber es wäre trotzdem ziemlich nice es auszuprobieren bzw. es zu wissen.
Benutzeravatar
noisefloor
User
Beiträge: 4195
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich glaube, du hast da noch einen Denkfehler drin. Die Eingabe erfolgt im Browser - und dem ist egal, wie langsam (oder schnell) du tipps. Die Webseite bzw. der Webservice bekommt die fertige Eingabe und da ist es auch egal, ob die Eingabe 10s oder 0,1s gedauert hat - weil der Server nur den kompletten Text sieht.
Natürlich könnte es sein, dass es Formularfelder gibt, wo per JavaScript jeder Buchstabe "live" und einzeln an den Server übertragen wird und der Server die Schreibgeschwindigkeit misst (warum auch immer). Ist aber IMHO eher die Ausnahme bzw. es wäre schon eine relativ aufwendige Maßnahmen gegen Bots, die automatisiert Formulare ausfüllen-

Gruß, noisefloor
Yokozuna
User
Beiträge: 20
Registriert: Mittwoch 14. September 2022, 07:24

noisefloor hat geschrieben: Mittwoch 14. September 2022, 10:14 Hallo,

ich glaube, du hast da noch einen Denkfehler drin. Die Eingabe erfolgt im Browser - und dem ist egal, wie langsam (oder schnell) du tipps. Die Webseite bzw. der Webservice bekommt die fertige Eingabe und da ist es auch egal, ob die Eingabe 10s oder 0,1s gedauert hat - weil der Server nur den kompletten Text sieht.
Natürlich könnte es sein, dass es Formularfelder gibt, wo per JavaScript jeder Buchstabe "live" und einzeln an den Server übertragen wird und der Server die Schreibgeschwindigkeit misst (warum auch immer). Ist aber IMHO eher die Ausnahme bzw. es wäre schon eine relativ aufwendige Maßnahmen gegen Bots, die automatisiert Formulare ausfüllen-

Gruß, noisefloor
Hallo,

Ja, im Endeffekt ist es nicht so wichtig, hast du recht, sieht halt nur cooler aus.
Aber ich hätte eine Frage an dich, ich habe noch eine 2te Frage im Forum erstellt, kurz zusammengefasst, Ich möchte, dass Selenium mein Profil bei Chrome nimmt, hättest du da eine Lösung?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

@noisefloor: das ist zu kurz gedacht. Ich kann mir sehrwohl vorstellen, dass man Texteingabe via Javascript als Signal fuer Bot-Detection benutzt.
Antworten