1. Не работает
ChromeOptions options = chromeDriversHelpers.GenerateChromeOptions(
Uuid,
userAgent,
width,
height,
pixelRatio: 2,
disableImage: true
);
options.AddArguments($"--proxy-server={proxyItem.IP}:{proxyItem.Port} --proxy-user={proxyItem.Login} --proxy-password={proxyItem.Password}");
var driver = UndetectedChromeDriver.Create(
options,
//browserExecutablePath:
driverExecutablePath: chromeDriversHelpers.GetPathToChomeDriver(0),
headless: appSettings.headless,
commandTimeout: TimeSpan.FromSeconds(appSettings.timeoutBrowser),
hideCommandPromptWindow: true,
userDataDir: Path.Combine(AppSettings.CurrentDir, "browser-data", "profiles", Uuid)
);
driver.GoToUrl(url);
//
https://jiaopucun.com/2023/03/16/set-a-proxy-for-g...
2. ERR_NO_SUPPORTED_PROXIES
ChromeOptions options = chromeDriversHelpers.GenerateChromeOptions(
Uuid,
userAgent,
width,
height,
pixelRatio: 2,
disableImage: true
);
options.AddArguments($"--proxy-server=\"{proxyItem.Login}:{proxyItem.Password}@{proxyItem.IP}:{proxyItem.Port}\"");
var driver = UndetectedChromeDriver.Create(
options,
//browserExecutablePath:
driverExecutablePath: chromeDriversHelpers.GetPathToChomeDriver(0),
headless: appSettings.headless,
commandTimeout: TimeSpan.FromSeconds(appSettings.timeoutBrowser),
hideCommandPromptWindow: true,
userDataDir: Path.Combine(AppSettings.CurrentDir, "browser-data", "profiles", Uuid)
);
driver.GoToUrl(url);
3. Просит вручную вводить логин и пароль от прокси
ChromeOptions options = chromeDriversHelpers.GenerateChromeOptions(
Uuid,
userAgent,
width,
height,
pixelRatio: 2,
disableImage: true
);
options.AddArgument($"--proxy-server=http://{proxyItem.IP}:{proxyItem.Port}");
options.AddArgument($"--proxy-auth={proxyItem.Login}:{proxyItem.Password}");
var driver = UndetectedChromeDriver.Create(
options,
//browserExecutablePath:
driverExecutablePath: chromeDriversHelpers.GetPathToChomeDriver(0),
headless: appSettings.headless,
commandTimeout: TimeSpan.FromSeconds(appSettings.timeoutBrowser),
hideCommandPromptWindow: true,
userDataDir: Path.Combine(AppSettings.CurrentDir, "browser-data", "profiles", Uuid)
);
driver.GoToUrl(url);
Эти базовые варианты не работают как я ожидаю.
Я хочу указать прокси и что бы они применились на все запросы в запущенном браузере и логин и пароль автоматически подставились, без ручного ввода.
Ожидаемое поведение.
Программа запускает например 3 браузера и каждый берет свою прокси и подставляет. Все последующие запросы в каждом браузере идут через свои прокси.
Как это реализовать ?
Вариант с расширением не предлагать. В текущее время это очень трудно затратный процесс.
1. Генерится файл с расширением.
2. Конвертируется в crx формат, потому что сейчас в текущей последней версии не удается просто указать путь к папке с расширением
var (tempDir, zipPath) = ChromeProxyAuthExtensionHelper.CreateProxyAuthExtension(proxyItem.IP, proxyItem.Port, proxyItem.Login, proxyItem.Password);
//options.AddExtension(extensionPath);
//options.AddArgument($"--load-extension=\"{tempDir}\"");
//options.AddAdditionalOption("extensions", new[] { extensionPath });
Что бы получить crx нужно генерить сертификаты, подписывать в специальном формате файл и надеется что хром текущей версии будет читать его.