Подключение к веб-сервису .NET через SOCKS5 прокси - PullRequest
3 голосов
/ 29 апреля 2009

Я пытаюсь подключиться через прокси-сервер SOCKS5 к веб-сервису. В настоящее время мой app.config выглядит следующим образом:

<system.net>
 <defaultProxy enabled="true"  >
  <proxy proxyaddress="http://xxx.xxx.xxx.xxx:yyyy" bypassonlocal="True" />
 </defaultProxy>
</system.net>

Это отлично работает для http прокси, но не подключается к SOCKS5. Я много гуглил для ответа и просто не могу найти никого, кто бы решил эту проблему, хотя я нашел вопрос пару раз. У кого-нибудь есть идеи, как мне это сделать?

Ответы [ 3 ]

2 голосов
/ 15 августа 2009

Очевидно, что Microsoft не встроила поддержку прокси-серверов SOCKS в свои веб-классы (см. http://windows -tech.info / 13 / f17246e7dd4a8a2b.php )

Я тоже нахожусь в ситуации, когда я хотел бы использовать встроенную веб-функциональность .NET с прокси-сервером SOCKS5 и не нашел удовлетворительного решения. Я предполагаю, что мой следующий шаг - получить источник классов .NET либо через Reflector, либо из кодовой базы Mono, и реорганизовать его для использования класса ProxySocket, упомянутого в приведенной выше ссылке.

Это больше работы, чем я хотел, но, похоже, единственный способ.

0 голосов
/ 18 ноября 2017

Если вы можете использовать HttpClient , вы можете использовать SocksSharp .

Я просто последовал примеру, и он сработал для меня.

var settings = new ProxySettings()
{
    Host = "xxx.xxx.xxx.xxx",
    Port = yyyy
};

using (var proxyClientHandler = new ProxyClientHandler<Socks5>(settings))
{
    using (var httpClient = new HttpClient(proxyClientHandler))
    {
        var response = await httpClient.GetAsync("http://example.com/");
    }
}
0 голосов
/ 25 июня 2015

Теоретически вы можете наследовать класс веб-сервиса и переопределять GetWebRequest и GetWebResponse. Тогда вы сможете использовать этот класс c # socks http://www.codeproject.com/Articles/5954/C-class-for-connecting-via-a-SOCKS-Proxy-Server и преобразовать веб-запрос в сокеты и обратно.

Самое быстрое решение, которое мне удалось найти, - это установить общесистемный прокси-сервер socks, используя WideCap . Это направляет весь трафик на машине через прокси-сервер socks.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...