1

いくつかの制限により、プロキシを使用して特定の Web サイトにアクセスする必要があります。この目的のために、私は 1 つの有料プロキシ サービスを購読し、その Web サイトにアクセスしようとしましたが、うまくいきました。ただし、Google Chrome でプロキシ サービスを使用するには、Windows Edge ブラウザからプロキシ設定を構成する必要があるため、プロキシ設定が PC のすべての Web ブラウザに影響し、望ましくありません。その特定の Web サイトを除いて、ISP を使用して他のすべての Web サイトに問題なく直接アクセスできるからです。次の C# コードを試して、基になる Chromium セッション中にのみプロキシ設定を使用して「WhatIsMyIP」Web サイトにアクセスできるかどうかを確認しました。

    private static readonly LaunchOptions puppeteer_launchOptions = new LaunchOptions
{
Headless = false,
IgnoreHTTPSErrors = true,
Args = new[] {
"--no-sandbox",
"--disable-infobars",
"--disable-setuid-sandbox",
"--ignore-certificate-errors",
$"--proxy-server='1.2.3.4:5678'",
},
};

static async Task Main()
{
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
_browser = await Puppeteer.LaunchAsync(puppeteer_launchOptions);
Page _page = await _browser.NewPageAsync();
await _page.SetViewportAsync((new ViewPortOptions { Width = 1920, Height = 938 }));
_page.DefaultNavigationTimeout = 100000;
await _page.GoToAsync("https://www.whatismyip.com/");
await _page.WaitForTimeoutAsync(2000);
Console.WriteLine("My Public IP is:");
}

ただし、私のコードは機能しませんでした。次のエラー メッセージが表示されましたスタックトレース: PuppeteerSharp.FrameManager.d__42.MoveNext() で System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() で System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(タスクタスク) で System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(タスク) System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at ProxyWhatIsMyIP.Program.d__3.MoveNext() in C:\DualDataLiveBet\BetFairProxy\ProxyWhatIsMyIP\ProxyWhatIsMyIP\Program.cs:line 31

内部例外 1: NavigationException: net::ERR_NO_SUPPORTED_PROXIES at https://www.whatismyip.com/

しかし、Microsoft Edge ブラウザーでグローバル プロキシ設定を変更し、C# コードでプロキシ設定を削除すると、機能しました。以下は作業コードでした:

    using PuppeteerSharp;
using System; 
using System.Threading.Tasks;
namespace ProxyWhatIsMyIP 
{ 
class Program 
{ 
public static Browser _browser;
private static readonly LaunchOptions puppeteer_launchOptions = new LaunchOptions
{
    Headless = false,
    IgnoreHTTPSErrors = true,
    Args = new[] {
    "--no-sandbox",
    "--disable-infobars",
    "--disable-setuid-sandbox",
    "--ignore-certificate-errors",
    },
};
static async Task Main()
{
    await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
    _browser = await Puppeteer.LaunchAsync(puppeteer_launchOptions);
    Page _page = await _browser.NewPageAsync();
    await _page.SetViewportAsync((new ViewPortOptions { Width = 1920, Height = 938 }));
    _page.DefaultNavigationTimeout = 100000;
    await _page.GoToAsync("https://www.whatismyip.com/");
    await _page.WaitForTimeoutAsync(2000);
    Console.WriteLine("My Public IP is:");
}
}

しかし、それは私が望むものではありません。この Chromium セッション中にのみプロキシを使用したいのですが、グローバル プロキシ設定はそのままにしておきます (PC でプロキシを使用しないでください)。これを行う方法を教えてください。ちなみに、.NET Core 3.0 をターゲットにして、PuppeteerSharp 1.20.0 で Visual Studio 2019 バージョン 16.3.2 を使用しています。私の PC は、最新の更新プログラムが適用された Windows 10 (バージョン 1903) で実行されています。ありがとう、

4

1 に答える 1