Forum: PC-Programmierung Internet-Programmierung, wie heissen solche Programme?


von Jürgen W. (lovos)


Lesenswert?

Hallo,
ich habe einfache Programme geschrieben um "Daten-Kommunikation" im 
Internet zu automatisieren. Die Programmiersprache spielt weniger eine 
Rolle, ich habe Java verwendet.
Z.B. um eine bestimmte Uhrzeit loggt sich ein Programm unter einen 
bestimmten Mitgliedsname bei Ebay ein und gibt zu einer bestimmten 
Auktion ein Gebot ab.

Ich meine nicht den Low-Level Datenverkehr wie Socket-Programmierung, 
oder SSL-Zertifikate, sondern mehr z.B. das Handlen von Redirekts, 
Html-Scannen, Ausfuellen von <Form>-ularen, ...
Vieles macht wget schon (einfache Redirects, Verwalten von 
Session-Cookies, SSL).

Manchmal sind solche Programme einfach (z.B. Ebay).
Wenn die Html-Seiten viel Javascript enthalten, werden sie kompliziert. 
Man muesste JS parsen.

Gibt es einen Namen fuer solche Programme (Robots?), gibt es 
irgendwelche Freeware, Opensource von Programm-Bausteinen, um solche 
"Internet-Automatisierungen" zu programmieren?

Leider weiss ich nicht unter welchen Namen/Begriffen ich da googeln 
soll.

von Gast (Gast)


Lesenswert?

gibt schon bibliotheken: mechanize: "stateful programmatic web browsing"
stichworte: spider, robot, automator, browser, screen-scraper

von Jürgen W. (lovos)


Lesenswert?

Danke fuer die Vorschlaege.

Die einzige unueberwindbare Schwierigkeit erscheint mir dennoch 
Javascript.
Einfache Sachen wie
1
top.location.hr*f=new.url.de
2
oder
3
window.location.hr*f=new.url.de

kann meine Software zwar parsen, aber bei Sachen wie
1
    <script language="JavaScript" type="text/javascript">
2
      document.forms['bootOptions'].action = document.forms['bootOptions'].action + '?' + document.location.search.replace(/[?&](ibvc|imfl)=\d+/g, '').replace(/^[?&]/g, '');
3
      if (document.location.search.length > 0) {
4
        var bootOpts = document.location.search.replace(/[?&](ibvc|imfl)=\d+/g, '').replace(/^[?&]/g, '').split('&');
5
        for (var i = 0; i < bootOpts.length; i++) {
6
          var parts = bootOpts[i].split('=');
7
          var node = document.createElement('input');
8
          node.name = parts[0];
9
          node.type = 'hidden';
10
          node.value = unescape(parts[1]);
11
          document.forms['bootOptions'].appendChild(node);
12
        }
13
      }
14
    </script>

sehe ich alt aus.

von P. S. (Gast)


Lesenswert?

Am weitesten kommst du wahrscheinlich, wenn du dir eine der verfuegbaren 
Renderingengines nimmst (die grafische Ausgabe natuerlich weglaesst) und 
die entstehende Dokumentstruktur auswertest.

von Stephan M. (stephanm)


Lesenswert?

Jürgen G. schrieb:
> Leider weiss ich nicht unter welchen Namen/Begriffen ich da googeln
> soll.

Google mal nach Selenium - oder einfach http://seleniumhq.org :-)

Mittels Selenium kannst Du einen Browser "fernsteuern". Die Steuerung 
kann über verschiedene Programmiersprachen erfolgen (z.B. JavaScript, 
Java, PHP). Selenium wird i.A. zum automatisiierten Testing von 
Web-Applilationen eingesetzt und simuliert reale 
Benutzer<->Browser-Interaktion. Da Selenium direkt mit dem Browser 
interagiert (vereinfacht gesagt), stehen Dir fast alle Möglichkeiten zur 
Verfügung, die ein realer Browser bietet, z.B. Eingabe von Texten in 
Eingabezeilen, Clicks auf Buttons, Page reloads, ... JavaScript wird 
dabei natürlich auch wie gewohnt vom Browser ausgeführt :-)

Falls ich Dich richtig verstanden habe ist das genau das was Du suchst. 
Ich habe ein bisschen Erfahrung mit dem Ding, bei Interesse einfach 
Nachfragen. Ansonsten - nix für ungut, mag sein dass ich Dich falsch 
verstanden habe.

Liebe Grüße, Stephan.

von Q9 (Gast)


Lesenswert?

Es gibt eine Javascript engine/bibliothek, ich weiß aber nicht mehr wie 
die heißt. Bei python mechanize hatte ich auch was zur JavaScript 
Ausführung gesehen.

