Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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!

Geschrieben (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 von flashpixx
Geschrieben

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 :)

Geschrieben (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 von flashpixx

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...