Проверка работы Proxy для конкретного ресурса - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день, сам учусь на первом курсе, изучаем C#. Периодически делаю разнообразные программы чтобы набраться опыта. Работаю в Visual Studio 2013. И так, отказывается нормально работать 1 из алгоритмов программы.
        //string[] Proxy - Массив прокси вида 127.0.0.1:80
        //int ProxyI - счетчик использованых/проверенных
 
         public string[] GetProxy()
        {
            bool send = false;
            string[] ProxyData = {};
            while (!send)
            {
                Thread.Sleep(1500);
                ProxyData = Proxy[ProxyI].Split(new char[] { ':' });
                send = CheckProxy(ProxyData[0], int.Parse(ProxyData[1]));
                ProxyI++;
            }
 
            return ProxyData;
        }
 
        public static bool CheckProxy(string host, int port)
        {
            bool result = false;
            WebRequest webRequest = WebRequest.Create("https://example.com/");
            webRequest.Proxy = new WebProxy(host, port);
            try
            {
                using (Stream responseStream = webRequest.GetResponse().GetResponseStream())
                {
                    using (var sr = new StreamReader(responseStream))
                    {
                        result = true;
                    }
                }
            }
            catch (WebException wex)
            {
                result = false;
            }
            return result; 
        }
Сам этот "стрипт" проверки Proxy являетя часть от более большой программы, которая обращается к ресурсу для которого мы и проверяем Proxy. После запуски главного скрипта запускается
factory.StartNew(() => Parallel.ForEach(Data, options, Start));
Который запускает функцию Start -> Которая запускает ещё 1 функцию, например Example -> Эта в свою очередь и вызывает нашу GetProxy. Идея работы и сама проблема: Скрипт берет текущую прокси из массива прокси по счетчику, проверяет ее на работоспособность для конкретного ресурса и если прокси годная возвращает ее, если нет идет далее по списку. Функция "проверки работоспособности" просто делает GET запрос к ресурсу с помощью переданной ей прокси, и если исключение не вызвано то прокси считается годной. В прокси листе допустим 1000 прокси. Проблема заключается в том что по идее если все 999 прокси плохие а 1000'ная хорошая, то скрипт должен пройти все от 1 до 1000, Но он проходит ровно 10 штук (заколдованное число) и останавливается БЕЗ ОШИБОК И ИСКЛЮЧЕНИЙ, ПРИ ЗАПУСКЕ В РЕЖИМЕ ОТЛАДКИ ТОЖЕ ОСТАНАВЛИВАЕТСЯ БЕЗ СООБЩЕНИЙ. Cкрин из программы снифающей запросы я прикрепил к сообщению, из него видны эти 10 запросов, после которого все останавливается.

Решение задачи: «Проверка работы Proxy для конкретного ресурса»

textual
Листинг программы
foreach(var e in exc.InnerExceptoins)
               {
                  Debug.WriteLine(e.Message);}  // е.Message на e.ToString()
               }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы