|
реализовать прокси в потоках - Вопросы и ответы, обсуждения - Ваши вопросы по C# только в данном разделе |
08.08.2012, 14:00
|
#1
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
реализовать прокси в потоках
Возможно ли сделать так что бы программа брала из списка прокси,если 1 прокси будет не валид то брала следующий ? Спасибо.
|
|
|
09.08.2012, 10:10
|
#2
|
|
|
|
Рыцарь
|
Регистрация: 09.02.2011
Сообщений: 373
Популярность: 38009
Сказал(а) спасибо: 612
Поблагодарили 448 раз(а) в 175 сообщениях
|
Re: реализовать прокси в потоках
Конечно можно, дай код там где у тебя реализован много-поток и переменную в которой хранятся прокси!
________________
Разработка программ на заказ, все вопросы skype - the-boxi, ICQ - 616027961
|
|
|
09.08.2012, 16:49
|
#3
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
Re: реализовать прокси в потоках
Последний раз редактировалось [Na`Vi]DendI; 09.08.2012 в 16:53.
|
|
|
09.08.2012, 22:16
|
#4
|
|
|
|
Капитан
|
Регистрация: 11.08.2010
Сообщений: 254
Популярность: 9232
Сказал(а) спасибо: 300
Поблагодарили 334 раз(а) в 223 сообщениях
|
Re: реализовать прокси в потоках
Код:
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пасибо:
|
|
09.08.2012, 22:33
|
#5
|
|
|
|
Пехотинец
|
Регистрация: 28.12.2009
Сообщений: 75
Популярность: 427
Сказал(а) спасибо: 19
Поблагодарили 38 раз(а) в 23 сообщениях
|
Re: реализовать прокси в потоках
да, но есть прокси которые вместо целевой страницы дают свою, так что чекинг через гугл не всегда есть правильно !
|
|
|
09.08.2012, 22:49
|
#6
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
Re: реализовать прокси в потоках
Спасибо большое.Но в переменной pr почему-то всегда пусто.
Всё что мне надо это что бы при многопоточном бруте на каждую отправку запроса был новый прокси из списка,как только он закончится что бы прокси ишли снова с начала списка.
Последний раз редактировалось [Na`Vi]DendI; 09.08.2012 в 23:09.
|
|
|
11.08.2012, 00:32
|
#7
|
|
|
|
Капитан
|
Регистрация: 11.08.2010
Сообщений: 254
Популярность: 9232
Сказал(а) спасибо: 300
Поблагодарили 334 раз(а) в 223 сообщениях
|
Re: реализовать прокси в потоках
|
|
|
11.08.2012, 00:52
|
#8
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
Re: реализовать прокси в потоках
|
Цитата: |
|
|
|
|
|
|
К сожалению все ровно не работает,ставлю на свой реквест это pr == null ) ? null : pr и все ровно "ноль на массу"...
|
|
|
11.08.2012, 00:57
|
#9
|
|
|
|
Рыцарь
|
Регистрация: 09.02.2011
Сообщений: 373
Популярность: 38009
Сказал(а) спасибо: 612
Поблагодарили 448 раз(а) в 175 сообщениях
|
Re: реализовать прокси в потоках
используй lock
________________
Разработка программ на заказ, все вопросы skype - the-boxi, ICQ - 616027961
|
|
|
11.08.2012, 00:58
|
#10
|
|
|
|
Сержант
|
Регистрация: 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
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
Re: реализовать прокси в потоках
|
|
|
11.08.2012, 03:09
|
#12
|
|
|
|
Сержант
|
Регистрация: 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пасибо:
|
|
11.08.2012, 04:07
|
#13
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
Re: реализовать прокси в потоках
Спасибо большое) Разобрал код всё отлично,но не могу понять одного,как впихнуть в мой класс в реквест уже чекнутые прокси ? Спасибо еще раз .
|
|
|
11.08.2012, 05:30
|
#14
|
|
|
|
Сержант
|
Регистрация: 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пасибо:
|
|
11.08.2012, 06:11
|
#15
|
|
|
|
Сержант
|
Регистрация: 06.06.2012
Сообщений: 131
Популярность: 102
Сказал(а) спасибо: 141
Поблагодарили 131 раз(а) в 78 сообщениях
|
Re: реализовать прокси в потоках
Спасибо.Видимо это я туповат еще..Все сделал точно так,но результата нет..(
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 04:10.
|
|