Utilisez Shifter avec C# / .NET
Intégrez les proxies résidentiels et ISP de Shifter dans n'importe quel projet .NET -- HttpClient, RestSharp, Flurl, Selenium et Playwright -- sans toucher à votre logique métier.
Démarrage rapide
Installer
dotnet add package System.Net.Http Utilisation de base
using System.Net;
using System.Net.Http;
var proxy = new WebProxy("http://p.shifter.io:443") {
Credentials = new NetworkCredential(
"customer-USERNAME-country-us-sid-123ABC",
"PASSWORD"
)
};
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true };
using var client = new HttpClient(handler) {
Timeout = TimeSpan.FromSeconds(30)
};
var json = await client.GetStringAsync("https://ipinfo.io/json");
Console.WriteLine(json);
// {"ip": "154.16.xxx.xxx", "city": "New York", "country": "US", ...} Fonctionnalités
Exemples
HttpClient avec session persistante
Le client HTTP standard de .NET. Configurez-le une fois, partagez-le dans toute l'application via IHttpClientFactory ou un singleton -- la même IP résidentielle sera réutilisée pour chaque requête avec un `sid` correspondant.
using System.Net;
using System.Net.Http;
static HttpClient ShifterClient(string country, string city, string sid)
{
var proxy = new WebProxy("http://p.shifter.io:443") {
Credentials = new NetworkCredential(
$"customer-USERNAME-country-{country}-city-{city}-sid-{sid}-ttl-300",
"PASSWORD"
)
};
var handler = new HttpClientHandler {
Proxy = proxy,
UseProxy = true,
AutomaticDecompression = DecompressionMethods.All
};
var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };
client.DefaultRequestHeaders.Add("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
return client;
}
var c = ShifterClient("uk", "london", Guid.NewGuid().ToString("N")[..8]);
foreach (var path in new[] { "/login", "/dashboard", "/orders" })
{
var resp = await c.GetAsync($"https://example.co.uk{path}");
Console.WriteLine($"{path} {(int)resp.StatusCode} {(await resp.Content.ReadAsStringAsync()).Length}");
} RestSharp
RestSharp encapsule HttpClient avec un constructeur fluide, une désérialisation JSON automatique et des politiques de nouvelle tentative. Configurez le proxy sur les RestClientOptions.
using RestSharp;
using System.Net;
public record Product(int Id, string Name, decimal Price);
var options = new RestClientOptions("https://api.example.de") {
Proxy = new WebProxy("http://p.shifter.io:443") {
Credentials = new NetworkCredential(
"customer-USERNAME-country-de-sid-456DEF",
"PASSWORD"
)
},
Timeout = TimeSpan.FromSeconds(30)
};
var client = new RestClient(options);
var request = new RestRequest("/products");
request.AddHeader("User-Agent",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36");
var products = await client.GetAsync<List<Product>>(request);
foreach (var p in products!)
Console.WriteLine($"{p.Id} {p.Name} — {p.Price:C}"); Selenium WebDriver (.NET)
Pilotez une vraie instance Chrome / Edge / Firefox via Shifter pour les cibles rendues par JavaScript. Associez à la liste blanche d'IP de Shifter pour l'authentification sans interface graphique.
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Proxy = OpenQA.Selenium.Proxy;
var seleniumProxy = new Proxy {
HttpProxy = "p.shifter.io:443",
SslProxy = "p.shifter.io:443"
};
var options = new ChromeOptions { Proxy = seleniumProxy };
options.AddArguments("--headless=new",
"--user-agent=Mozilla/5.0 (Linux) AppleWebKit/537.36");
// For username-password auth in headless mode, pair with Shifter's
// IP whitelist or use selenium-wire — Chrome ignores credentials in
// headless mode without a sidecar extension.
using var driver = new ChromeDriver(options);
driver.Navigate().GoToUrl("https://example.com");
var title = driver.Title;
var html = driver.PageSource;
Console.WriteLine($"{title} — {html.Length} bytes"); Playwright pour .NET
Microsoft Playwright pilote Chromium, Firefox et WebKit depuis C#. Configurez le proxy dans les options de lancement -- identifiants intégrés, aucune extension requise.
using Microsoft.Playwright;
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync(new() {
Proxy = new() {
Server = "http://p.shifter.io:443",
Username = "customer-USERNAME-country-fr-city-paris-sid-789GHI",
Password = "PASSWORD"
}
});
var context = await browser.NewContextAsync(new() {
UserAgent = "Mozilla/5.0 (Windows) AppleWebKit/537.36"
});
var page = await context.NewPageAsync();
await page.GotoAsync("https://example.fr");
var headlines = await page.Locator(".headline").AllTextContentsAsync();
foreach (var h in headlines)
Console.WriteLine(h); Foire aux questions
Questions fréquentes sur l'utilisation de Shifter avec C# / .NET.
Créez un WebProxy pointant vers `http://p.shifter.io:443` avec des identifiants définis dans un NetworkCredential contenant votre nom d'utilisateur et mot de passe Shifter. Transmettez-le à un HttpClientHandler avec UseProxy = true et fournissez ce handler à un nouvel HttpClient. Le même client peut être partagé en toute sécurité dans l'application via IHttpClientFactory.
Définissez la propriété Proxy sur RestClientOptions avec un WebProxy et des NetworkCredential. RestSharp encapsule le HttpClient sous-jacent -- chaque requête effectuée par le RestClient sera acheminée via Shifter. Compatible avec RestSharp 110+.
Oui. Définissez le champ Proxy dans les BrowserTypeLaunchOptions de Playwright avec Server, Username et Password. La même configuration fonctionne pour Chromium, Firefox et WebKit. Aucune extension requise -- les identifiants sont passés directement.
Ajoutez un identifiant de session au nom d'utilisateur du proxy -- par exemple `customer-USERNAME-country-us-sid-123ABC`. Chaque requête .NET qui s'authentifie avec le même sid réutilisera la même IP résidentielle. Ajoutez `ttl-N` pour épingler cette IP pendant N secondes au maximum.
Oui. Enregistrez un HttpClient nommé via IHttpClientFactory dans Program.cs, configurez son handler pour utiliser un WebProxy Shifter, et injectez IHttpClientFactory.CreateClient("shifter") partout où vous en avez besoin. Fonctionne avec MVC, les Minimal APIs et Blazor.
Aucun package NuGet n'est requis. Shifter utilise le protocole HTTP / SOCKS5 standard -- pointez votre HttpClient existant vers `p.shifter.io:443`. Cela garde votre fichier de projet léger et fonctionne avec .NET Framework, .NET Core et .NET 5+.
Commencer à utiliser Shifter avec C# / .NET
Ajoutez les 205M+ proxies résidentiels et ISP de Shifter à votre stack .NET en moins de 5 minutes. Compatible avec HttpClient, RestSharp, Selenium et Playwright.