Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

реализовать прокси в потоках

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 08.08.2012, 14:00   #1
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию реализовать прокси в потоках

Возможно ли сделать так что бы программа брала из списка прокси,если 1 прокси будет не валид то брала следующий ? Спасибо.
  Ответить с цитированием
Старый 09.08.2012, 10:10   #2
Почетный Пользователь
 Рыцарь
Аватар для the-boxi
 
the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(
Регистрация: 09.02.2011
Сообщений: 373
Популярность: 38009
Сказал(а) спасибо: 612
Поблагодарили 448 раз(а) в 175 сообщениях
Отправить сообщение для the-boxi с помощью ICQ Отправить сообщение для the-boxi с помощью MSN Отправить сообщение для the-boxi с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Конечно можно, дай код там где у тебя реализован много-поток и переменную в которой хранятся прокси!
________________
Разработка программ на заказ, все вопросы skype - the-boxi, ICQ - 616027961
  Ответить с цитированием
Старый 09.08.2012, 16:49   #3
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от the-boxiПосмотреть сообщение
Конечно можно, дай код там где у тебя реализован много-поток и переменную в которой хранятся прокси!

Код:
s = Convert.ToInt32(numericUpDown1.Text);

                    threads = new Thread[s];
                    for (i = 0; i < threads.Length; i++)
                    {
                        threads[i] = new Thread(new ThreadStart(main_ss));
                        threads[i].Start();

                                                   прокси
public ArrayList proxyArray; //для прокси 
proxyArray.AddRange(File.ReadAllLines("proxy.txt")); //ну и загрузка proxy...
Ну думаю достаточно,спасибо.

Последний раз редактировалось [Na`Vi]DendI; 09.08.2012 в 16:53.
  Ответить с цитированием
Старый 09.08.2012, 22:16   #4
Заблокирован
 Капитан
Аватар для TeedI
 
TeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака Норриса
Регистрация: 11.08.2010
Сообщений: 254
Популярность: 9232
Сказал(а) спасибо: 300
Поблагодарили 334 раз(а) в 223 сообщениях
Отправить сообщение для TeedI с помощью ICQ
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от [Na`Vi]DendIПосмотреть сообщение
Код:
s = Convert.ToInt32(numericUpDown1.Text);

                    threads = new Thread[s];
                    for (i = 0; i < threads.Length; i++)
                    {
                        threads[i] = new Thread(new ThreadStart(main_ss));
                        threads[i].Start();

                                                   прокси
public ArrayList proxyArray; //для прокси 
proxyArray.AddRange(File.ReadAllLines("proxy.txt")); //ну и загрузка proxy...
Ну думаю достаточно,спасибо.

Код:
private Queue<string> proxyList = new Queue<string>();
private WebProxy pr = null;

/* Функция отправки запроса */
private void Request ( ) {
    
    try {
      WebRequest req = WebRequest.Create ( "http://google.ru");
      req.proxy = ( pr == null ) ? null : pr;
      req.Timeout = 4000;
      req.GetResponse();
    }
    catch {
      pr = ReturnProxy();
   }
}

/* Функция для получение прокси */
private WebProxy ReturnProxy() {
     WebProxy wbp = null;
     if ( proxyList.Count != 0) {
          string line = proxyList.Dequeue();
          wbp = new WebProxy ( line.Split ( ':')[0] , int.Parse ( line.Split ( ':' )[1]);
     }
     return wbp;
}

/* Функция для загрузки прокси */
private void LoadProxy () {
    string[] array = File.ReadAllLines ( "proxy.txt" );
    foreach ( string str in array ) {
         proxyList.Enqueue(str);
    }
    Array.Clear ( array  , 0 , array.Length);
}
Мб так
  Ответить с цитированием
Пользователь сказал cпасибо:
[Na`Vi]DendI (09.08.2012)
Старый 09.08.2012, 22:33   #5
 Пехотинец
Аватар для megweg
 
megweg скоро будет известенmegweg скоро будет известенmegweg скоро будет известенmegweg скоро будет известенmegweg скоро будет известен
Регистрация: 28.12.2009
Сообщений: 75
Популярность: 427
Сказал(а) спасибо: 19
Поблагодарили 38 раз(а) в 23 сообщениях
Отправить сообщение для megweg с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

да, но есть прокси которые вместо целевой страницы дают свою, так что чекинг через гугл не всегда есть правильно !
  Ответить с цитированием
Старый 09.08.2012, 22:49   #6
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от TeedIПосмотреть сообщение
Код:
private Queue<string> proxyList = new Queue<string>();
private WebProxy pr = null;

/* Функция отправки запроса */
private void Request ( ) {
    
    try {
      WebRequest req = WebRequest.Create ( "http://google.ru");
      req.proxy = ( pr == null ) ? null : pr;
      req.Timeout = 4000;
      req.GetResponse();
    }
    catch {
      pr = ReturnProxy();
   }
}

/* Функция для получение прокси */
private WebProxy ReturnProxy() {
     WebProxy wbp = null;
     if ( proxyList.Count != 0) {
          string line = proxyList.Dequeue();
          wbp = new WebProxy ( line.Split ( ':')[0] , int.Parse ( line.Split ( ':' )[1]);
     }
     return wbp;
}

/* Функция для загрузки прокси */
private void LoadProxy () {
    string[] array = File.ReadAllLines ( "proxy.txt" );
    foreach ( string str in array ) {
         proxyList.Enqueue(str);
    }
    Array.Clear ( array  , 0 , array.Length);
}
Мб так

Спасибо большое.Но в переменной pr почему-то всегда пусто.
Всё что мне надо это что бы при многопоточном бруте на каждую отправку запроса был новый прокси из списка,как только он закончится что бы прокси ишли снова с начала списка.

Последний раз редактировалось [Na`Vi]DendI; 09.08.2012 в 23:09.
  Ответить с цитированием
Старый 11.08.2012, 00:32   #7
Заблокирован
 Капитан
Аватар для TeedI
 
TeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака НоррисаTeedI троюродный дядя Чака Норриса
Регистрация: 11.08.2010
Сообщений: 254
Популярность: 9232
Сказал(а) спасибо: 300
Поблагодарили 334 раз(а) в 223 сообщениях
Отправить сообщение для TeedI с помощью ICQ
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от [Na`Vi]DendIПосмотреть сообщение
Спасибо большое.Но в переменной pr почему-то всегда пусто.
Всё что мне надо это что бы при многопоточном бруте на каждую отправку запроса был новый прокси из списка,как только он закончится что бы прокси ишли снова с начала списка.

Просто я чуток тупанул

Код:

public class UseProxy 
{
    private Queue<string> proxyList = new Queue<string>();
    private WebProxy pr = null;

    public UseProxy () {
       pr = ReturnProxy();
    }

    /* Функция отправки запроса */
    private void Request ( ) {
    try {
       WebRequest req = WebRequest.Create ( "http://google.ru");
      req.proxy = ( pr == null ) ? null : pr;
      req.Timeout = 4000;
      req.GetResponse();
    }
    catch {
      pr = ReturnProxy();
   }
}

/* Функция для получение прокси */
private WebProxy ReturnProxy() {
     WebProxy wbp = null;
     if ( proxyList.Count != 0) {
          string line = proxyList.Dequeue();
          wbp = new WebProxy ( line.Split ( ':')[0] , int.Parse ( line.Split ( ':' )[1]);
     }
     return wbp;
}

/* Функция для загрузки прокси */
private void LoadProxy () {
    string[] array = File.ReadAllLines ( "proxy.txt" );
    foreach ( string str in array ) {
         proxyList.Enqueue(str);
    }
    Array.Clear ( array  , 0 , array.Length);
 }
}
Ну и собстна , где-то там создаем класс и используем его элемент-функцию "Request" , которая в случаем не валидного прокси прочитает из очереди следующий
  Ответить с цитированием
Старый 11.08.2012, 00:52   #8
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от TeedIПосмотреть сообщение
Просто я чуток тупанул

Код:

public class UseProxy 
{
    private Queue<string> proxyList = new Queue<string>();
    private WebProxy pr = null;

    public UseProxy () {
       pr = ReturnProxy();
    }

    /* Функция отправки запроса */
    private void Request ( ) {
    try {
       WebRequest req = WebRequest.Create ( "http://google.ru");
      req.proxy = ( pr == null ) ? null : pr;
      req.Timeout = 4000;
      req.GetResponse();
    }
    catch {
      pr = ReturnProxy();
   }
}

/* Функция для получение прокси */
private WebProxy ReturnProxy() {
     WebProxy wbp = null;
     if ( proxyList.Count != 0) {
          string line = proxyList.Dequeue();
          wbp = new WebProxy ( line.Split ( ':')[0] , int.Parse ( line.Split ( ':' )[1]);
     }
     return wbp;
}

/* Функция для загрузки прокси */
private void LoadProxy () {
    string[] array = File.ReadAllLines ( "proxy.txt" );
    foreach ( string str in array ) {
         proxyList.Enqueue(str);
    }
    Array.Clear ( array  , 0 , array.Length);
 }
}
Ну и собстна , где-то там создаем класс и используем его элемент-функцию "Request" , которая в случаем не валидного прокси прочитает из очереди следующий

К сожалению все ровно не работает,ставлю на свой реквест это pr == null ) ? null : pr и все ровно "ноль на массу"...
  Ответить с цитированием
Старый 11.08.2012, 00:57   #9
Почетный Пользователь
 Рыцарь
Аватар для the-boxi
 
the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(
Регистрация: 09.02.2011
Сообщений: 373
Популярность: 38009
Сказал(а) спасибо: 612
Поблагодарили 448 раз(а) в 175 сообщениях
Отправить сообщение для the-boxi с помощью ICQ Отправить сообщение для the-boxi с помощью MSN Отправить сообщение для the-boxi с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

используй lock
________________
Разработка программ на заказ, все вопросы skype - the-boxi, ICQ - 616027961
  Ответить с цитированием
Старый 11.08.2012, 00:58   #10
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: реализовать прокси в потоках

Второй день слежу за вашими велосипедами, это так забавно ^^
Ща ченить накидаю
Если я не ошибаюсь, здесь нужно применить паттерн синглтон
________________
Talk is cheap. Show me the code
— Linus Torvalds

Последний раз редактировалось Yukikaze; 11.08.2012 в 01:00.
  Ответить с цитированием
Старый 11.08.2012, 01:06   #11
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от the-boxiПосмотреть сообщение
используй lock

нене отпадает, думаю объяснять почему - нет смысла так как минус только 1, и очень очевидный.
Цитата:
Сообщение от YukikazeПосмотреть сообщение
Второй день слежу за вашими велосипедами, это так забавно ^^
Ща ченить накидаю
Если я не ошибаюсь, здесь нужно применить паттерн синглтон

Был бы очень вам преблагодарен)
  Ответить с цитированием
Старый 11.08.2012, 03:09   #12
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: реализовать прокси в потоках

Чето подумал и решил, что можно отделаться одним статичным классом
Код:
    static class ProxyQ
    {
        private static readonly object sync = new object();
        public static readonly Queue<string> Proxyes;
        static ProxyQ()
        {
            Proxyes = new Queue<string>();
        }
        private static bool Check(string proxy)
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://google.ru/");
            req.Proxy = new WebProxy(proxy);
            req.Timeout = 5000;
            try
            {
                HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
                return resp.StatusCode == HttpStatusCode.OK;
            }
            catch
            {
                return false;
            }
        }

        public static void Add(IEnumerable<string> proxyes)
        {
            foreach (string proxy in proxyes)
            {
                Proxyes.Enqueue(proxy);
            }
        }

        public static void Add(string proxy)
        {
            Proxyes.Enqueue(proxy);
        }

        public static string Get()
        {
            while (Proxyes.Count > 0)
            {
                string proxy;
                lock (sync) proxy = Proxyes.Dequeue();
                if (Check(proxy)) return proxy;
            }
            return null;
        }
    }
Вот пример использования
Код:
ProxyQ.Add("proxy"); //или ProxyQ.Add(new []{"proxy", "proxy", "proxy"}); или даже ProxyQ.Proxyes = new Queue<string>(массив проксей);
Console.WriteLine(ProxyQ.Get());
Метод Get() возвращает первый попавшийся рабочий прокси из очереди
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Пользователь сказал cпасибо:
[Na`Vi]DendI (11.08.2012)
Старый 11.08.2012, 04:07   #13
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от YukikazeПосмотреть сообщение
Чето подумал и решил, что можно отделаться одним статичным классом
Код:
    static class ProxyQ
    {
        private static readonly object sync = new object();
        public static readonly Queue<string> Proxyes;
        static ProxyQ()
        {
            Proxyes = new Queue<string>();
        }
        private static bool Check(string proxy)
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://google.ru/");
            req.Proxy = new WebProxy(proxy);
            req.Timeout = 5000;
            try
            {
                HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
                return resp.StatusCode == HttpStatusCode.OK;
            }
            catch
            {
                return false;
            }
        }

        public static void Add(IEnumerable<string> proxyes)
        {
            foreach (string proxy in proxyes)
            {
                Proxyes.Enqueue(proxy);
            }
        }

        public static void Add(string proxy)
        {
            Proxyes.Enqueue(proxy);
        }

        public static string Get()
        {
            while (Proxyes.Count > 0)
            {
                string proxy;
                lock (sync) proxy = Proxyes.Dequeue();
                if (Check(proxy)) return proxy;
            }
            return null;
        }
    }
Вот пример использования
Код:
ProxyQ.Add("proxy"); //или ProxyQ.Add(new []{"proxy", "proxy", "proxy"}); или даже ProxyQ.Proxyes = new Queue<string>(массив проксей);
Console.WriteLine(ProxyQ.Get());
Метод Get() возвращает первый попавшийся рабочий прокси из очереди

Спасибо большое) Разобрал код всё отлично,но не могу понять одного,как впихнуть в мой класс в реквест уже чекнутые прокси ? Спасибо еще раз .
  Ответить с цитированием
Старый 11.08.2012, 05:30   #14
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: реализовать прокси в потоках

не понял вопроса...
Тебе нужно заюзать прокси в реквесте
Код:
WebRequest req = WebRequest.Create(url);
req.Proxy = new WebProxy(ProxyQ.Get());
или сохранить уже чекнутые для дальнейшего использования?
Код:
WebRequest req = WebRequest.Create(url);
string proxy = ProxyQ.Get();
гдетоОбъявленныйСписок.Add(proxy);
req.Proxy = new WebProxy(proxy);
________________
Talk is cheap. Show me the code
— Linus Torvalds

Последний раз редактировалось Yukikaze; 11.08.2012 в 07:29.
  Ответить с цитированием
Пользователь сказал cпасибо:
[Na`Vi]DendI (11.08.2012)
Старый 11.08.2012, 06:11   #15
Заблокирован
 Сержант
Аватар для [Na`Vi]DendI
 
[Na`Vi]DendI на правильном пути[Na`Vi]DendI на правильном пути
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
Отправить сообщение для [Na`Vi]DendI с помощью Skype™
 
По умолчанию Re: реализовать прокси в потоках

Цитата:
Сообщение от YukikazeПосмотреть сообщение
не понял вопроса...
Тебе нужно заюзать прокси в реквесте
Код:
WebRequest req = WebRequest.Create(url);
req.Proxy = new WebProxy(ProxyQ.Get());
или сохранить уже чекнутые для дальнейшего использования?
Код:
WebRequest req = WebRequest.Create(url);
string proxy = ProxyQ.Get();
гдетоОбъявленныйСписок.Add(proxy);
req.Proxy = new WebProxy(ProxyQ.Get());

Спасибо.Видимо это я туповат еще..Все сделал точно так,но результата нет..(
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Прокси в потоках [Na`Vi]DendI Вопросы и ответы, обсуждения 9 01.07.2012 01:35
Как такое можно реализовать? iamzero Общение разработчиков 11 31.05.2012 21:07
[Статья] Как реализовать сумму прописью на С++ GAHIK С/С++ 2 09.01.2012 01:49

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 04:10.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net