2010-01-15 8 views
44

Ich möchte einige Web-Interaktionen automatisieren, nämlich den regelmäßigen Download von Dateien von einer sicheren Website. Dies beinhaltet im Wesentlichen die Eingabe meines Benutzernamens/Passworts und das Navigieren zur entsprechenden URL.Headless, skriptfähiger Firefox/Webkit unter Linux?

Ich versuchte einfaches Scripting in Python, gefolgt von ausgefeilteren Scripting, nur um zu entdecken, dass diese bestimmte Website einige anstößige Javascript und Flash-basierten Mechanismus für die Anmeldung verwendet, meine Methoden nutzlos macht.

Ich habe dann versucht, HTMLUnit, aber das scheint auch nicht zu funktionieren. Ich vermute, die Verwendung von Flash ist das Problem.

Ich will nicht wirklich darüber nachdenken, also lehne ich mich an, einen wirklichen Browser zu scripten, um mich anzumelden und die Datei zu holen, die ich brauche.

Anforderungen sind:

  • Run auf Linux-Server (dh kein X läuft.). Wenn ich wirklich X haben muss, kann ich das machen, aber ich werde nicht glücklich sein.
  • Seien Sie zuverlässig. Ich möchte dieses Ding beginnen und nie wieder darüber nachdenken.
  • Sei skriptfähig. Nichts zu anspruchsvoll, aber ich sollte dem Browser die verschiedenen Schritte und Seiten erklären können.

Gibt es irgendwelche guten Toolkits für einen kopflosen, X-less skriptfähigen Browser? Hast du so etwas versucht und wenn ja, hast du irgendwelche Worte der Weisheit?

Antwort

17

Ich habe verwandte Aufgabe mit IE eingebetteten Browser (obwohl es GUI-Anwendung mit ausgeblendeten Browser-Komponente-Panel war). Eigentlich können Sie alle layout engine nehmen und Ausgangslogik schneiden. Die Navigation sollte über script-ähnliche Ereignisse erfolgen.

Sie können Crowbar verwenden. Es ist kopflose Version von Firefox (Gecko-Engine). Es verwandelt den Browser in einen REST-fähigen Server, der Anfragen annehmen kann ("fetch url"). Also parsen Sie html, stellen Sie es als DOM dar, warten Sie definierte Verzögerung für alle ausgeführten Skripte ab.

Es funktioniert auf Linux. Ich nehme an, Sie können es leicht für Ihr Ziel mit JS und reichen XULrunner Fähigkeiten erweitern.

+0

Unterstützt Crowbar POST HTTP-Anfragen? Dokumentation ist sehr schlecht ... – hamczu

1

Ich weiß nicht, wie man Flash-Interaktionen (und bin auch interessiert), aber für html/javascript können Sie Chickenfoot verwenden.

Und um einen kopflosen + skriptfähigen Browser zu erhalten, der unter Linux arbeitet, können Sie Qt webkit library verwenden. Here is an example use.

+0

Thansk Richard, das sieht gut aus, lass es mich versuchen. – Parand

38

Was ist mit phantomjs?

+1

PhantomJS ist bei weitem am einfachsten zu integrieren und entwickelt Möglichkeiten zur Integration in automatisierte Test-Frameworks. –

+2

Ja, aber wenn Sie etwas wie das Einloggen in eine Website und die Verwendung von Cookies simulieren möchten, viel Glück! –

+3

Phantomjs erfordert einen X-Server (http://code.google.com/p/phantomjs/issues/detail?id=33) –

8

Haben Sie versucht Selenium? Sie können ein Nutzungsszenario mit einer Erweiterung für Firefox aufzeichnen, die später mit verschiedenen Methoden wiedergegeben werden kann.

Edit: Ich habe gerade festgestellt, dass dies eine sehr späte Antwort war. :)

6

Werfen Sie einen Blick auf WebKitDriver. Das Projekt umfasst die kopflose Implementierung von WebKit.

-1

iMacros für Linux können Sie Skript Firefox und Chrome: http://wiki.imacros.net/Linux

+0

Während iMacros unter Linux läuft, beschreiben die Anweisungen speziell eine Technik, die das Setzen eines DISPLAY erfordert, was bedeutet, dass dies nicht der Fall ist Kopflos laufen, aber braucht eine Fensterumgebung. –

0

Um dies zu erreichen, ich Chrome-Erweiterungen nur schreiben, die CouchDBs Post (example und seine Futon). Fügen Sie die Couch den Berechtigungen im Manifest hinzu, um domänenübergreifende XHRs zuzulassen.

(ich in diesem Thread auf der Suche nach einer Alternative ohne Kopf kam zu dem, was ich getan habe, dieses Thema gefunden zu haben, ich werde irgendwann Crowbar versuchen.)

Auch die bizarre Berücksichtigung Eigenschaften dieser Website, kann ich nicht helfen, sich zu fragen, ob Sie einige Sicherheitslücke ausnutzen können, um das Flash und Javascript zu umgehen.