Intégration

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

Support natif pour HttpClient, RestSharp, Flurl, HttpWebRequest et tout client HTTP .NET acceptant un WebProxy
Rotation par requête par défaut, avec `sid` pour les sessions persistantes et `ttl-N` pour des épinglages temporisés de N secondes
Support des navigateurs sans interface graphique via Selenium WebDriver et Playwright pour .NET
Protocoles HTTP, HTTPS et SOCKS5 sur le même point d'accès passerelle
Ciblage géographique dans 195+ pays via des paramètres de nom d'utilisateur, sans package supplémentaire requis
Compatible avec .NET 6, .NET 7, .NET 8 et .NET Framework 4.7.2+ -- fonctionne avec C#, F#, VB.NET

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);
FAQ

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

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.

Essayez Shifter gratuitementConfiguration en quelques minutes. Annulez à tout moment.