統合

Shifterと一緒に使用する C# / .NET

ShifterのレジデンシャルおよびISP Proxiesをビジネスロジックに手を加えることなく、.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`、N秒間のタイムドピンには`ttl-N`を使用
Selenium WebDriverおよびPlaywright for .NETによるヘッドレスブラウザをサポート
同一のゲートウェイエンドポイントでHTTP、HTTPS、SOCKS5プロトコルに対応
ユーザー名パラメータを使用した 195+ か国での Geo ターゲティング -- 追加パッケージ不要
.NET 6、.NET 7、.NET 8、.NET Framework 4.7.2+ と互換性あり -- C#、F#、VB.NET に対応

スティッキーセッションを使用したHttpClient

標準の.NET HTTPクライアントです。一度設定すれば、IHttpClientFactoryまたはシングルトンを通じてアプリ全体で共有できます。同じレジデンシャルIPが、一致する`sid`を持つすべてのリクエストで再利用されます。

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をfluent builder、自動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)

JavaScriptがレンダリングされる対象に対し、Shifterを通じて実際のChrome / Edge / Firefoxインスタンスを操作できます。ヘッドレス認証には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);
FAQ

よくある質問

Shifter と C# / .NET の併用に関するよくある質問。

`http://p.shifter.io:443`を指すWebProxyを作成し、ShifterのユーザーネームとパスワードをNetworkCredentialに設定してCredentialsに渡します。UseProxy = trueに設定したHttpClientHandlerにそれを渡し、そのハンドラーで新しいHttpClientを作成します。同じクライアントはIHttpClientFactory経由でアプリ全体で安全に共有できます。

RestClientOptionsのProxyプロパティを、NetworkCredentialを持つWebProxyに設定してください。RestSharpは基盤となるHttpClientをラップするため、RestClientが行うすべてのリクエストがShifterを経由します。RestSharp 110+に対応しています。

はい。PlaywrightのBrowserTypeLaunchOptionsのProxyフィールドにServer、Username、Passwordを設定します。同じ設定がChromium、Firefox、WebKitで機能します。拡張機能は不要で、認証情報はインラインで渡されます。

プロキシのユーザー名にセッションIDを追加してください。例:`customer-USERNAME-country-us-sid-123ABC`。同じsidで認証するすべての.NETリクエストは同じレジデンシャルIPを再利用します。`ttl-N`を追加すると、そのIPをN秒まで固定できます。

はい。Program.cs でIHttpClientFactory を通じて名前付きのHttpClient を登録し、そのハンドラーがShifter のWebProxy を使用するよう設定した上で、必要な箇所でIHttpClientFactory.CreateClient("shifter") を注入してください。MVC、Minimal APIs、Blazor で動作します。

NuGetパッケージは不要です。ShifterはプレーンなHTTP / SOCKS5に対応しています。既存のHttpClientを`p.shifter.io:443`に向けるだけです。これによりプロジェクトファイルをスリムに保ち、.NET Framework、.NET Core、.NET 5+で動作します。

始める

でShifterを使い始める C# / .NET

Shifterの2億500万件以上のレジデンシャル・ISPプロキシを5分以内に.NETスタックに追加できます。HttpClient・RestSharp・Selenium・Playwrightに対応しています。

Shifterを無料で試す数分でセットアップ完了。いつでもキャンセル可能。