NodeJS Post Requests + Captcha

  • Abend,


    Vielleicht kann mir ja jemand helfen.


    Ich möchte mich auf einer Webseite mittels Post Request anmelden und bestimmte Aktionen ausführen (zb. bestimmte Beiträge Posten usw.).
    Allerdings ist die Anmeldung durch ein ReCaptcha von Google abgesichert. Da ich das Captcha nicht jedesmal von "Hand" lösen möchte,

    habe ich mir überlegt, die alternativer zunehmen und das Captcha mittels Audioausgabe lösen zulassen -> Diese Audiodatei kann man herunterladen und z.B mittels Python Script & Google Speech API lösen.
    Nun stehe ich aber vor den Problem das ich beim Post-Request, zusätzlich zu den Anmeldedaten auch auch irgendwie das Häckchen beim Capchta setzen muss um dann die Audiodatei zuladen.
    Hat da jemand eine Idee wie man das anstellen kann?


    Freundliche Grüße Lutz.

    Einmal editiert, zuletzt von Lutz Oswald ()

  • Sieht interessant aus.
    Weißt du grad aus dem Kopf ob dies auch ohne Oberfläche funktioniert, also als reine Konsolenanwendung.
    Würde das gerne im Hintergrund auf dem Pi laufen lassen.
    Wie sieht das aus mit den Captchas da diese ja meistens als iFrame eingebettet sind. Lassen die sich ohne Probleme ansteuern?


    Grüße Lutz.

  • Ich habe gerade mal ein wenig Selenium angeschaut und probiert.

    Leider bekomme ich momentan noch ein Fehler nach dem Starten.

    Erst einmal kurz beschrieben wie ich meine Ordner Struktur aussieht:
    (Ja ich weiß der Ordner heißt PhantomJS obwohl ich es (noch) nicht als Phtnom laufen lasse)
    [IMG:https://www2.pic-upload.de/thumb/34089368/Selenium.png]


    Zusätzlich mittels "npm install --save selenium-webdriver" das Selenium-Modul installiert.


    Folgenden Beispielcode verwendet:

    Code
    1. var webdriver = require('selenium-webdriver');
    2. var driver = new webdriver.Builder()
    3. .forBrowser('chrome')
    4. .build()
    5. driver.get('http://www.google.com/ncr');

    Und zum Schluss die erhaltene Fehlermeldung:



    Leider kann ich mit der Fehlermeldung nichts anfangen.

    Hoffe da auf eure Hilfe.


    Gruß Lutz

  • Abend,
    Dann kommt bei mir nur

    Code
    1. Der Befehl "webdriver-manager" ist entweder falsch geschrieben oder
    2. konnte nicht gefunden werden.

    Liegt das daran das ich die chromedriver.exe nur bei mir in den Ordner kopiert habe.

    In den Videotutorials wurde dazu nichts genauer gesagt, außer das man dem chromedriver.exe in den Ordner kopieren soll.


    Gruß Lutz

  • Liegt das daran das ich die chromedriver.exe nur bei mir in den Ordner kopiert habe.

    In den Videotutorials wurde dazu nichts genauer gesagt, außer das man dem chromedriver.exe in den Ordner kopieren soll.


    Aha, wir kommen der Sache näher. Nur kopieren reicht nicht. Du musst deine Umgebungsvariablen anpassen. Woher soll dein Skript wissen, wo die Chromedriver.exe liegt. Diese muss ja schließlich ausgeführt werden.


    Falls dir Videos eher taugen, zwar etwas schnell, aber probier mal das hier:

  • Abend,


    mhh Umgebungsvariablen hatte ich zwischenzeitlich schonmal ergänzt.
    Ändert aber nichts... Selbe Fehlermeldung! Das Chromefenster wird übrigens angezeigt.
    Ich könnte den Fehler ein wenig eingrenzen.
    Der Fehler tritt erst auf sobald eine Seite geladen werden soll -> driver.get('http://www.google.com/ncr');


    Gruß Lutz

  • Nach welcher Anleitung hast du das ganze Zeug installiert?


    Dein Problem scheint bekannt zu sein: https://github.com/angular/protractor/issues/3655


    Schau mal den letzten Post in diesem Issue, ich kann mir vorstellen dass das auf deine Chromedriver-Version zutrifft.


    Ich würde diese also erstmal prüfen und dann schauen, ob du mit einem Down- oder Upgrade mehr Glück hast. Ggf. auch mal den ChromeDriver komplett entfernen und erneut installieren.

  • Abend,

    habe jetzt mal das ein oder andere im Selenium ausprobiert.

    Jetzt bin ich grad an der Stelle, wo ich das Captcha Häckchen setzten möchte.


    Habe es mit folgenden Code probiert -> driver.findElement(webdriver.By.className('recaptcha-checkbox-checkmark')).click();
    Ergebnis ist das ich eine Fehlermeldung er halte

    Code
    1. NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":".recaptcha-checkbox-checkmark"}

    Sprich er kann das Captcha-Element nicht finden. Das liegt ja wahrscheinlich daran das dies mittels einem iFrame in die Seite integriert wurde.
    Wie kann ich denn auf ein Element eines iFrames zugreifen?

    Jemand eine Anhung und kann mir helfen.


    Gruß Lutz.

  • Abend,


    eventuell könnt ihr mir noch einmal helfen!?


    ich hänge zur zeit noch ein wenig am Captcha fest... Es liegt nicht daran es irgendwie gelöst zu bekommen sondern eher darum das es im PhantomJS angezeigt werden soll. Das wird es nämlich nicht...

    Um zu ermitteln warum dies so ist habe ich unter anderem ein paar Screenshots, bei der jeweiligen Aktion, von der Webseite gemacht.

    Und der Fehler ist anscheinend, das PhantomJS zu "Alt" ist


    Original Fehlercode:

    Code
    1. Führen Sie ein Upgrade aus auf einen unterstützten Browser aus, um eine reCAPTCHA-Aufgabe zu erhalten.
    2. Wenn Sie meine, dass diese Seite fälschlicherweise angezeigt wird, überprüfen Sie ihre Internetverbindung und laden Sie die Seite neu.


    Gibt es es eine Möglichkeit der Webseite eine neuere Version anzugeben? oder PhantomJS zu aktualisieren außer über den Node-Package Manager (NPM)?

    Oder eine komplett andere Möglichkeit diese Problem zulösen.


    Gruß Lutz.

  • Ich habe schon seit Ewigkeiten nicht mehr mit PhantomJS gearbeitet, aber ich glaube man kann relativ einfach einstellen, als welchen Browser dieser sich ausgibt - also bspw. als Firefox etc..

    .NET-, Unity3D-, Web-Dev.
    Mikrocomputer-Hobbyist.