Integración

Usa Shifter con C# / .NET

Integra los proxies residenciales e ISP de Shifter en cualquier proyecto .NET (HttpClient, RestSharp, Flurl, Selenium y Playwright) sin modificar tu lógica de negocio.

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

Características

Compatibilidad directa con HttpClient, RestSharp, Flurl, HttpWebRequest y cualquier cliente HTTP de .NET que acepte un WebProxy
Rotación por solicitud de forma predeterminada, con `sid` para sesiones persistentes y `ttl-N` para fijar IPs durante N segundos
Compatibilidad con navegadores sin interfaz gráfica mediante Selenium WebDriver y Playwright para .NET
Protocolos HTTP, HTTPS y SOCKS5 en el mismo endpoint de pasarela
Geolocalización en más de 195 países mediante parámetros de nombre de usuario, sin necesidad de ningún paquete adicional
Compatible con .NET 6, .NET 7, .NET 8 y .NET Framework 4.7.2+, funciona con C#, F# y VB.NET

Ejemplos

HttpClient con sesión persistente

El cliente HTTP estándar de .NET. Configúralo una vez y compártelo en toda la aplicación mediante IHttpClientFactory o un singleton: la misma IP residencial se reutilizará en cada solicitud con un `sid` coincidente.

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 envuelve HttpClient con un constructor fluido, deserialización automática de JSON y políticas de reintento. Configura el proxy en 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)

Controla una instancia real de Chrome, Edge o Firefox a través de Shifter para objetivos con JavaScript. Combínalo con la lista blanca de IPs de Shifter para autenticación sin interfaz gráfica.

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

Microsoft Playwright controla Chromium, Firefox y WebKit desde C#. Configura el proxy en las opciones de lanzamiento: credenciales incluidas, sin necesidad de extensión.

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);
Preguntas frecuentes

Preguntas frecuentes

Preguntas frecuentes sobre el uso de Shifter con C# / .NET.

Crea un WebProxy apuntando a `http://p.shifter.io:443` con Credentials configurado como un NetworkCredential que contenga tu nombre de usuario y contraseña de Shifter. Pásalo a un HttpClientHandler con UseProxy = true y proporciona ese handler a un nuevo HttpClient. El mismo cliente puede compartirse de forma segura en toda la aplicación a través de IHttpClientFactory.

Establece la propiedad Proxy en RestClientOptions con un WebProxy y NetworkCredential. RestSharp envuelve el HttpClient subyacente: cada solicitud que realice el RestClient se enrutará a través de Shifter. Compatible con RestSharp 110+.

Sí. Establece el campo Proxy en BrowserTypeLaunchOptions de Playwright con Server, Username y Password. La misma configuración funciona para Chromium, Firefox y WebKit. No se requiere extensión: las credenciales se pasan de forma directa.

Añade un ID de sesión al nombre de usuario del proxy, por ejemplo `customer-USERNAME-country-us-sid-123ABC`. Cada solicitud .NET que se autentique con el mismo sid reutilizará la misma IP residencial. Añade `ttl-N` para fijar esa IP durante un máximo de N segundos.

Sí. Registre un HttpClient con nombre mediante IHttpClientFactory en Program.cs, configure su controlador para usar un WebProxy de Shifter e inyecte IHttpClientFactory.CreateClient("shifter") donde lo necesite. Funciona en MVC, Minimal APIs y Blazor.

No se necesita ningún paquete NuGet. Shifter utiliza HTTP / SOCKS5 estándar: apunta tu HttpClient existente a `p.shifter.io:443`. Esto mantiene tu archivo de proyecto limpio y funciona en .NET Framework, .NET Core y .NET 5+.

Comenzar

Empieza a usar Shifter con C# / .NET

Añade los más de 205M de proxies residenciales y de ISP de Shifter a tu stack .NET en menos de 5 minutos. Compatible con HttpClient, RestSharp, Selenium y Playwright.

Prueba Shifter gratisConfiguración en minutos. Cancela cuando quieras.