- Регистрация
- 23.12.2014
- Сообщения
- 14 417
- Благодарностей
- 5 454
- Баллы
- 113
Тут новая версия
Тут родился сниппет =)
Выражаю благодарность @nole @samsonnn @Dimionix за активное участие при его создании.
Краткое описание сниппета.
Берет строку прокси из списка, проверяет его, если все нормально назначает и на выбор: кладет в конец списка живую прокси (по умолчанию), кладет в конец списка любую прокси, не кладет в конец списка. (см. подробное описание 3 ,13 ,17 строка). Если прокси не активна, то берет следующую до тех пор пока не найдет рабочую или кол-во неудачных проверок превысит установленный лимит (см. подробное описание 2 строка)
Подробное описание сниппета по строкам.
1. Proxy - это название списка с прокси (регистрозависимо).
2. 10 - кол-во неудачных проверок подряд.
3. Брать строки с удалением без записи в конец списка (13 и 17 сторки должны быть закоментированны).
4. Protocol - это название перменной в прокете(регистрозависимо), которая ответсвенна за протокол должна принимать значения "socks5://" или "http://" без кавычек
5. Лочим код.
6. Цикл.
7. Выход из цикла, если список пуст и завершение ошибкой.
8. Берем первую строку из списка и назначаем прокси в переменную для запроса.
9. Удаляем строку из списка.
11. GET-запрос на сайт http://chek.zennolab.com/
12. Проверка (чек) прокси.
13. Запись рабочей прокси в конец списка (3 и 17 стоки должны быть закоментированны).
14. Назначаем прокси в проекте.
15. Возвращаем прокси (IP будет в переменной снипета).
17. Записывать все прокси в конец списка (3 и 13 строки должны быть закоментированны).
19. Вывод в лог сообшения "Ошибка" при неудачном выполнении сниппета.
Тут родился сниппет =)
Выражаю благодарность @nole @samsonnn @Dimionix за активное участие при его создании.
C#:
IZennoList proxyList = project.Lists["Proxy"];
int count = 10; // количество неудачных проверок подряд
//int count = proxyList.Count; // если строки берутся с удалением БЕЗ записи в конец списка (проверяем до талого, так сказать)
string protocol = project.Variables["Protocol"].Value; // из переменной, в переменной значение socks5:// или http:// (пустая переменная = http://)
lock (SyncObjects.ListSyncer) {
for (int i = 0; i < count; i++) {
if (proxyList.Count == 0) break;
string proxy = proxyList[0];
proxyList.RemoveAt(0);
var content = ZennoPoster.HttpGet("http://chek.zennolab.com/", protocol + proxy);
if (content.Contains(Regex.Match(proxy, @"(\d{1,3}\.){3}\d{1,3}").Value)) {
proxyList.Add(proxy); // записываем живую проксю в конец списка
instance.SetProxy(protocol + proxy);
return proxy;
}
// proxyList.Add(proxy); // записываем проксю в конец списка в любом случае (предыдущее закомментировать!)
}
throw new Exception("Ошибка!");
}
Берет строку прокси из списка, проверяет его, если все нормально назначает и на выбор: кладет в конец списка живую прокси (по умолчанию), кладет в конец списка любую прокси, не кладет в конец списка. (см. подробное описание 3 ,13 ,17 строка). Если прокси не активна, то берет следующую до тех пор пока не найдет рабочую или кол-во неудачных проверок превысит установленный лимит (см. подробное описание 2 строка)
Подробное описание сниппета по строкам.
1. Proxy - это название списка с прокси (регистрозависимо).
2. 10 - кол-во неудачных проверок подряд.
3. Брать строки с удалением без записи в конец списка (13 и 17 сторки должны быть закоментированны).
4. Protocol - это название перменной в прокете(регистрозависимо), которая ответсвенна за протокол должна принимать значения "socks5://" или "http://" без кавычек
5. Лочим код.
6. Цикл.
7. Выход из цикла, если список пуст и завершение ошибкой.
8. Берем первую строку из списка и назначаем прокси в переменную для запроса.
9. Удаляем строку из списка.
11. GET-запрос на сайт http://chek.zennolab.com/
12. Проверка (чек) прокси.
13. Запись рабочей прокси в конец списка (3 и 17 стоки должны быть закоментированны).
14. Назначаем прокси в проекте.
15. Возвращаем прокси (IP будет в переменной снипета).
17. Записывать все прокси в конец списка (3 и 13 строки должны быть закоментированны).
19. Вывод в лог сообшения "Ошибка" при неудачном выполнении сниппета.
Последнее редактирование: