Die Verwendung von Proxys in Rust mit reqwest erfordert die Konfiguration eines ClientBuilder mit Proxy-Einstellungen, während hyper als HTTP-Bibliothek auf niedrigerer Ebene eine manuelle Verbindungsherstellung über einen Proxy-Server erfordert.
Proxy-Server fungieren als Vermittler für Netzwerkanfragen und bieten Vorteile wie Anonymität, Zugriff auf geografisch eingeschränkte Inhalte, Lastausgleich und Datenverkehrsfilterung. Rusts asynchrone HTTP-Clients, reqwest und hyper, bieten unterschiedliche Ansätze zur Integration von Proxy-Funktionalität. reqwest bietet eine hochrangige, integrierte Unterstützung, während hyper eine granularere Kontrolle über den Verbindungsprozess erfordert.
Proxys mit reqwest verwenden
reqwest ist ein beliebter, benutzerfreundlicher HTTP-Client für Rust, der auf hyper aufbaut. Er vereinfacht gängige HTTP-Aufgaben, einschließlich der Proxy-Konfiguration. Der ClientBuilder von reqwest bietet Methoden zur Einrichtung verschiedener Proxy-Typen.
Proxy-Konfiguration
Um einen Proxy mit reqwest zu verwenden, erstellen Sie eine reqwest::Client-Instanz mit reqwest::ClientBuilder und dessen proxy()-Methode. Die proxy()-Methode akzeptiert ein reqwest::Proxy-Objekt, das für verschiedene Proxy-Schemata konstruiert werden kann:
- HTTP-Proxy: Konfiguriert mit
Proxy::http(url), für reine HTTP-Anfragen. - HTTPS-Proxy (CONNECT-Methode): Konfiguriert mit
Proxy::https(url), für HTTPS-Anfragen.reqwestverwendet dieCONNECT-Methode, um die TLS-Verbindung durch den Proxy zu tunneln. - SOCKS5-Proxy: Konfiguriert mit
Proxy::socks5(url), für SOCKS5-Proxy-Server. - Einheitlicher Proxy:
Proxy::all(url)konfiguriert einen einzigen Proxy für sowohl HTTP- als auch HTTPS-Anfragen.
Proxy-Authentifizierung
Viele Proxy-Server erfordern eine Authentifizierung. reqwest::Proxy unterstützt die einfache Authentifizierung mittels der basic_auth()-Methode.
Unterstützung von Umgebungsvariablen
Standardmäßig prüft der ClientBuilder von reqwest automatisch auf die Umgebungsvariablen HTTP_PROXY, HTTPS_PROXY und NO_PROXY. Wenn diese gesetzt sind, verwendet reqwest sie, es sei denn,