von Klaus (Gast)


Lesenswert?

@ Q9: So einen hilfreichen Beitrag habe ich schon lang nicht mehr 
gesehen (ich weiss aber nicht mehr wo...!!)

von Q9 (Gast)


Lesenswert?


von P. S. (Gast)


Lesenswert?

Klaus schrieb:
> @ Q9: So einen hilfreichen Beitrag habe ich schon lang nicht mehr
> gesehen (ich weiss aber nicht mehr wo...!!)

So weiss er wenigstens, dass es das gibt, was er braucht. Von deinem 
Beitrag dagegen hat er null.

Gutes Stichwort fuer Javascript ist uebrigens auch "Ecmascript".

von Klaus (Gast)


Lesenswert?

@ Peter Stegemann (pst): Ja eben, "dass es das gibt". Aber von "was er 
braucht" sehe ich nichts. Er sagt einfach, dass es eine Java 
engine/bibliothek gibt...
OK, ich bin wieder ruhig, aber das wollte ich noch los werden ;)

von Uhu U. (uhu)


Lesenswert?

Jürgen G. schrieb:
> Gibt es einen Namen fuer solche Programme (Robots?), gibt es
> irgendwelche Freeware, Opensource von Programm-Bausteinen, um solche
> "Internet-Automatisierungen" zu programmieren?

Sniper

Ein bewährtes Teil in dieser Sparte ist Biet-O-Matic.

> Leider weiss ich nicht unter welchen Namen/Begriffen ich da googeln
> soll.

Googel mal nach

    ebay+sniper

von Simon K. (simon) Benutzerseite


Lesenswert?


von Dr. G. Reed (Gast)


Lesenswert?

Schau Dir vielleicht auch mal DejaClick an, das kann die Bedienung von 
Webseiten aufzeichen und automatisiert wiedergeben.
Ist ein FireFox Plugin
Vielleicht kann man das ja auch zeitgesteuert hinkriegen...

von Jürgen W. (lovos)


Lesenswert?

@stephanm

Danke fuer deinen Hinweis.
Richtig, ein automatischer Browser wuerde schon das machen, was ich 
will. Er kann Javascript interpretieren, Dateien abspeichern, downloads, 
...
Nachteilig bei dieser Sache ist, dass das Layout von Seiten oft aendern 
und da muss man die Click-Koordinaten nachziehen. Auch kann er nicht im 
Hintergrund laufen, da er Browser immer den (Eingabe-)Focus braucht.
Aber es ist zumindestens etwas.



Auch die anderen Sachen sind interessante Tools, ich bin immer wieder 
erstaunt.

bei
http://de.wikipedia.org/wiki/Greasemonkey
sehe ich
>viele Arten von Internetwerbung entfernen

Das waere wirklich was ganz tolles, wenn auch nicht mein 
Ursprungsanliegen.

von Jürgen W. (lovos)


Lesenswert?

Es gibt ein Tool,

ltfx-0.1.6.tar.gz
http://sourceforge.net/projects/ltfx
LTFX - Linux Test For X. LTFX is a "script" based X-Windows GUI 
automation tool. Its primary purpose is to help assist with creating 
automated tests in the X environment by driving the X interface.

Damit kann man eine beliebiges X-Oberflaeche steuern (Eingaben machen, 
Menues aufrufen). Das ginge auch mit einem Browser, verlangt aber viel 
Arbeit.

von Jürgen W. (lovos)


Lesenswert?

Q9 schrieb:
> http://www.google.de/search?q=Javascript+engine
> -> http://www.mozilla.org/js/spidermonkey/

Habe libmozjs-dev auf mein Debian System installiert, ein kleines 
Prograemmchen geschrieben, was ein Demo Javascript ausfuehrt.
Das Paket ist super.
Allerdings muss ich noch die DOM-Routinen schreiben, NUR der 
JS-Interpreter reicht nicht. Aber das geht in die richtige Richtung.

von Stephan M. (stephanm)


Lesenswert?

> Nachteilig bei dieser Sache ist, dass das Layout von Seiten oft aendern
> und da muss man die Click-Koordinaten nachziehen.

Selenium arbeitet nicht mit Koordinaten. Um einen Click auf einen 
Button zu simulieren musst Du den Button entweder über seine ID oder 
z.B. einen XPath-Ausdruck referenzieren. Wo der Button dann sitzt ist 
Selenium völig egal. Geeignete XPath-Ausdrücke für vorhandene Controls 
lassen sich i.A. leicht mit entsprechenden Firefox-Plugins generieren.

Liebe Grüße,

Stephan

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.