Webserver als virtueller Browser

Django, Flask, Bottle, WSGI, CGI…
Antworten
Eryk
User
Beiträge: 4
Registriert: Samstag 20. August 2022, 10:15

Liebe Comunity,

nachdem ich jetzt endlich mal etwas Zeit habe, wollte ich einer Frage nachgehen, die mich schon lange beschäftigt. Ich möchte mir einen Browser bauen, bei dem User Interface, also das was die meisten User als Browser ansehen und Netzwerkteil, also die Komponente, die HTTP/HTTPS Anfragen absendet und Antworten entgegen nimmt getrennt sind. Die vor allem aus Sicherheitsgründen. Wir haben im Moment keine Kontrolle über unseren Browser. Wenn der eine HTTP/HTTPS Seite bekommt, dann holt er sich selbständig jeden Link, der in dieser Seite gelistet ist und führt stur jedes Script aus, das er in dieser Seite entdeckt.

Meine Idee (mein Traum) ist, dass ich mit meinem Browser meinen Webserver kontaktiere (vielleicht läuft der auf einem Raspberry), dann sage ich dem Webserver er soll für mich eine Request machen, die Response überarbeiten und mir dann das Resultat in meinen Browser schicken, wo ich es mir dann anschauen kann. Die Möglichkeiten der Bearbeitung des Inhalts der Webseite sind da natürlich vielfältig.

Die erste Frage ist natürlich, gibt es sowas Ähnliches schon ? Ich will da auf keinen Fall das Rad neu erfinden. Die zweite Frage, was hält Ihr davon ? Blöde Idee ? Technisch sollte es durchaus machbar sein. Eine Alternative wäre eine MITMP da gibt es auch Software für den Raspi. Aber eine Software, die auf Raspi läuft und requests gegen Webserver loslässt, mit Variablen, wie zum Beispiel der Browsertyp der eventuelles Javascript verdauen soll und natürlich auch Kontrollen, welche Daten jetzt an den Webserver abfließen dürfen wäre da recht nützlich. Der Browser bekommt dann eigentlich nur Inhalt, der vom (Proxy?) Server für OK befunden wird. Was dies nun heißt sei im Moment dahingestellt.

Ich weiß nicht, ob der Betreff korrekt wiedergibt, was ich machen möchte, aber mir fiel da nix Besseres ein. Ich weiß auch nicht, ob Server, Proxyserver oder Browser Backend oder virtueller Browser die Komponente beschreiben, die ich da bauen will.

Vielen Dank für jeden Kommentar
beste Grüße
Erich
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

Klingt ein bisschen wie Privoxy, vielleicht: https://www.privoxy.org/
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ein Proxy ist technisch der Weg. Oder eine Browser Extension wie NoScript.

Ich frage mich nur, wie du glaubst, da sinnvoll rum schrauben zu können. Wenn du eine Methode hättest, mit der du zuverlässig “guten” von ‘bösem” Code unterscheiden kannst, dann wäre das ein technologischer Durchbruch. Ohne dir zu nahe treten zu wollen - das kann ich mir schwer vorstellen.
Eryk
User
Beiträge: 4
Registriert: Samstag 20. August 2022, 10:15

@nezzcarth: Also, Privoxy geht nicht, ich will https sozusagen als "Man in the Middle" lesen und verändern können.
@_deets__:
"Wenn du eine Methode hättest, mit der du zuverlässig “guten” von ‘bösem” Code unterscheiden kannst, dann wäre das ein technologischer Durchbruch. "
Soweit denke ich (noch) nicht, als erstes will ich mal alle Anfragen vom Browser lesen, scannen und eventuell verändern, diese Anfragen dann an den Server senden, auf die Antwort warten und dann die Antwort wieder, nach entsprechender Bearbeitung an den Browser schicken, der sie gemacht hat.
Eine SW, mit der sowas prinzipiell geht ist MITM, da gibt es eine Implementation, die auch auf dem Raspberry läuft. Ich wollte da allerdings was viel Einfacheres machen, da mein Browser ja weiß, daß seine Anfragen gelesen werden.
Vielleicht nennt man das, was ich will Application Gateway. ich muß mir auch Gedanken über das Umschreiben der URLs machen, wenn alle Links in der Web Seite die Original Links enthalten, dann gehen die Anfragen nicht an mein Application Gateway, also muss da die IP Adresse meines Gateways drin sein, vielleicht mit einem Lattenzaun oder sowas danach.
Sowas ähnliches gibt es als Service gegen Bezahlung, es heißt virtueller Browser. Da läuft ein virtueller Browser auf einem Server, der mit meinem lokalen Browser spricht. Eventuelle Malware stellt da was auf der Sandbox des virtuellen Browsers an und mein Browser ist da nur Display.
Also so wie es aussieht, gibt es das Application Gateway, das ich mir vorstelle noch nicht.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Ich glaube, du musst dich grundlegend einmal mit der Technik von HTTP beschäftigen. Und was ein Proxy ist. Und wie der funktioniert. Denn der Request an einen Link von einer Webseite landet natürlich beim Proxy. Da muss man gar nichts umschreiben.

