Integração

Use a Shifter com C# / .NET

Conecte os proxies residenciais e ISP da Shifter a qualquer projeto .NET, HttpClient, RestSharp, Flurl, Selenium e Playwright, sem tocar na sua lógica de negócios.

Início Rápido

Instalar

dotnet add package System.Net.Http

Uso Básico

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", ...}

Recursos

Suporte plug-and-play para HttpClient, RestSharp, Flurl, HttpWebRequest e qualquer cliente HTTP .NET que aceite um WebProxy
Rotação por requisição por padrão, com `sid` para sessões persistentes e `ttl-N` para fixações por tempo de N segundos
Suporte a navegador headless via Selenium WebDriver e Playwright para .NET
Protocolos HTTP, HTTPS e SOCKS5 no mesmo endpoint de gateway
Geo-direcionamento em 195+ países via parâmetros de nome de usuário, sem necessidade de pacote adicional
Compatível com .NET 6, .NET 7, .NET 8 e .NET Framework 4.7.2+; funciona com C#, F#, VB.NET

Exemplos

HttpClient com Sessão Persistente

O cliente HTTP padrão do .NET. Configure uma vez e compartilhe em todo o aplicativo por meio do IHttpClientFactory ou de um singleton: o mesmo IP residencial será reutilizado em cada requisição com um `sid` correspondente.

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

O RestSharp encapsula o HttpClient com um builder fluente, desserialização automática de JSON e políticas de retry. Configure o proxy em 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)

Execute uma instância real de Chrome / Edge / Firefox através do Shifter para alvos renderizados em JavaScript. Combine com a whitelist de IP do Shifter para autenticação headless.

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 para .NET

O Microsoft Playwright controla o Chromium, o Firefox e o WebKit a partir do C#. Configure o proxy nas opções de inicialização, com credenciais inline, sem necessidade de extensão.

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);
Perguntas Frequentes

Perguntas frequentes

Perguntas comuns sobre usar o Shifter com C# / .NET.

Crie um WebProxy apontando para `http://p.shifter.io:443` com Credentials definido como um NetworkCredential contendo seu nome de usuário e senha do Shifter. Passe-o para um HttpClientHandler com UseProxy = true e forneça esse handler a um novo HttpClient. O mesmo cliente pode ser compartilhado com segurança em todo o aplicativo via IHttpClientFactory.

Defina a propriedade Proxy em RestClientOptions para um WebProxy com NetworkCredential. O RestSharp envolve o HttpClient subjacente — toda solicitação que o RestClient fizer será roteada pela Shifter. Compatível com RestSharp 110+.

Sim. Defina o campo Proxy nas BrowserTypeLaunchOptions do Playwright com Server, Username e Password. A mesma configuração funciona para Chromium, Firefox e WebKit. Nenhuma extensão é necessária, as credenciais são passadas inline.

Adicione um ID de sessão ao nome de usuário do proxy, por exemplo, `customer-USERNAME-country-us-sid-123ABC`. Toda requisição .NET que autenticar com o mesmo sid reutilizará o mesmo IP residencial. Adicione `ttl-N` para fixar esse IP por até N segundos.

Sim. Registre um HttpClient nomeado via IHttpClientFactory no Program.cs, configure seu handler para usar um WebProxy do Shifter, e injete IHttpClientFactory.CreateClient("shifter") onde precisar. Funciona em MVC, Minimal APIs e Blazor.

Nenhum pacote NuGet é necessário. A Shifter fala HTTP / SOCKS5 puro, aponte seu HttpClient existente para `p.shifter.io:443`. Isso mantém seu arquivo de projeto enxuto e funciona em .NET Framework, .NET Core e .NET 5+.

Começar

Comece a Usar o Shifter com C# / .NET

Adicione os proxies residenciais e ISP 205M+ da Shifter à sua stack .NET em menos de 5 minutos. Funciona com HttpClient, RestSharp, Selenium e Playwright.

Experimente o Shifter GratuitamenteConfigure em minutos. Cancele quando quiser.