Проблема с прокси-сервером HtmlUnit

Речь идет о WebDriver, в частности HtmlUnitDriver и FirefoxWebDriver.

Я использовал одни и те же настройки прокси для HtmlUnitDriver и FirefoxWebDriver, но работает только FirefoxWebDriver.

То, что я получил с HtmlUnitDriver, было «Отказано в доступе» с прокси-сервера. Я получил пустую страницу, когда не использовал настройки прокси. Я не думаю, что это имеет какое-либо отношение к имени пользователя или паролю, потому что я получил ту же ошибку, если не установил имя пользователя или пароль.

Ниже приведен мой код, любая идея будет оценена. Спасибо!

public WebDriver createHtmlUnitWebDriver() {
    HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver() {
        @Override
        protected WebClient modifyWebClient(WebClient client) {
            client.setProxyConfig(new ProxyConfig(PROXY_HOST, PROXY_PORT));

            DefaultCredentialsProvider credentialsProvider = new DefaultCredentialsProvider();
            credentialsProvider.addCredentials("username", "password");
            credentialsProvider.addProxyCredentials("username", "password", PROXY_HOST, PROXY_PORT);
            client.setCredentialsProvider(credentialsProvider);

            return client;
        }
    };

    htmlUnitDriver.setProxy(PROXY_HOST, PROXY_PORT);
    htmlUnitDriver.setJavascriptEnabled(true);

    return htmlUnitDriver;
}

public WebDriver createFirefoxWebDriver() {
    FirefoxProfile firefoxProfile = new FirefoxProfile();

    firefoxProfile.setPreference("network.proxy.type", 1);
    firefoxProfile.setPreference("network.proxy.http", PROXY_HOST);
    firefoxProfile.setPreference("network.proxy.http_port", PROXY_PORT);
    firefoxProfile.setPreference("network.proxy.ssl", PROXY_HOST);
    firefoxProfile.setPreference("network.proxy.ssl_port", PROXY_PORT);
    firefoxProfile.setPreference("network.proxy.no_proxies_on", "");

    return new FirefoxDriver(firefoxProfile);
}

person jnj    schedule 16.10.2009    source источник


Ответы (1)


С использованием:

HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver();
htmlUnitDriver.get("http://www.google.com");

Я вижу, что сведения о прокси-сервере отправляются базовому методу HttpClient (In HttpWebConnection.getResponse()).

Можете ли вы указать свои настройки прокси (если они общедоступны) или вы можете попробовать напрямую использовать HttpClient, чтобы увидеть, не совместим ли он с вашим прокси или нет?

P.S.: лучше использовать список пользователей HtmlUnit, так как другие тоже могут быть заинтересованы в помощи.

person Ahmed Ashour    schedule 17.10.2009
comment
не могли бы вы взглянуть на вопрос в stackoverflow.com/questions/2131049/ - person Yatendra; 25.01.2010