fproxy v83 — ein lokaler Proxy-Server zur Filterung von http(s)-Traffic

Die 83. Version des Cache- und Anti-Spam-Proxy-Servers für den persönlichen Gebrauch mit flexiblen Einstellungen wurde veröffentlicht.

Hauptfunktionen (alles anpassbar):

  1. Filterung unerwünschter Inhalte (weiße/schwarze Listen für URLs, Cookies verbieten);
  2. Erzwingen und zeitlich unbegrenztes Caching der erhaltenen Daten (vor allem praktisch für Bilder und Skripte);
  3. Korrektur von Webseiteninhalten in Echtzeit (durch Modifikation des Quellcodes in C, es gibt ein Beispiel zur Ersetzung des Inhalts von Klon-Seiten auf stackoverflow mit einem Link zur Originalseite);
  4. Schwarze/weiße Listen von Zertifikaten und Zertifikat-Pinning basierend auf der Liste;
  5. Manipulation der IP-Adresse/Domäne/Pfade/Protokolle der HTTP-Anfrage basierend auf der Konfiguration (solch eine erweiterte Version wie /etc/hosts);
  6. HTTP/HTTPS-Sniffer.

Ideal für das Surfen auf Websites über langsames Internet oder von langsamen Geräten (dank Punkt 1 und 2, aufgrund derer alles ursprünglich entwickelt wurde), aber generell in jedem Fall nützlich.

Der Proxy-Server ist aus Sicherheitsgründen und zur Vereinfachung der Arbeitslogik in drei Teile unterteilt: TLS-Server (beendet Browser-Verbindungen), zentrales Proxy-Modul und Client, der ausgehende Verbindungen beendet.

Das Programm ist für die personalisierte Nutzung ausgelegt, das heißt, alle Konfigurationen und das Verzeichnis der aktuellen Daten des Proxy-Servers sind an einen bestimmten Benutzer oder sogar an ein bestimmtes Browserprofil gebunden. Es ist technisch möglich, den Proxy als systemweiten Daemon zu starten, aber in dieser Form ist es schwierig, eine seiner Hauptfunktionen – aggressives Caching von allem – zu nutzen, da die zwischengespeicherten Daten für jedes Browserprofil unterschiedlich sein können und zur Sicherheit voneinander isoliert werden müssen.

Beispiel für eine Blockierungsliste:

deny nosub all share.yandex.ru browser-updater.yandex.net deny nosub all a.ria.ru # ? deny nosub spec vk.com query /share.php deny nosub spec yastatic.net query /pcode/adfox/loader.js query /share2/share.js deny nosub spec www.youtube.com query /subscribe_widget deny nosub spec pano.img.ria.ru query /adriver/flashplagin/movie.swf deny nosub spec a.ria.ru query /ping deny nosub spec n-ssl.ria.ru query /polling deny nosub spec apis.google.com query /js/plusone.js deny nosub spec yandex.ru pref /clck/safeclick/ pref /clck/click/ pref /clck/jclck/ deny all spec query /tnc # index.ru proxied counter exact /tnc.js # index.ru proxied counter query /pixel.gif # einige Spammer verwenden dies

Beispiel einer Routingliste:

https://my.local.site set proxy none set target http://127.0.0.1:1234/localsite set http_host new.host:1234 .intel.com resolve off set proxy socks5://127.0.0.1:3333

Bei einem Update von einer Version älter als 78 muss der Cache konvertiert werden: in das Arbeitsverzeichnis des Proxy-Servers des Benutzers (uid/gid) gehen und fproxy-cacheconv-78 ausführen (in der Standardkonfiguration wird dieses Programm nicht kompiliert).

Änderungen seit der letzten veröffentlichten Version (80):

  1. fproxy-dashboard hat jetzt die Option, die Größen der Inhalte in Bytes anzuzeigen anstatt in Kbytes;
  2. Unterstützung fehlerhafter Server, die den Header „Connection: close“ ignorieren;
  3. Unterstützung fehlerhafter Server, die einen unkorrekten Header „Content-Encoding: identity“ zurückgeben;
  4. Versand von TLS-Optionen ALPN;
  5. Verbesserung der Funktionalität des TLS-Terminators auf der Clientseite: er unterstützt jetzt nicht nur TLS, sondern auch normale Verbindungen, kann als eigenständiger Daemon arbeiten, der Anfragen über das Netzwerk vom Hauptproxy empfängt und auch seine ausgehenden Verbindungen über einen anderen Proxy leiten, was eine flexible Aufteilung von Aufgaben zwischen Knoten unter schlechten Internetverhältnissen und/oder der Notwendigkeit, den Verkehr an einem entfernten Server unterschiedlicher Vertrauensstufen auszugeben, ermöglicht; die neue Version ist auch benutzerfreundlicher als manuelle Verwendung über die Befehlszeile als Konsolen-TLS-Client mit Proxy-Unterstützung;
  6. Der Build-Prozess wurde vereinfacht, jetzt gibt es ein Makefile anstelle von Shell-Skripten
  7. Vorgedefinierte .deb-Pakete wurden im Repository organisiert (für Debian-Versionen 8-12)
  8. Änderungen an der Konfigurationsdatei, die nicht abwärtskompatibel sind
  9. Neue Konfiguration zur Verwaltung des Routing von Anfragen, die die zuvor getrennten Konfigurationen resolv und die Weiterleitung von ausgehenden Verbindungen zu einem entfernten Server kombiniert und mehrere neue Optionen erhalten hat: jetzt kann für jede URL (Protokoll, Domain, Port, Pfad) festgelegt werden, über welchen Client, über welchen Proxy sie gesendet wird, über dessen DNS-Server die IP-Adresse bestimmt wird (einschließlich der optionalen Delegation dieser Aufgabe an einen externen HTTP- oder SOCKS5-Proxy), oder die Adresse manuell eingetragen werden; es ist auch möglich, das Protokoll, den Port oder den Pfad-Präfix der URL zu ändern.
  10. Unterstützung von SAN-Zertifikaten für IP-Adressen sowohl im Client als auch im Server hinzugefügt (Webbrowser akzeptieren seit einiger Zeit keine IP-Adressen mehr im CommonName)

Zukünftige Pläne:

  1. Unterstützung für CGI/FastCGI/.so-Hooks zur MITM-Verarbeitung von Inhalten, die von Websites empfangen wurden
  2. Profil- und Konfigurationsmanager für Proxy
  3. Interaktive Verwaltung der Zertifikatprüfungen entfernte Websites und von Sperrlisten

Quelle: linux.org.ru

60GB SSD 8Gb DDR4