集成

将Shifter与以下工具配合使用 C# / .NET

将 Shifter 的住宅代理和 ISP 代理接入任何 .NET 项目——HttpClient、RestSharp、Flurl、Selenium 和 Playwright——无需改动业务逻辑。

快速入门

安装

dotnet add package System.Net.Http

基本用法

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

功能特性

开箱即支持 HttpClient、RestSharp、Flurl、HttpWebRequest 及任何接受 WebProxy 的 .NET HTTP 客户端
默认按请求轮换,使用`sid`实现粘性会话,使用`ttl-N`实现N秒定时固定
通过 Selenium WebDriver 和 Playwright for .NET 支持无头浏览器
同一网关端点支持 HTTP、HTTPS 和 SOCKS5 协议
通过用户名参数在 195+ 个国家/地区进行地理定向,无需额外安装任何包
兼容 .NET 6、.NET 7、.NET 8 及 .NET Framework 4.7.2+,支持 C#、F# 和 VB.NET

示例

HttpClient 粘性会话配置

标准 .NET HTTP 客户端。通过 IHttpClientFactory 或单例模式配置一次并在整个应用中共享——所有使用相同 `sid` 进行身份验证的请求将复用同一个住宅 IP。

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 在 HttpClient 基础上提供流式构建器、自动 JSON 反序列化和重试策略。在 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)

通过 Shifter 驱动真实的 Chrome / Edge / Firefox 实例,用于抓取 JavaScript 渲染的目标页面。配合 Shifter 的 IP 白名单实现无头浏览器身份验证。

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

Microsoft Playwright 可从 C# 驱动 Chromium、Firefox 和 WebKit。在启动选项中配置代理——凭据内联,无需扩展。

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);
常见问题

常见问题

关于将 Shifter 与 C# / .NET 搭配使用的常见问题。

创建一个指向 `http://p.shifter.io:443` 的 WebProxy,将 Credentials 设置为包含您的 Shifter 用户名和密码的 NetworkCredential。将其传递给 UseProxy = true 的 HttpClientHandler,并将该处理程序提供给新的 HttpClient。同一客户端可以通过 IHttpClientFactory 在整个应用中安全共享。

立即开始

开始将Shifter与以下工具配合使用 C# / .NET

只需不到5分钟,即可将Shifter的205M+住宅和ISP代理集成到您的.NET项目中。兼容HttpClient、RestSharp、Selenium和Playwright。

免费试用 Shifter几分钟内完成设置,随时可取消。