@e_danilchenko

Как работать с tor на C#?

День добрый! Проблема такова: необходимо отправить на сайт запрос ч-з тор. Достигается это за счет такой нехитрой конструкции
HttpWebRequest reqPOST = HttpWebRequest.CreateHttp(@"...");
            reqPOST.Method = "POST"; // Устанавливаем метод передачи данных в POST
            reqPOST.Timeout = 120000; // Устанавливаем таймаут соединения
            reqPOST.Headers.Set(HttpRequestHeader.Cookie, this.cookies);
            reqPOST.UserAgent = this.agents[0];
            reqPOST.Proxy = new WebProxy("127.0.0.1:9050");//порт с тором
            reqPOST.ContentType = "multipart/form-data";
            byte[] sentData = Encoding.GetEncoding(65001).GetBytes(..............


Но негодяй тор, не желает так работать и пишет в консоль такие вещи: "Socks version 80 not recognized. (Tor is not an http proxy)". Я вроде не дурачок, смыл написанного понимаю, даже в сети что-то по этому поводу нашел, но что конкретно нужно изменить понять никак не могу. Помогите пожалуйста.
  • Вопрос задан
  • 5031 просмотр
Пригласить эксперта
Ответы на вопрос 2
@vilgeforce
Раздолбай и программист
Tor is not an http proxy, а вы к нему ломитесь как к HTTP-проксе. Ломитесь как к SOCKS-прокси и будет вам счастье. Только уточнить надо какая там у него версия SOCKS: четвертая или пятая...
Ответ написан
hazemax
@hazemax
code since 2010
2 решения
1) Первое простое. Использовать библиотеку xNet. Там на сколько мне известно реализована работа с socks
2) Если же вам нужно сделать работу socks proxy через WebRequest тогда решение следующее:
Качаем библиотеку ссылка
Потом создаем потомков SocksHttpWebResponse и SocksHttpWebRequest наследуясь от WebResponse и WebRequest как показано ссылка
Использовать можно так
WebRequest _request;
WebResponse _response;
WebProxy proxy = new WebProxy(new Uri("socks5://192.168.0.111:1080"));
if (_proxy.Address.Scheme.Contains("socks"))
_request = SocksHttpWebRequest.Create(url);
else
_request = WebRequest.Create(url);

_request.Proxy = _proxy;

            // ну а дальше все как обычно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы