Am Ende dieses Leitfadens zur HttpClient C# Proxy-Integration wissen Sie:
- Was HttpClient ist und welche Rolle es bei HTTP-Anfragen in .NET spielt
- Warum Sie einen Proxy in C# verwenden sollten
- Wie Sie einen Proxy in HttpClient einrichten
- Wie Sie Proxy-Authentifizierung, SSL-Zertifikatsfehler und IP-Rotation mit HttpClient handhaben.
Legen wir los!
Was Ist HttpClient in .NET?
HttpClient ist eine Klasse zum Senden von HTTP-Anfragen und Empfangen von HTTP-Antworten in .NET. Sie ist Teil des Namespaces System.Net.Http und stellt den Standard-HTTP-Client in .NET dar – und damit auch in C#.
HttpClient unterstützt:
- Alle HTTP-Methoden, einschließlich GET, POST, PUT, PATCH und DELETE
- Asynchrone Kommunikation
- Anpassung von Headern und Cookies
- Anpassung des Anfrage-Bodys
- Proxy-Integration
Diese Funktionen, zusammen mit der offiziellen Unterstützung in der .NET Standard Library, machen HttpClient zu einer beliebten Wahl für HTTP-Anfragen in C#.
Warum Sie einen Proxy in C# HttpClient Einrichten Müssen
Bei Web-Scraping, Datenerfassung oder anderen internetbezogenen Aufgaben ist der Schutz Ihrer Online-Identität entscheidend. Eine Möglichkeit, dies zu erreichen, besteht darin, Ihren Traffic über einen Proxyserver zu leiten.
Ein Proxyserver fungiert als Vermittler zwischen Ihnen und der Zielseite und bietet HttpClient folgende Vorteile:
- Verborgene IP und Standort: Die Zielserver sehen die IP des Proxys, nicht Ihre eigene.
- Erhöhte Vertraulichkeit: Proxys fügen eine Schutzschicht hinzu, indem sie Ihre echte Identität verschleiern und es schwieriger machen, Sie zu verfolgen.
- IP-Sperren vermeiden: Proxys helfen Ihnen, Ratenbegrenzer zu umgehen, was beim Web-Scraping mit C# grundlegend ist.
- Geo-Beschränkungen umgehen: Sie können Proxyserver in bestimmten Regionen nutzen, um geobeschränkte Inhalte von zu Hause aus zu erreichen.
Die Verwendung von Proxys in HttpClient erhöht somit nicht nur Ihre Online-Sicherheit, sondern verbessert auch die Zuverlässigkeit Ihrer Scraping-Aufgaben.
Einen Proxy mit HttpClient in C# Einrichten: Schritt-für-Schritt-Anleitung
Folgen Sie den untenstehenden Schritten, um zu lernen, wie Sie einen Proxy in HttpClient in .NET mit C# integrieren.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
- Eine C#-IDE: Sie können entweder Visual Studio oder Visual Studio Code verwenden. In diesem Leitfaden verwenden wir Visual Studio Code mit der C#-Erweiterung.
- .NET 8+ lokal installiert: Sie benötigen die neueste Version von .NET oder eine LTS-Version größer oder gleich .NET 8. In diesem Tutorial verwenden wir .NET 9.
Falls Sie die erforderlichen Tools nicht haben, laden Sie sie über den obigen Link herunter und folgen Sie dem Installationsassistenten.
Schritt 1: Projekt Einrichten
Erstellen Sie einen neuen Ordner für Ihr .NET-Projekt und navigieren Sie im Terminal mit den folgenden Befehlen dorthin:
mkdir httpclient-proxy
cd httpclient-proxy
Initialisieren Sie als Nächstes eine neue .NET-Konsolenanwendung darin:
dotnet run console
Die Ausgabe sollte lauten:
The template "Console App" was created successfully.
Öffnen Sie nun den Projektordner in Ihrer IDE:

