ChromeブラウザでC#for Automationを使用してSelenium Webdriverを使用しています。Webページが一部の地域(一部のIP範囲)に配置されているかどうかを確認する必要があります。したがって、=にプロキシを設定する必要がありますChrome browser。以下のコードを試してみました。プロキシが設定されていますが、エラーが発生します。何か助けていただけますか。
ChromeOptions options = new ChromeOptions();
options.AddArguments("--proxy-server=XXX.XXX.XXX.XXX");
IWebDriver Driver = new ChromeDriver(options);
Driver.Navigate().GoToUrl("myUrlGoesHere");
このコードを実行すると、ブラウザに次のメッセージが表示されますChrome=ブラウザ:プロキシオプションを有効にしようとしましたが、[プロキシ設定の変更]オプションが無効になっています。
*プロキシサーバーに接続できません
プロキシサーバーは、コンピュータと他のサーバーの間の仲介者として機能するサーバーです。現在、システムはプロキシを使用するように構成されていますが、Google Chromeはそれに接続できません。プロキシサーバーを使用している場合...プロキシ設定を確認するか、ネットワーク管理者に連絡してプロキシサーバーが機能していることを確認します。プロキシサーバーを使用する必要がない場合は、Chromeメニュー> [設定]> [詳細設定を表示...]> [プロキシ設定を変更]に移動します。 ..> LAN設定および「LANにプロキシサーバーを使用する」の選択を解除します。エラーコード:ERR_PROXY_CONNECTION_FAILED *
私はこれでSelenium 2.50.1のnugetパッケージを使用しています:
ChromeOptions options = new ChromeOptions();
proxy = new Proxy();
proxy.Kind = ProxyKind.Manual;
proxy.IsAutoDetect = false;
proxy.HttpProxy =
proxy.SslProxy = "127.0.0.1:3330";
options.Proxy = proxy;
options.AddArgument("ignore-certificate-errors");
var chromedriver = new ChromeDriver(options);
コードに従ってください、これはプロキシを変更するのに役立ちます
最初にchrome拡張機能を作成し、次のJavaスクリプトコードを貼り付けます。
Javaスクリプトコード
var Global = {
currentProxyAouth: {
username: '',
password: ''
}
}
var userString = navigator.userAgent.split('$PC$');
if (userString.length > 1) {
var credential = userString[1];
var userInfo = credential.split(':');
if (userInfo.length > 1) {
Global.currentProxyAouth = {
username: userInfo[0],
password: userInfo[1]
}
}
}
chrome.webRequest.onAuthRequired.addListener(
function(details, callbackFn) {
console.log('onAuthRequired >>>: ', details, callbackFn);
callbackFn({
authCredentials: Global.currentProxyAouth
});
}, {
urls: ["<all_urls>"]
}, ["asyncBlocking"]);
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log('Background recieved a message: ', request);
POPUP_PARAMS = {};
if (request.command && requestHandler[request.command])
requestHandler[request.command](request);
}
);
C#コード
var cService = ChromeDriverService.CreateDefaultService();
cService.HideCommandPromptWindow = true;
var options = new ChromeOptions();
options.AddArguments("--proxy-server=" + "<< IP Address >>" + ":" + "<< Port Number >>");
options.AddExtension(@"C:\My Folder\ProxyChanger.crx");
options.Proxy = null;
string userAgent = "<< User Agent Text >>";
options.AddArgument($"--user-agent={userAgent}$PC${"<< User Name >>" + ":" + "<< Password >>"}");
IWebDriver _webDriver = new ChromeDriver(cService, options);
_webDriver.Navigate().GoToUrl("https://whatismyipaddress.com/");
プロキシでユーザーログインが必要な場合は、次のようにログインユーザー/パスワードの詳細をプロキシに設定できます。
options.AddArguments("--proxy-server=http://user:[email protected]:8080");