Как использовать Proxy в PuppeteerSharp без использования системных глобальных настроек прокси - PullRequest
0 голосов
/ 05 октября 2019

Из-за некоторых ограничений мне приходится использовать прокси-сервер для посещения одного конкретного веб-сайта. С этой целью я подписываюсь на один платный прокси-сервис и пытаюсь зайти на этот веб-сайт, он работает. Однако, чтобы использовать службу прокси от Google Chrome, мне нужно настроить параметры прокси из браузера Windows Edge, чтобы настройки прокси влияли на все веб-браузеры на моем ПК, которые мне не нужны;потому что, кроме этого конкретного веб-сайта, я могу без каких-либо проблем посещать все другие веб-сайты напрямую, используя моего интернет-провайдераЯ попробовал следующий код C #, чтобы посмотреть, смогу ли я зайти на веб-сайт «WhatIsMyIP» с использованием настроек прокси-сервера только во время основного сеанса Chromium.

    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.NavigationException HResult = 0x80131500 Сообщение = net :: ERR_NO_SUPPORTED_PROXIES в https://www.whatismyip.com/ в https://www.whatismyip.com/ Source = PuppeteerSharp StackTrace: в PuppeteerSharp.FrameManager.Nex.Exception. Бросок () в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача-задача) в System.Runtime.CompilerServices.TySIPSystem.TySa. d__3.MoveNext () в C: \ DualDataLiveBet \ BetFairProxy \ ProxyWhatIsMyIP \ ProxyWhatIsMyIP \ Program.cs: строка 31

Внутреннее исключение 1: исключение навигации: net :: ERR_NO_SUPPORTED_PROXIES в

* *если я изменил глобальный прокси сеттиngs в браузере 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, но не трогать глобальные настройки прокси (не использовать прокси на моем ПК). Посоветуйте, пожалуйста, как мне это сделать? Кстати, я использую Visual Studio 2019 версии 16.3.2 с PuppeteerSharp 1.20.0, ориентируясь на .NET Core 3.0. Мой компьютер работает под управлением Windows 10 (версия 1903) с последними установленными обновлениями. Спасибо,

1 Ответ

0 голосов
/ 08 октября 2019

Я сделал глупую опечатку при поиске ответов от других людей. На самом деле это было просто. Параметр запуска содержит неправильный текст, достаточно удалить http: //, поскольку я использую прямой IP-адрес. Таким образом, правильный синтаксис:

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

};

Кстати, --disable-infobars, кажется, не работает с 1.19.0 до 1.20.0;Я всегда вижу информацию: Chrome управляется автоматизированным тестовым программным обеспечением. Я помню, как кто-то сказал, что с 1.19.0 Google Chrome что-то изменил, поэтому --disable-infobars не работает, но он также привел пример того, как отключить предупреждение, но его метод НЕ включал PuppeteerSharp, Puppeteer был включен. Сейчас я пока не могу понять.
Надеюсь, мой вопрос поможет другим людям. Это просто опечатка, а не большая проблема!

...