Необходимо написать C# функцию получения параметров прокси сервера (работать должна под .NET2.0). Функция должна работать максимально быстро. По факту мне нужно получить следующий список параметров

1. Тип прокси (HTTP, SOCKS4, SOCKS5) (этот параметр также может быть изначально жестко задан функции)

2. Анонимность http://www.freeproxy.ru/ru/free_proxy/faq/proxy_anonymity.htm

3. Элитность http://www.freeproxy.ru/ru/free_proxy/faq/proxy_anonymity.htm

4. Поддержка https

5. POST

6. Страна (возможно как здесь http://www.codeproject.com/Articles/3657/Optimized-IP-to-ISO3166-Country-Code-Mapping-in-C)

7. Шлюзовость (не обязательно. Шлюзовые прокси - это прокси, которые являются туннелем для проксей)

8. Задержка (время ожидания ответа)

9. Cookies (поддерживает ли прокси передачу cookies в заголовке)

10. Referer (поддерживает ли прокси передачу referer в заголовке)

Вам в помощь есть вебсервер, на котором расположен скрипт, показывающий IP, POST параметры, заголовки, передаваемые серверу и нужные переменные окружения вроде HTTP_X_FORWARDED_FOR. Кроме данного вебсервера НЕЛЬЗЯ использовать какие либо сторонние ресурсы в алгоритме (чекеры, IP чекеры и вообще какие либо сторонние).

На выходе необходимо хорошо прокомментированную функцию (можно обернуть ее в класс), отрабатывающую максимально быстро. Формат следующий:

=============================================

public string lastError = "";

public enum ProxyType { HTTP = 0, SOCKS4, SOCKS5,AUTODEF };

///

/// Struct determining harvesting rules

///

public struct ProxyInfo

{

public ProxyType proxyType;//Тип прокси HTTP, SOCKS4, SOCKS5

public bool anonymous;//(ояснено здесь http://www.freeproxy.ru/ru/free_proxy/faq/proxy_anonymity.htm

public bool elite;//пояснено здесь http://www.freeproxy.ru/ru/free_proxy/faq/proxy_anonymity.htm

public bool https;//поддержка https

public bool post;//поддерживает ли прокси передачу POST параметров

public string countryCode;//EN,RU,NL and others...

public bool gateway;//Шлюзовые прокси - это прокси, которые являются туннелем для проксей

public int delay;//время ожидания ответа от прокси

public bool cookies;//поддерживает ли прокси передачу cookies в заголовке

public bool referer;//поддерживает ли прокси передачу referer в заголовке

}

public ProxyInfo getProxyInfo(string proxyaddr,int port,string login="",string pass = "",ProxyType type = ProxyType.AUTODEF)

{

ProxyInfo pi = new ProxyInfo();

try

{

lastError = "";

#region Определяем тип прокси если он не задан заранее

if (type == ProxyType.AUTODEF)

{

}

else

{

pi.proxyType = type;

}

#endregion

#region Определяем остальные параметры прокси (насколько я понимаю в зависимости от типа, алгоритм определения некоторых параметров может различаться)

#endregion

return pi;

}

catch(Exception exp)

{

lastError = exp.Message;

return pi;

}

}

=======

Уточню что понимаю под "максимально быстрой работой". Поясню от обратного. Мне недавно написали отдельную функцию проверки, что прокси является socks5. При этом у меня есть быстрые socks5 прокси для тестирования и быстрые (платные) http прокси для тестирования. Если функции на вход подаешь быструю socks5 проксю - то она быстро определяет что это socks5 (и возвращает true). Если же ей подаешь быструю http проксю - то она надолго замирает, и через длительный промежуток времени выдает False (ответ правильный, но почему так долго?))).

========

По поводу оплаты: оплата после тестирования функционала и проверки его соответствия ТЗ (ПОЛНОГО СООТВЕТСТВИЯ). Если вы изначально знаете, что с чем либо из ТЗ не справитесь - заранее предупреждайте (возможно подредактируем ТЗ, но только до начала работы). Для тестирования сразу предоставлю проксей. Бюджет 25$ .

13 лет назад
lofti
38 лет
16 лет в сервисе
Был
8 лет назад
16 отзывов(-1)

Заявки фрилансеров

Нет заявок фрилансеров