16 / 16 / 3
Регистрация: 19.11.2009
Сообщений: 112
1

Как узнать, жив ли прокси?

01.09.2011, 13:11. Показов 186566. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Поделитесь,пожалуйста,кодом или ссылкой на полезную инфу.
Стоит ли использовать Curl?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.09.2011, 13:11
Ответы с готовыми решениями:

Как проверить жив ли прокси?
Как проверить жив ли прокси?

Как узнать жив ли процесс через pkill
Добрый вечер. Подскажите, пожалуйста, как узнать жив ли процесс через pkill. Цель: автозапуск через...

Как узнать что сидит через прокси?
Как программным кодом узнать, что сидит через прокси?

Как узнать какой стоит прокси-сервер
Здравствуйте уважаемые у меня возник вопрос у нас в универе стоит проксюха в локалке как смогу...

4
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
01.09.2011, 14:17 2
Во-первых, можно пинговать сервер. Но это покажет только работает ли он:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System.Net.NetworkInformation;
 
private static bool CanPing(string address)
{
    Ping ping = new Ping();
 
    try
    {
        PingReply reply = ping.Send(address, 2000);
        if (reply == null) return false;
 
        return (reply.Status == IPStatus.Success);
    }
    catch (PingException e)
    {
        return false;
    }
}
Во-вторых, если это HTTP прокси, то можно просто загрузить страницу, используя это прокси и посмотреть на реакцию:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private string chkProxy(WebProxy proxy)
        {
            try
            {
                HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://checkip.dyndns.org");
                httpWebRequest.Proxy = proxy;
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                string page = new StreamReader(httpWebResponse.GetResponseStream()).ReadToEnd();
                return Regex.Match(page, @"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})").Groups[1].Value; ;
            }
            catch
            {
                return "error";
            }
        }
Как то так, на скорую руку. Обращаться так:
C#
1
chkProxy(new WebProxy("69.160.84.162:3128"));
Если возвращает error - значит сервер не доступен или вышло время соединения, его можно подрегулировать при желании. Если возвращает IP - можно его сравнивать с текущим и определять - работает прокси или нет. Можно загружать специальные страницы вроде этой: http://www.proxyjudge.biz/cgi-bin/jenv.cgi (получить большой список страниц с подобными скриптами можно запросами в гугле: "inurl: prxjdg.cgi" и "inurl:azenv.php") и смотреть, сколько информации проходит, чтобы оценить надежность прокси.

В-третьих, если требуется работа с SOCKET4,5, то проще всего будет использовать готовые компоненты наподобие этого:
http://www.starksoft.com/prod_proxy.html
1
16 / 16 / 3
Регистрация: 19.11.2009
Сообщений: 112
01.09.2011, 15:37  [ТС] 3
Спасибо. Парсить чужой сервис как один из вариантов подойдет, но допустим я хочу проверить забанен ли гуглом прокси, для этого выполняю такой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        static public bool CheckProxy(string Host, int port)
        {
            try
            {
                WebProxy proxy = new WebProxy(Host, port);
                WebRequest webreq = WebRequest.Create("http://www.google.com");
                webreq.Proxy = proxy;
                webreq.Timeout = 500;
                webreq.GetResponse();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
Если произошла исключительная ситуация (403 Forbidden (Запрещено)), то получается что proxy заблокирован, а если исключения не происходит то прокси работает. Но попробовав зайти через браузер с этим прокси(72.55.132.92:80) выдает такое. Как обработать такой ответ и узнать забанен ли прокси?
Миниатюры
Как узнать, жив ли прокси?  
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
01.09.2011, 15:40 4
vadim1111, пингони и не мучайся.
0
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
01.09.2011, 15:45 5
taras atavin, а что толку от пингов? Узнать, что по такому IP существует работающее сетевое устройство? Прокси на любом порту может быть. И даже если пинговать с портом другими средствами (допустим, http://code.google.com/p/paping/), то работающий порт не гарантирует, что это прокси.
И даже если прокси - надо узнавать, прозрачный ли он, какие данные подменяет и т.д.
0
01.09.2011, 15:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2011, 15:45
Помогаю со студенческими работами здесь

Как узнать после GET-запроса, валиден ли прокси
пользуюсь библиотекой indy,(tidhttp),использую прокси,но когда прокси не верный ,то все, программа...

Как узнать системные настройки прокси (IP-адрес, порт)?
Как можно узнать системные настройки прокси, если нет доступа к ним через IE, однако другие...

Как узнать реальный IP за прокси сервером и забанить его?
Здравствуйте! Подскажите пожалуйста, как узнать реальный IP за прокси сервером и забанить его...

Как можно узнать IP посетителя если он заходит через прокси?
Как можно узнать IP посетителя если он заходит через прокси. Запрос...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru