HTTP-Proxy mit HTTP/1.0-Emulation für alte Browser (Update)

  • (Es folgt eine bearbeitete Version des ursprünglichen Posts, die einige Update enthält)
    Durch den aktuellen Thread über den IE2 bin ich auf die Idee zu nHTTP gekommen: Das Programm ist ein sehr schlanker Proxy-Server (unter 30 KB), der auf Wunsch HTTP/1.0-Requests als HTTP/1.1 an die Websites schickt und beim Rückweg wieder in HTTP/1.0 zurückverwandelt. Dazu kommen noch einige andere Optionen für ältere Browser.

    Wenn man zB mit dem IE2 auf eine Website will, sieht man dank der alten HTTP-Version meistens nur so etwas:

    Mit HTTP/1.0-Emulation laden die Seiten problemlos:

    Wie man sieht, wird fälschlicherweise CSS und Javascript als Text gerendert und es fehlen Bilder. Dem kann man mit weiteren Optionen entgegenwirken, die automatisch störendes CSS entfernen und alle modernen PNG-Bilder on the fly nach GIF konvertieren. Zusätzlich werden mit gzip komprimierte Websites im Proxy entpackt. SSL geht leider noch nicht, da das größere Anforderungen an den Proxy stellt.

    Download:
    (im Anhang)
    Es wird .Net 2.0 gebraucht.

    Benutzung:
    nhttp [/p<port>] [/http1] [/nopng] [/nocss] [/nojs]
    Standard ist Port 8889 und keine der anderen Optionen.

    Code
    /http1  Emuliert HTTP/1.0
    /nopng  Konvertiert PNG zu GIF
    /nocss  Entfernt CSS
    /nojs   Entfernt Javascript

    Ursprünglicher Post:

    Spoiler anzeigen


    Neue Version: 1.1 (Siehe unten)

    Durch den aktuellen Thread über den IE2 bin ich auf die Idee zu nHTTP gekommen: Das Programm ist ein sehr schlanker Proxy-Server (unter 15 KB), der auf Wunsch HTTP/1.0-Requests als HTTP/1.1 an die Websites schickt und beim Rückweg wieder in HTTP/1.0 zurückverwandelt.

    Das Ganze wird einfach protokolliert und lässt sich auch zum ganz normalen Surfen mit allen Protokollen im Format "[Befehl] Website[:Port] [Version]" benutzen, wobei [Version] und [Port] optional sind. Nur bei SSL weisen manche Server die Verbindung ab.

    Wenn man zB mit dem IE2 auf eine Website will, sieht man dank der alten HTTP-Version meistens nur so etwas:

    Mit HTTP/1.0-Emulation stimmt das Layout zwar nicht, aber die Seiten laden problemlos:


    Mit der neuen Bildkonvertierung werden sogar neumodische PNG-Dateien eingebunden:

    Neu in Version 1.1 ist die automatische PNG-Konvertierung. Sie konvertiert nach Angabe des Parameters "/nopng" alle PNG-Dateien nach GIF:

    Download:
    Version 1.0: nHTTP.exe (13,82 KB)
    Version 1.1: nHTTP.exe (15,87 KB)
    Es wird .Net 2.0 gebraucht.

    Benutzung:
    nhttp [/p<port>] [/http1] [/nopng]
    Standard ist Port 8889 und keine Emulation.

    Dateien

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

    Einmal editiert, zuletzt von niwax (12. Dezember 2014 um 15:41)

  • Das konnte der IE3 auch nicht, ich mein erst ab dem 4er
    (Hab mal ne XP-CD in nen Win95-Rechner eingelegt und die Infodatei angeschaut. Grausam)

    PGP-Key E384 009D 3B54 DCD3 21BF  9532 95EE 94A4 3258 3DB1 | S/MIME-Key 0x1A33706DAD44DA
    G d-@ s+:- a--- C+++ UB+L++ P--- L++@ E-@>++ W+ N o? K? w>++ !O !M !V PS+++ PE-- Y+>++ PGP++>+++ !t 5? X? !R tv b+++>++++ DI !D G>+ e>+++ h !r>++ !z
    „Die Aachener gelten als Erfinder des 4. Hauptsatzes der Thermodynamik: ‚Thermo schreibt man zweimal.“‘
    “Saying that Java is good because it works on all platforms is like saying oral sex is good because it works on all sexes.”
    „Es gibt 10 Sorten von Leuten: Die einen verstehen das Binärsystem, die anderen nicht.“
    „Manche Männer lieben Männer, Manche Frauen eben Frauen; Da gibt's nix zu bedauern und nichts zu staunen; Das ist genau so normal wie Kaugummi kauen; Doch die meisten werden sich das niemals trauen“

  • Dirk darfste auch gern auf WH bei den alten Browsern zum Download anbieten, war ja keine große Programmierarbeit.

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • Haste auch noch selbst gebaut? wow.

    Wie funktioniert das jetzt im Detail? Im alten IE geb ich den PC an, wo dein Programm drauf läuft. Egal ob virtuelle oder echte Maschine?

    Vielleicht kombiniere ich ja IE 2 + dein Programm. Aber erst Dienstag.

  • Kannst du auch den Source davon online Stellen? In was ist das geschrieben? (Wie ich dich kenne wahrscheinlich vB oder?)

    PGP-Key E384 009D 3B54 DCD3 21BF  9532 95EE 94A4 3258 3DB1 | S/MIME-Key 0x1A33706DAD44DA
    G d-@ s+:- a--- C+++ UB+L++ P--- L++@ E-@>++ W+ N o? K? w>++ !O !M !V PS+++ PE-- Y+>++ PGP++>+++ !t 5? X? !R tv b+++>++++ DI !D G>+ e>+++ h !r>++ !z
    „Die Aachener gelten als Erfinder des 4. Hauptsatzes der Thermodynamik: ‚Thermo schreibt man zweimal.“‘
    “Saying that Java is good because it works on all platforms is like saying oral sex is good because it works on all sexes.”
    „Es gibt 10 Sorten von Leuten: Die einen verstehen das Binärsystem, die anderen nicht.“
    „Manche Männer lieben Männer, Manche Frauen eben Frauen; Da gibt's nix zu bedauern und nichts zu staunen; Das ist genau so normal wie Kaugummi kauen; Doch die meisten werden sich das niemals trauen“

  • Zitat von Dirk

    Haste auch noch selbst gebaut? wow.

    Wie funktioniert das jetzt im Detail? Im alten IE geb ich den PC an, wo dein Programm drauf läuft. Egal ob virtuelle oder echte Maschine?

    Vielleicht kombiniere ich ja IE 2 + dein Programm. Aber erst Dienstag.

    Das funktionietr wie ein quasi jeder andere Proxy auch: Datenstrom annehmen, per Regex oä die Serveradresse extrahieren und an den Server weiterleiten. Die Antwort wird dann an den Client zurückgeschickt. HTTP/1.0 geht mit simplem Suchen/Ersetzen im ersten Datenpaket (Ich geh nicht von über 4 KB Headern aus.)

    Hier ist mal ne kurze Anleitung für NT4:
    1. Proxy starten, IP herausfinden

    2. Interneteinstellungen öffnen

    3. Proxy eintragen

    An den Einstellungen hat sich seit NT nur das Design geändert.

    4. Neustarten (Bei älteren Systemen)

    Es reicht, wenn der Proxy im gleichen Netzwerk steht wie der Client, es geht zB auch über NAT in ner VM. Das Progamm darf sogar auf dem gleichen PC laufen, dann gehts zB über 127.0.0.1:8889

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • Den wichtigen letzten Schritt vergessen:
    5. ENJOY!

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • Um den Thread hier weiter mit mehr oder weniger sinvollen Posts zu verstopfen hier noch die aktuelle TODO-Liste:
    - Scripts und CSS ausfiltern
    - Automatische Bildkonvertierung (PNG zu GIF)

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • Blue: Sollte mit Mono problemlos laufen. Dauerhaft ists aber nicht zu empfehlen, weil die Reaktionszeit und SSL-Fähigkeit doch leidet.

    Im ersten Post lässt sich die neue Version runterladen, man kann jetzt mit /nopng alle PNG-Bilder automatisch in das verträglichere GIF konvertieren lassen.

    An alle, die v1.1 vor 18:25 runtergeladen haben: bitte nochmal neu laden, ein Bug hat verhindert, dass die Konvertierung und HTTP/1.0 zusammenarbeiten.

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

    Einmal editiert, zuletzt von niwax (2. Oktober 2011 um 18:40)

  • Kanns gleich nochmal wo hochladen wenn ich das Projekt finde. Hatte leider zwischendrin mal nen Festplattencrash, sollte aber noch wo rumliegen



    Das ist die aktuellste Version die ich noch habe. nHTTP2.zip ist ein neuerer Debug-Build, der soweit ich mich erinnere auch mit gzip-komprimierten Websites umgehen kann und automatisch entpackt

  • Es kann sein, dass die .net-Runtime automatisch der 300 folgt und dort dann kein Dokument findet. Oder umgekehrt, der Proxy überprüft nicht wirklich, was der Server gesagt hat und einfach nichts findet. Das Debuggen war größtenteils Glück und schwarze Magie, es kann also einfach irgendeine Eigenart in irgendeiner Software sein (höchstwahrscheinlich im Proxy...). Die Chancen das schnell zu beheben sind recht niedrig.

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • der fred gehört oben angepinnt wa



    C:\Users\Admin\Desktop>nhttp /http1
    nhttp2 (c) 2011-2013 Niel Wagensommer
    Flag Desciption Status
    /pXXX Proxy on port 8889
    /http1 HTTP/1.0 emulation ON
    /http1 PNG to GIF conversion OFF
    /js Javascript removal OFF
    /css CSS removal OFF

    Unbehandelte Ausnahme: System.Net.Sockets.SocketException: Normalerweise darf je
    de Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal
    verwendet werden
    bei System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress
    socketAddress)
    bei System.Net.Sockets.Socket.Bind(EndPoint localEP)
    bei System.Net.Sockets.TcpListener.Start(Int32 backlog)
    bei System.Net.Sockets.TcpListener.Start()
    bei nHTTP.WebProxy2.Main.RunProxy()
    bei nHTTP.WebProxy2.Main.Main()


    die app crasht bei /http1

    nhttp2 (c) 2011-2013 Niel Wagensommer
    Flag Desciption Status
    /pXXX Proxy on port 8889
    /http1 HTTP/1.0 emulation OFF
    /http1 PNG to GIF conversion OFF
    /js Javascript removal OFF
    /css CSS removal OFF

    wie lautet denn der switch für PNG=>GIF?

    Einmal editiert, zuletzt von freaked (3. Oktober 2014 um 16:03)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!