Как использовать носки в HtmlUnit

Я гуглил три часа и не нашел ничего полезного. У меня есть WebClient, который подключается к некоторым сайтам через socks 5, которые не требуют использования логина и пароля для работы через них:

WebClient wc = new WebClient(BrowserVersion.FIREFOX
Dec 12, 2011 4:14:02 AM org.apache.http.impl.client.DefaultRequestDirector tryConnect
INFO: I/O exception (java.net.SocketException) caught when connecting to the target host: SOCKS : authentication failed
6); wc.setProxyConfig(new ProxyConfig(socks.split(":")[0], Integer.parseInt(socks.split(":")[1]), true)); wc.setTimeout(30000); wc.setCssEnabled(false); wc.setJavaScriptEnabled(false);

И так далее. Я получаю следующее исключение для КАЖДОГО живого хоста, для которого не требуется логин или пароль:

java.net.SocketException: SOCKS : authentication failed
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:473)
    at java.net.Socket.connect(Socket.java:579)
    at com.gargoylesoftware.htmlunit.SocksSocketFactory.connectSocket(SocksSocketFactory.java:89)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:776)
    at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:152)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1439)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1358)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:307)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:373)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:358)
    at mus.Gucol.run(Gucol.java:49)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

А также

Dec 12, 2011 4:14:02 AM org.apache.http.impl.client.DefaultRequestDirector tryConnect
INFO: I/O exception (java.net.SocketException) caught when connecting to the target host: SOCKS : authentication failed

HTML-модуль 2.9. Я пытался использовать учетные данные:

WebClient wc = new WebClient(BrowserVersion.FIREFOX_3_6);
        wc.setProxyConfig(new ProxyConfig(socks.split(":")[0], Integer.parseInt(socks.split(":")[1]), true));
        wc.setTimeout(30000);
        wc.setCssEnabled(false);
        wc.setJavaScriptEnabled(false);

        final DefaultCredentialsProvider credentialsProvider = (DefaultCredentialsProvider) wc.getCredentialsProvider();
        credentialsProvider.addCredentials("", "", socks.split(":")[0], Integer.parseInt(socks.split(":")[1]), null);
        credentialsProvider.addProxyCredentials("", "");

        wc.setCredentialsProvider(credentialsProvider);

Но это не имеет смысла. И я думаю, что проблема не в HtmlUnit, а в Java, потому что я пытался использовать socks через HtmlUrlConnection, и происходит та же ошибка, и это заставляет меня плакать. Ребят, как заставить работать? Я потратил около шести часов на решение этой проблемы, и я не могу использовать System.setProperty, потому что мне нужны разные носки для каждого «окна» WebClient.


person Clark    schedule 12.12.2011    source источник
comment
у тебя уже есть решение? Я намерен использовать прокси socks5 с htmlunit, поделитесь своим решением, если вы его нашли.   -  person coding_idiot    schedule 14.04.2012
comment
@XCoder извините, у меня сейчас нет исходников, но да, было какое-то решение.   -  person Clark    schedule 08.05.2012


Ответы (1)


Вы пробовали использовать нулевое значение вместо пустой строки?

Кстати, addProxyCredentials() устарела

person Mosty Mostacho    schedule 12.12.2011
comment
После настройки нулевые значения для приложения login&pass не работают. Также я знаю о addProxyCredentials(), но я пробовал каждое решение, и ничего не происходит. - person Clark; 15.12.2011