Proxy entwickeln

DataFox

Erfahrenes Mitglied
Hi

es geht um folgendes: Ich will einen Proxy entwickeln, der den Quellcode einer Website modifiziert und zurückliefert. Beispiel: Eine Übersetzung der Website

Wie funktioniert so ein Proxy? Also nach dem was ich weis läuft das so:

Auf der Website ist ein Link: "übersetzte Version". Fer Link führt auf eine URL wie z.B.:
http://www.dasIstDerProxy.de?website_url=http://dasIstDieWebsite.net

Der Proxy geht dann wiederum selbst auf http://dasIstDieWebsite.net, schnappt sich den kompletten Quellcode und ändert sämtliche Links nach diesem Muster http://www.proxy.de?url=http://www.seite.de um, so das jeder Klick immer über den Proxy läuft.

Bis hier: Ist diese Vorgehensweise richtig?

Oki, also mal angenommen das isse, dann kommen erst die richtigen Probleme!
- was macht man mit JavaScript bzw. Ajax?
- was mit flash-inhalten?

Der Proxy müsste ja für *alles* den Zwischenhändler spielen, damit es vollständig funktionieren kann.

JavaScript / Ajax: URLs werden ja umgeschrieben, so das Ajax nicht auf dasIstDieWebsite.net sondern auf http://www.dasIstDerProxy.de?website_url=http://dasIstDieWebsite.net zugreift. wenn dann per JavaScript eine Ajax-Anfrage gemacht wird, müsste die gehen. Der Proxy liefert Ajax dann ja genau das gleiche wie normal.

Nech?

Nu wirds aber kritisch: Flash!! Ich verstehe von Flash nicht viel. Das sind SWF-Dateien, aber die kann ich doch nicht einfach durch den Proxy schicken, oder?

Und dann die letzte Frage: Das ist sicher nix neues, und vielleicht gibt es so ein Proxy schon als open-source irgendwo. So das man eben nur noch selbst den Quellcode anpassen muss, falls man was anpassen will.

Ach ja, falls sich jemand fragt wieso weshalb warum: Will einfach mal was ausprobieren :)
Ich weis, das es tausende Proxys gibt, und etliche Translation-Dienste. Hobby eben ;)

Gruß
Laura
 
Wenn du das Laden des Zielinhaltes richtig umsetzt werden auch Flash-Filme kein Problem sein. Du müsstest hald je nach Dateityp überprüfen ob nun die Daten manipuliert werden sollen. Problematisch wird es wenn die Flash-Filme externe Daten laden. Du könntest dich natürlich auch in das SWF Format einlesen um die SWF Datei so zu manipulieren sodass auch diese Links ersetzt werden. Aber das wäre natürlich sehr viel Aufwand.
 
Bei den meisten PHP-Proys (oder andere Sprachen) wird JavaScript gefiltert und das Flash entweder so ausgegeben oder auch gefiltert, perfekt kann man es ohne Client-Software nicht machen, denn neben Flash würde es ja noch andere Dinge geben, Java und weiß der Kuckuck noch was ;)
 
SWF zu manipulieren halte ich für eine Lebensaufgabe ;) ist das nicht reiner Maschinencode? Das wird doch kompiliert oder?

ok also der Proxy müsste eben die Pfade zu den SWF's anpassen so das sie wenigstens vom Originalserver geladen werden. Jetzt weis ich gerade nicht, ob Flash da Stress macht, wenn die SWF's auf einem anderen Server liegen als der, der den HTML-Quellcode ausgibt. Also das Ajax-Problem.

Bei den meisten PHP-Proxys [...]

gibts denn schon fertige Proxys die ich als Basis für alles weitere nutzen könnte?

Das wäre mein Ansatz für einen Proxy:
Code:
$proxy = curl_init($url);
curl_exec($ch);
curl_close($ch);

es funktioniert auch!

aber schätze mal das ist noch viel zu einfach.

Was ist z.B. mit Cookies Also Session-Cookies z.B! Die müssten doch auch vom Proxy erkannt, und dann von da aus nochmal an den Client geschickt werden. Vor allem die Session-Cookies sind das große Problem, glaube ich.

Denn der Proxy sollte auch im eingeloggten Zustand funktionieren - wenn schon, denn schon :)

bieten die curl_ funktionen von PHP da was?

Gruß
Laura
 
Achso, falls Flash Filme nachlädt oder Dateien hatte ich noch ne Idee, wie man das lösen kann :-)
Du musst deinen Apache so konfigurieren, dass 404er Anfragen in einem Script landen, denn dann fragt das Flash anch ner Datei, die er net hat, jetzt musst du es nur noch schaffen, dass du weisst, von welcher Webseite der Request kam (wenn man nur mit einem Proxy-Fenster surft ist es kein Problem) und du kannst auch die Flash-Anfragen weiterleiten ;)
 
hmm... klingt interessant. Aber erstmal muss ich nen Proxy hinkriegen. Die Proxy-Scripte die ich so gefunden und gestestet habe laufen alle nicht richtig, immer wieder funktioniert eine Seite net und wenn man sich einloggt gehen die Session-Cookies nicht immer.

Habe Dennis Wronka's httpconnection-Class runter geladen. Mal gucken ob man daraus einen Proxy basteln kann. Werds versuchen...

das größte Problem sind aber die Cookies, weil der Proxy die ja irgendwo speichern muss, und dem Browser des Proxy-Benutzers weiterreichen muss, aber im Namen des Proxy - also so das der Proxy selber auch Zugriff drauf hat:

Server schickt Session-Cookie im Header mit, Proxy holt Content mit Header, speichert Session-Cookie und verpasst dem Client eins mit gleichem Inhalt und gleicher Bezeichnung. Das Session-Cookie wird dann bei jeder Anfrage dem Proxy übergeben, der es wiederum an den Server weiter reicht. So als wär er der Client. Damit der Server weis, was er tun muss.

Habe im mom keinen Plan wie man das realisieren kann... und dann noch Multi-User-fähig, also so das 10 Leute gleichzeitig den Proxy benutzen können.

Gruß
Laura
 
1. User benutzt den Poxy und für ihn wird eine Session gestartet
2. User kommt auf eine Seite die Cookies nutzt
3. Die Cookies aus dem Http-Request, der durch den Proxy geleitet wird, werden in der unter Punkt 1 gestarten Session gespeichert
4. Bei einem weiteren Zugriff auf Seiten aus Punkt 2 werden die zuständigen Cookies aus Punkt 3 mitgesendet

Wo ist das Problem?
 
Zurück