Socks Proxy для HttpWebRequest

Согласно моим исследованиям, пытаясь решить эту проблему, выясняется, что класс.Net WebProxy не поддерживает прокси-серверы Socks, что немного раздражает. Я также не могу найти какой-либо код или информацию, которая объясняет, как реализовать поддержку Socks 4/5 через класс, который можно легко использовать с HttpWebRequest (свойство Proxy, если быть точным).

Я нашел ограниченную информацию через Google о том, как я мог это сделать. Одно из предложений заключается в изменении настроек прокси в Internet Explorer, чего я бы не хотел делать.

Кто-нибудь знает что-нибудь, что может сделать работу или есть какие-либо предложения? Любая помощь приветствуется.

4 ответа

Решение

Я перепробовал множество библиотек.Net, которые утверждали, что поддерживают Socks4/5, но обнаружил, что многие из них просто не работают или будут иметь ошибку при попытке подключиться к прокси, которые, как я знал, работают.

Я закончил тем, что использовал компонент Sock/SSL от Chilkat Software, который, кажется, хорошо работает для меня, даже если мне приходится вручную создавать HTTP-запросы вместо использования HttpWebRequest, как мне бы хотелось.

  • Примечание об обновлении: Chilkat.Http (аналог классу HttpWebRequest) изначально поддерживает прокси-серверы SOCKS. Так что не тратьте время, пытаясь закодировать свои собственные HTTP-запросы, как я; просто используйте Chilkat.Http.SocksHostname, Chilkat.Http.SocksPort а также Chilkat.Http.SocksVersion свойства.

Изменение настроек прокси в IE вам совсем не поможет - другой автор просто заметил, что он работает для IE. Поскольку.NET Framework не поддерживает SOCKS, вам придется написать собственный конвертер CERN-Proxy в SOCKS-Proxy, чтобы.NET общался с прокси-сервером CERN (тип, который он поддерживает), а ваш код преобразовывал его в SOCKS прокси звонок.

FWIW, это то, что я сейчас хочу добавить в FiddlerCore (www.fiddler2.com/core), потому что у меня уже есть почти весь код. Единственное, что мне действительно нужно, это прокси SOCKSv4a для тестирования.

Начиная с .NET 6, прокси-серверы socks можно использовать изначально с HttpClient. См. Эту проблему на GitHub.

Используйте Privoxy или то же самое, чтобы создать http-шлюз для ваших носков.

Добавьте это в основной конфиг для цепочки Privoxy и socks:

forward-socks5 / proxy_host:port .

И что-то подобное, чтобы включить прямой доступ к вашей локальной сети:

forward 192.168.*.*/ . forward 10.*.*.*/ . forward 127.*.*.*/ .

Другие вопросы по тегам