В каком формате прописывать прокси в кубике C#

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Добрый день форумчане. Пытаюсь запустить следующий кусок кода
Но не получается правильно передать прокси

C#:
string userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";
string url = "http://azenv.net/";
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.Method = "GET";
request.Proxy = "socks5://211.228.227.155:9050";
request.UserAgent = userAgent;
request.Headers.Add("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3"); // если возвращаемые данные нужны на русском языке
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string resultGet = reader.ReadToEnd();
response.Close();
reader.Close();

return resultGet;
Но получаю ошибку следующего содержания
Компиляция кода Ошибка в действии "CS0029" "Cannot implicitly convert type 'string' to 'System.Net.IWebProxy'". [Строка: 5; Cтолбец: 17]
Перепробовал кучу вариантов написания, но не получается что то.
При этом,если я беру такой кусок кода, то строка прокси в формате как и в коде выше - обрабатывается нормально
C#:
string url = "http://google.com/";
string proxy = "socks5://91.198.137.31:3579";
int timeout = 10000;
string cookies = "";
string userAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60"; //юзер-агент - ХРОМ!
string referer = "http://site.com/";
string httpResponse = String.Empty;
try {
    httpResponse = ZennoPoster.HttpGet(url, proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, timeout, cookies, userAgent, true, 5, AdditionalHeaders: new [] {"Referer: "+referer});
} catch (Exception ex) { return "fucking bad test"; }
return httpResponse;
Прошу подсказки - как в первый указанный кусок кода "правильно завести" прокси и в каком формате
Спасибо
 
Последнее редактирование:

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
HttpWebRequest вроде не работает с socks5.
Для http нужно примерно так: request.Proxy = new WebProxy ("211.228.227.155",9050);

В конкурсной статье по xNet вроде есть примеры как использовать прокси socks, но, нужно тогда подключать библиотеку:

Код с конкурсной статьи:
// Вариант 1
request.Proxy = ProxyClient.Parse(ProxyType.HTTP, "ip:port:username:password");

// Вариант 2
request.Proxy = new HttpProxyClient("127.0.0.1", 8888, "username", "password");
request.Proxy = new Socks4ProxyClient("127.0.0.1", 8888, "username", "password");
request.Proxy = new Socks4aProxyClient("127.0.0.1", 8888, "username", "password");
request.Proxy = new Socks5ProxyClient("127.0.0.1", 8888, "username", "password");


// Вариант 3, в случае, когда авторизацию можно задать позже
request.Proxy = HttpProxyClient.Parse("127.0.0.1:8888");

request.Proxy.Username = "username";
request.Proxy.Password = "password";
А вот с кодом:
ZennoPoster.HttpGet(url, proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, timeout, cookies, userAgent, true, 5, AdditionalHeaders: new [] {"Referer: "+referer});
Работает корректно, потому что разработчики Зеннопостера позаботились о том, чтобы мы могли использовать socks, а вот разработчики C# не решились предоставлять эту функцию с коробки в HttpWebRequest.
 
  • Спасибо
Реакции: AndrewSuul, doc и DevOps

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
HttpWebRequest вроде не работает с socks5.
Для http нужно примерно так: request.Proxy = new WebProxy ("211.228.227.155",9050);

В конкурсной статье по xNet вроде есть примеры как использовать прокси socks, но, нужно тогда подключать библиотеку:

Код с конкурсной статьи:
// Вариант 1
request.Proxy = ProxyClient.Parse(ProxyType.HTTP, "ip:port:username:password");

// Вариант 2
request.Proxy = new HttpProxyClient("127.0.0.1", 8888, "username", "password");
request.Proxy = new Socks4ProxyClient("127.0.0.1", 8888, "username", "password");
request.Proxy = new Socks4aProxyClient("127.0.0.1", 8888, "username", "password");
request.Proxy = new Socks5ProxyClient("127.0.0.1", 8888, "username", "password");


// Вариант 3, в случае, когда авторизацию можно задать позже
request.Proxy = HttpProxyClient.Parse("127.0.0.1:8888");

request.Proxy.Username = "username";
request.Proxy.Password = "password";
А вот с кодом:
ZennoPoster.HttpGet(url, proxy, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, timeout, cookies, userAgent, true, 5, AdditionalHeaders: new [] {"Referer: "+referer});
Работает корректно, потому что разработчики Зеннопостера позаботились о том, чтобы мы могли использовать socks, а вот разработчики C# не решились предоставлять эту функцию с коробки в HttpWebRequest.
Спасибо. Самый первый вариант сработал так так от него и требовалось. Мне просто не совсем понятно откуда такой зоопарк вариантов написания и передачи одного параметра (прокси)
И спасибо за упоминание про использование именно http прокси
Как всегда Вы всегда подсказываете работающие решения с первого раза :-)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)