Sie sollten die vom Template erzeugten Dateien sehen, wobei Program.cs die wichtigste ist. Derzeit enthält sie ein einfaches “Hello, World!”-Skript. Am Ende dieses Abschnitts wird daraus ein HttpClient C# Proxy-Integrationsskript.
Um sicherzustellen, dass alles wie erwartet funktioniert, versuchen Sie, die C#-Anwendung zu starten mit:
dotnet run
Das Ergebnis sollte sein:
Hello, World!
Großartig! Sie haben nun ein funktionierendes C#-Projekt in Visual Studio Code.
Schritt 2: HttpClient Einrichten
Fügen Sie die folgenden Codezeilen zu Program.cs hinzu, um eine Anfrage mit HttpClient zu senden:
using System.Net;
class Program
{
static async Task Main()
{
// initialize an HttpClient instance
using HttpClient client = new HttpClient();
// the target URL
string url = "https://httpbin.org/ip";
// send an async GET request to the endpoint
HttpResponseMessage response = await client.GetAsync(url);
// read the response content as a string
string responseBody = await response.Content.ReadAsStringAsync();
// print the response to the console
Console.WriteLine(responseBody);
}
}
Das Snippet initialisiert eine HttpClient-Instanz und verwendet ihre GetAsync()-Methode, um sich mit dem /ip GET-Endpunkt des HTTPBin.io-Projekts zu verbinden. Diese API gibt die IP-Adresse des Aufrufers zurück, was sie zu einem perfekten Ziel macht, um zu überprüfen, ob die Proxy-Integration wie erwartet funktioniert. Der Grund? Sobald Sie einen Proxy in HttpClient integrieren, muss die vom /ip-Endpunkt zurückgegebene IP von Ihrer ursprünglichen IP abweichen.
Wenn Sie das Skript ausführen, sollte die Ausgabe etwa so aussehen:
{
"origin": "55.17.80.196"
}
Die in origin enthaltene IP-Adresse stellt Ihre ausgehende IP dar.
Hervorragend! Zeit, eine gültige Proxy-URL zu besorgen.
Schritt 3: Einen Proxy Besorgen
Um einen Proxy in HttpClient zu integrieren, benötigen Sie zunächst Zugriff auf einen Proxyserver.
Viele Online-Portale bieten kostenlose Proxy-URLs an, aber seien Sie vorsichtig – der Betrieb einer Proxy-Infrastruktur ist teuer. Wenn ein Dienst kostenlose Proxys anbietet, überlegen Sie, wie dessen Geschäftsmodell aussehen könnte. Oft betreiben diese Dienste Datendiebstahl oder andere fragwürdige Praktiken.
Aus diesem Grund ist es am besten, kostenlose Proxys nur zu Lernzwecken zu verwenden und sie nicht im produktiven Einsatz zu nutzen!
Wenn Sie zuverlässige Proxys benötigen, sollten Sie seriöse Anbieter in Betracht ziehen, die kostenlose Testversionen oder begrenzte kostenlose Pläne anbieten.
Eine typische Proxy-URL folgt diesem Format:
<protocol>://<host>:<port>
Dabei gilt:
protocolgibt den Proxy-Typ an (z. B.http,https,socks5usw.)host: Die Domain oder IP-Adresse des Proxyserversport: Die Portnummer, über die der Traffic geleitet wird
In diesem Beispiel gehen wir davon aus, dass die Proxy-URL lautet:
http://66.29.154.103:3128
Speichern Sie dies in einer Variable in Program.cs:
string proxyUrl = "http://66.29.154.103:3128";
Zeit, zu sehen, wie man einen Proxy mit HttpClient verwendet!
Schritt 4: Proxy-Integration
HttpClient ermöglicht es Ihnen, einen Proxy über die Klasse HttpClientHandler anzugeben. Diese bietet eine Low-Level-Kontrolle über die von einer HttpClient-Instanz gesendeten HTTP-Anfragen.
Im Besonderen hat HttpClientHandler eine Proxy-Eigenschaft, die ein WebProxy-Objekt mit den Proxyserver-Einstellungen akzeptiert:
WebProxy proxy = new WebProxy
{
Address = new Uri(proxyUrl),
};
Übergeben Sie dann proxy an eine HttpClientHandler-Instanz:
HttpClientHandler handler = new HttpClientHandler
{
Proxy = proxy,
};
Und schließlich übergeben Sie HttpClientHandler an den HttpClient-Konstruktor:
using HttpClient client = new HttpClient(handler);
Wunderbar! HttpClient C# Proxy-Integration abgeschlossen.
Schritt 5: Alles Zusammenfügen
Ihr fertiges HttpClient-Proxy-Integrationsskript sollte Folgendes enthalten:
using System.Net;
class Program
{
static async Task Main()
{
// initialize a new proxy object
string proxyUrl = "http://66.29.154.103:3128"; // replace with a valid proxy URL
WebProxy proxy = new WebProxy
{
Address = new Uri(proxyUrl),
};
// define an HTTP client handler with the given proxy
HttpClientHandler handler = new HttpClientHandler
{
Proxy = proxy,
};
// initialize an HttpClient instance with proxy integration
using HttpClient client = new HttpClient(handler);
// the target URL
string url = "https://httpbin.org/ip";
// send an async GET request to the endpoint
HttpResponseMessage response = await client.GetAsync(url);
// read the response content as a string
string responseBody = await response.Content.ReadAsStringAsync();
// print the response to the console
Console.WriteLine(responseBody);
}
}
Führen Sie das Skript aus:
dotnet run
Das Ergebnis sollte sein:
{
"origin": "66.29.154.103"
}
Beachten Sie, dass das origin-Attribut in der Antwort des /ip-Endpunkts die IP-Adresse des Proxyservers anzeigt. Dies bestätigt, dass Ihre echte IP erfolgreich hinter dem Proxy verborgen wurde.
Warnung: Kostenlose Proxyserver sind in der Regel kurzlebig und unzuverlässig. Wenn Sie diesen Leitfaden lesen, wird der gewählte Proxy wahrscheinlich nicht mehr funktionieren. Um den Code zu testen, ersetzen Sie proxyUrl durch eine gültige, funktionierende Proxy-URL, bevor Sie das Skript ausführen.
Fortgeschrittene Anwendungsfälle für die HttpClient-Proxy-Integration
Sie haben gerade die Grundlagen der Proxy-Integration mit HttpClient in C# kennengelernt, aber es gibt weitere, fortgeschrittenere Szenarien zu beachten.
Proxy-Authentifizierung
Premium-Proxys sind durch Authentifizierung geschützt, um den Zugriff auf autorisierte Benutzer zu beschränken. Konkret folgt die URL eines authentifizierten Proxys diesem Format:
<protocol>://<username>:<password>@<host>:<port>
Dabei sind username und password die für die Authentifizierung verwendeten Anmeldedaten.
In HttpClient wird die Proxy-Authentifizierung über die Credentials-Eigenschaft von WebProxy gehandhabt. Diese Eigenschaft akzeptiert ein NetworkCredential-Objekt wie folgt:
WebProxy proxy = new WebProxy
{
Address = new Uri(proxyUrl),
// specify proxy authentication
Credentials = new NetworkCredential("<username>", "<password>"),
};
Extrahieren Sie <username> und <password> aus Ihrer authentifizierten Proxy-URL und ersetzen Sie sie im obigen Code.
Der Code für die authentifizierte Proxy-Integration sieht also so aus:
using System.Net;
class Program
{
static async Task Main()
{
// initialize a new proxy object
string proxyUrl = "<protocol>://<host>:<port>";
WebProxy proxy = new WebProxy
{
Address = new Uri(proxyUrl),
// specify proxy authentication
Credentials = new NetworkCredential("<username>", "<password>"),
};
// define an HTTP client handler with the given proxy
HttpClientHandler handler = new HttpClientHandler
{
Proxy = proxy,
};
// initialize an HttpClient instance with authenticated proxy integration
using HttpClient client = new HttpClient(handler);
// the target URL
string url = "https://httpbin.org/ip";
// send an async GET request to the endpoint
HttpResponseMessage response = await client.GetAsync(url);
// read the response content as a string
string responseBody = await response.Content.ReadAsStringAsync();
// print the response to the console
Console.WriteLine(responseBody);
}
}
SSL-Zertifikatsprobleme Vermeiden
Beim Einrichten eines Proxys in HttpClient können Ihre Anfragen aufgrund des folgenden SSL-Zertifikatsüberprüfungsfehlers fehlschlagen:
Unhandled exception. System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot
Dies geschieht typischerweise, wenn der Proxy ein selbstsigniertes SSL-Zertifikat verwendet.
Wenn Sie Ihrem Proxyserver vertrauen – und nur in diesem Fall – können Sie die SSL-Überprüfung mit folgendem Ansatz deaktivieren, um dieses Problem zu umgehen:
HttpClientHandler handler = new HttpClientHandler();
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, cetChain, policyErrors) =>
{
return true;
};
using HttpClient client = new HttpClient(handler);
Das obige Snippet überschreibt das Standardverhalten der Zertifikatsvalidierung mit einem benutzerdefinierten Callback, der immer true zurückgibt.
Hinweis: Das Deaktivieren der SSL-Überprüfung macht Ihre Verbindung anfällig für MITM (Man-in-the-Middle)-Angriffe. Verwenden Sie diesen Ansatz nur, wenn Sie Ihrem Proxy vollständig vertrauen und sich der Sicherheitsrisiken bewusst sind.
Proxy-Rotation Implementieren
Wenn Sie sich wiederholt auf denselben Proxyserver verlassen, könnte die Zielseite irgendwann dessen IP-Adresse sperren. Um dies zu vermeiden, können Sie Ihre Proxyserver für jede Anfrage rotieren, sodass Ihre Anfragen jedes Mal einen anderen Proxyserver verwenden.
Um die Proxy-Rotation zu implementieren, folgen Sie diesem Verfahren
- Füllen Sie eine Liste mit vielen Proxy-URLs
- Wählen Sie vor jeder Anfrage zufällig eine Proxy-URL aus
- Legen Sie die gewählte Proxy-URL in HttpClient fest
Der obige Algorithmus ergibt folgendes Snippet:
using System.Net;
class Program
{
static async Task Main()
{
// get a random proxy URL
string selectedProxyUrl = GetRandomProxyUrl();
// configure the random proxy
HttpClientHandler handler = new HttpClientHandler
{
Proxy = new WebProxy
{
Address = new Uri(selectedProxyUrl),
},
};
// perform a GET request through the random proxy
using HttpClient client = new HttpClient(handler);
string url = "https://httpbin.org/ip";
HttpResponseMessage response = await client.GetAsync(url);
// read the response content as a string and print it
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
static string GetRandomProxyUrl()
{
// the list of proxy URL to rotate from
List<string> proxyUrls = new List<string>
{
"<protocol_1>://<proxy_host_1>:<port_1>",
// ...
"<protocol_n>://<proxy_host_n>:<port_n>",
};
// return a random proxy URL from the list
Random random = new Random();
int index = random.Next(proxyUrls.Count);
return proxyUrls[index];
}
}
Die Hauptnachteile dieses Ansatzes sind:
- Er erfordert Boilerplate-Code
- Er erfordert Zugriff auf einen Pool zuverlässiger Proxyserver, was in der Regel Kosten verursacht
Glücklicherweise gibt es eine effizientere Lösung, um eine IP-Adresse in C# zu rotieren!
Bright Data bietet rotierende Proxys, die die ausgehenden IP-Adressen automatisch rotieren und so die manuelle Proxy-Rotation überflüssig machen. Sie verfügen über rund 100 Millionen IPs, sind in 195 Ländern verfügbar, bieten eine außergewöhnliche Netzwerkverfügbarkeit und garantieren eine Erfolgsquote von 99,9 %.
Im nächsten Kapitel erfahren Sie, wie Sie mit den rotierenden Proxys von Bright Data in HttpClient beginnen können.
Einen Bright Data Proxy in HttpClient Verwenden
Bright Data betreibt einen der größten Proxyserver der Welt und bedient Fortune-500-Unternehmen sowie 50,000+ Kunden. Dieses weltweite Proxy-Netzwerk umfasst:
- Datacenter-Proxys – Über 1,300,000+ Datacenter-IPs.
- Residential-Proxys – Über 400M+ Residential-IPs in mehr als 195 Ländern.
- ISP-Proxys – Über 1,300,000+ ISP-IPs.
Folgen Sie den untenstehenden Schritten, um zu lernen, wie Sie die Residential-Proxys von Bright Data mit HttpClient in C# verwenden.
Wenn Sie bereits ein Konto haben, melden Sie sich bei Bright Data an. Falls nicht, erstellen Sie ein Konto, und nach der Anmeldung werden Sie zu Ihrem Benutzer-Dashboard weitergeleitet:

Klicken Sie auf die Schaltfläche “View proxy products”, um fortzufahren:

Sie werden zur Seite “Proxies & Scraping Infrastructure” weitergeleitet:

Scrollen Sie nach unten und suchen Sie die Karte “Residential Proxies”. Klicken Sie auf die Schaltfläche “Get started”:

Folgen Sie auf der Konfigurationsseite für Residential-Proxys dem Assistenten, um den Dienst nach Ihren Bedürfnissen anzupassen. Bei Fragen können Sie sich gerne an den 24/7-Support wenden:

Gehen Sie zum Tab “Access parameters”, um Host, Port, Benutzername und Passwort Ihres Proxys abzurufen:

Beachten Sie, dass das Feld “Host” den Port enthält.
Jetzt, da Sie die nötigen Details haben, erstellen Sie Ihre Proxy-URL und verwenden Sie sie mit dem WebProxy-Objekt in C#:
WebProxy proxy = new WebProxy
{
Address = new Uri("http://<brightdata_proxy_host>:<brightdata_proxy_port>"),
Credentials = new NetworkCredential("<brightdata_proxy_username>", "<brightdata_proxy_password>"),
};
Ersetzen Sie die Platzhalter <...> durch die Proxy-Informationen von Bright Data.
Aktivieren Sie die Einstellung “Active proxy”, folgen Sie den verbleibenden Anweisungen, und schon sind Sie startklar!
Verwenden Sie das folgende C#-Codebeispiel, um den Proxy von Bright Data in HttpClient zu integrieren:
using System.Net;
class Program
{
static async Task Main()
{
// initialize a new proxy object
WebProxy proxy = new WebProxy
{
// TODO: replace the placeholders with your Bright Data's proxy info
Address = new Uri("http://<brightdata_proxy_host>:<brightdata_proxy_port>"),
Credentials = new NetworkCredential("<brightdata_proxy_username>", "<brightdata_proxy_password>"),
};
// define an HTTP client handler with the given proxy
HttpClientHandler handler = new HttpClientHandler
{
Proxy = proxy,
};
// disable SSL verification
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, cetChain, policyErrors) =>
{
return true;
};
// initialize an HttpClient instance with proxy integration
using HttpClient client = new HttpClient(handler);
// the target URL
string url = "https://httpbin.org/ip";
// send an async GET request to the endpoint
HttpResponseMessage response = await client.GetAsync(url);
// read the response content as a string
string responseBody = await response.Content.ReadAsStringAsync();
// print the response to the console
Console.WriteLine(responseBody);
}
}
Jedes Mal, wenn Sie das obige Skript ausführen, sehen Sie eine andere ausgehende IP.
HttpClient-Proxy-Rotation war mit den automatisch rotierenden Proxys von Bright Data noch nie so einfach!
Fazit
In diesem Tutorial zur Proxy-Integration haben Sie gelernt, warum die Verwendung von Proxys wichtig ist und wie Sie sie mit HttpClient in C# integrieren. Sie haben entdeckt, wie einfach es ist, einen Proxy in HttpClient, der Standard-HTTP-Clientbibliothek in .NET, einzurichten.
Durch diesen Leitfaden haben Sie außerdem verstanden, warum das Verlassen auf kostenlose Proxy-Dienste riskant ist. Stattdessen sollten Sie zuverlässige Proxys von einem seriösen Proxy-Anbieter verwenden. Und wenn es um den besten Anbieter für rotierende Proxys auf dem Markt geht, müssen Sie nicht weiter suchen als Bright Data.
Erstellen Sie ein Konto und testen Sie unsere Proxys noch heute kostenlos!