Proxy Server gibt es schon einige. Auch viele Browser AddOns die in die Richtung gehen. Technisch ist das also keineswegs unbekanntes Land.
Zuletzt geändert von sparrow am Montag 22. August 2022, 13:44, insgesamt 1-mal geändert.
Eryk
User
Beiträge: 4
Registriert: Samstag 20. August 2022, 10:15

Ein Proxy Server bekommt natürlich jede Anfrage mit dem genauen URL mit, mit mod_rewrite beim Apache Server (zB) kann ich den sogar umschreiben. Der Proxy Server liest aber nicht den Inhalt der Datenpakete, die bleiben für den Proxy opak. Ich möchte gerne diese Daten lesen, ansonst gibt es sehr luxuriöse Proxies (ZB Apache) die das für mich machen würden, da bräuchte ich nix neu schreiben.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Ja genau. Und es macht daher auch keinen Sinn die hrefs manipulieren zu wollen.
Das von dir zitierte mitmproxy Projekt ist doch genau was du dir als technische Grundlage vorstellst. Meiner Meinung bringt deine Idee mehr Risiko als es nützt.
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Eryk hat geschrieben: Montag 22. August 2022, 13:40 Ein Proxy Server bekommt natürlich jede Anfrage mit dem genauen URL mit, mit mod_rewrite beim Apache Server (zB) kann ich den sogar umschreiben. Der Proxy Server liest aber nicht den Inhalt der Datenpakete, die bleiben für den Proxy opak. Ich möchte gerne diese Daten lesen, ansonst gibt es sehr luxuriöse Proxies (ZB Apache) die das für mich machen würden, da bräuchte ich nix neu schreiben.
Das diese Proxies das so handhaben, ist eine Entscheidung, kein Zwang. Es gibt auch genug Proxies, die das machen. Und dein eigener kann das selbstverstaendlich tun.
Eryk
User
Beiträge: 4
Registriert: Samstag 20. August 2022, 10:15

Nun, ich liebäugele schon seit einiger Zeit mit mitmproxy, das gebe ich zu. Nur, dazu muß ich dann den gesamten Web Traffic über den Proxy gehen lassen. Ich untersuchte eine Lösung,mit der ich in meinem Browser eine Seite aufmache, dann einen URL eingebe und anfange zu surfen. So kompliziert stelle ich mir meine Lösung nicht vor, das ist ein Prozess der macht Listen auf port 80, kommt was an, dann ein fork und geht dann weiter in Listen, der "geforkte" Prozess macht dann das Handling der Anfrage, also so wie es ein web Server auch tut. Statt eine Seite aus dem File System zu laden, macht er ein GET/POST an den Server von dem der Browser was wollte. Ich dachte nur ich wäre nicht der Einzige, dem so eine Idee vorschwebt ,,,,
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Ich befürchte den relevanten Beitrag von nezzcarth mit dem Hinweis auf privoxy hast du möglicherweise etwas voreilig weg gewischt.

Ja klar muss dann dein Browser immer mit dem Proxy sprechen. Sonst wäre das ja auch sinnlos.

Ansonsten klingt deine Idee wahlweise etwas krude... oder wie ein Proxy Server.
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich verstehe nicht, was du da sagst. Der Punkt den wir zu machen versuchen: ein Browser kann proxies benutzen, und ein Proxy kann den gesamten Verkehr inspizieren, und darauf beliebig arbeiten, bevor er das Ergebnis zurückgibt. Wenn man das gut machen will, kommen sich noch ein paar Optimierungen ins Spiel (Daten schon ausliefern, während sie eingehen), was dann wiederum Herausforderungen bezüglich des parsens darstellt (das sind dann eben partielle Dokumente), aber ganz grundsätzlich ist es das richtige Vorgehen.
Antworten