liesmich.txt Geschrieben 25. Juni 2009 Teilen Geschrieben 25. Juni 2009 Hallo Gemeinde, in einem vierwöchigem Projekt sollen wir uns etwas aussuchen, was wir ausschließlich in Java schreiben sollen. Da habe ich mir folgendes überlegt: Ein "Netzwerksniffer", welcher alle HTTP Verbindungen (Port 80) in eine Datenbank schreibt und aus diesen dann eine grafische Statistik erstellt, welche z.B. zeigt, aus welchen Ländern die angewählten IPs stammen, oder wieviele Verbindungen so im Monat zusammenkommen, etc. Mir geht es hier nun erstmal darum, wie ich die HTTP Verbindungen auslesen kann, die mein PC per HTTP mit dem Internet herstellt? Vllt. hat ja einer von euch eine Idee, wo ich ein schönes HowTo, oder Ähnliches dafür herbekomme? Danke schonmal! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 25. Juni 2009 Teilen Geschrieben 25. Juni 2009 (bearbeitet) Bedenke erst einmal, dass Du wenn Du das für einen (Web-)Server machen willst, wohl eher dessen Logs auswerten solltest. Wenn Du, was ich glaube, das Programm als eine Art Filter für den Server verwenden willst, um zu schauen, welche User aus welchem Land eine Anfrage stellen, dann musst Du einen Proxy erstellen, über den Du den gesamte Datenverkehr des Servers laufen lassen musst. Zusätzlich musst Du auch sicherstellen, dass der Server nur über den Proxy kommuniziert, denn sonst bringt das Programm nichts Du kannst nicht einfach ein Programm auf Deinem Rechner starten und von einem beliebigen Server die Daten "capturen", das ist unmöglich. Selbst an die Logdateien eines beliebigen Servers kommst Du nicht heran. Phil Bearbeitet 25. Juni 2009 von flashpixx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
liesmich.txt Geschrieben 25. Juni 2009 Autor Teilen Geschrieben 25. Juni 2009 Danke für deine Antwort. Aber ich glaube ich habe mich missverständlich ausgedrückt: Ich möchte eine Javaapplikation, die im Hintergrund auf einem Rechner läuft. Dieses Programm soll quasi die Netwerkaktivität mitschneiden, die ich mit meinem Browser tätige. Also Wenn ich beispielsweise mit Firefox fröhlich vor mich hin am browsen bin, soll das Programm im Hintergrund schön alle HTTP Verbindungen die der Browser erzeugt mitschneiden und in eine DB schreiben. Anhand dieser DB wäre es mir möglich, eine grafische Statistik aufzubauen, welche mir z.B. zeigt, wo ich mich so im Netz rumtreibe. Dann könnte man z.B. am Monatsende eine Statistik erstellen lassen, die mir etwas in der Art zeigt: Anzahl Besuche Deutscher Webseiten: 385 Anzahl Besuche Schwdischer Webseiten: 17 Anzahl Besuche Amerikanischer Webseiten: 571 Ich hole die Daten ja von meiner eigenen Netzwerkkarte, daher greiffe ich ja nicht auf irgendwelche anderen Server zu Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 25. Juni 2009 Teilen Geschrieben 25. Juni 2009 (bearbeitet) Okay, d.h. Du willst Deine eigenen Verbindungsdaten mithören. Du hast da schon einmal ein Problem, das TCP lässt nur immer einen Listener zu, d.h. wenn Dein Browser eine HTTP Anfrage durchführt, die ja auf TCP und IP beruht, dann kannst Du nicht direkt einfach diese Daten mithören. Du hast 2 Möglichkeiten: 1. Du implementierst einen Proxy, d.h. Du trägst in Deinem Browser das von Dir geschriebene Programm als Proxy ein, d.h. Dein Programm muss die Anfrage vom Browser nehmen, an den gewünschten Server leiten, die Anfrage des Servers abwarten, die Daten des Servers lesen, einen entsprechenden Lookup machen in welchem Land / Provider usw (also das was Du auswerten möchtest) befindet, die Daten in Deine Datenbank schreiben und dann die Daten an den Browser zurück senden. Vor allem solltest Du hierbei direkt ein Multithreading System Dir überlegen, da der Proxy ja auch ggf parallele Anfragen durchführt, also er läd den HTML Code, Bilder, etc gleichzeitig. Achte dann auch vor allem beim Handling auf Dead-Locks der Thread bzw Mutex-Synchronisation 2. Du kannst das Netzwerkinterface abhören, dafür gibt es 2 C/C++ Bibliotheken "libcap" (unixoxid) und "WinPcap" (windows), die genau das Mithören für Dich übernehmen. Es gibt für Java schon eine fertige Wrapper API SourceForge.net: jNetPcap - Libpcap/WinPcap Java Wrapper: jNetPcap - Libpcap/WinPcap Java Wrapper die Du verwenden kannst HTH Phil Bearbeitet 25. Juni 2009 von flashpixx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.