- Регистрация
- 23.12.2014
- Сообщения
- 14 417
- Благодарностей
- 5 454
- Баллы
- 113
Тут родился сниппет =)
Тут первая версия.
Выражаю благодарность @nole @samsonnn @Dimionix за активное участие при создании v1
Так же выражаю благодарность @DmitryAk @Dmitrybyapple @Sergeevich68 за активное участие при создании v2
Краткое описание сниппета.
Берет строку из списка проверяет на валид и бан на заданном сайте пока не найдет рабочую. Далее назначает прокси по умолчанию и в перменную. Далее записывает рабочую прокси в конец списка. Не рабочие выкидывает. Можно сделать, что бы не рабочие тоже записывал (подробнее смотрите строка 28 и 33). Приложил шаблон со входными настройками.
Подробное описание сниппета по строкам.
1. TurnProxy - Использовать ли прокси. Переменная для входных настроек (Boolean) Принимает значения True/False
4. Proxy - это название списка с прокси (регистрозависимо).
5. 100 - кол-во неудачных проверок подряд.
9. Protocol - Выбор протокола. Переменная для входных настроек (Select) {http|socks5}
18. Выход если список прокси пуст.
24-31. Ключевое изменение v2.
CHECK_ADRESS - переменная с URL сайта для проверки, задается в шаблоне.
Проверка прокси на:
^$ - пустой ответ
blocked - на слово blocked в ответе
заблокирован - на слово заблокирован в ответе
407 Proxy Authenticaon - неверном логине и пароле прокси
Если прокси с пустым ответом (не рабочая) или содержит любое из заданых слов, то мы ее не используем и берем следующую. Я делал для сайта Авито, для своего сайта загоняйте прокси в бан и смотрите что пишет в ответе.
У меня "blocked" писало в заголовках, а "заблокирован" писало в ответе. При разных обстоятельствах.
30. debug - Назначаем ответ запроса в переменную "debug". (Таким образом вы сможете проверить работает ли поиск при изменении значений)
33. Если прокси прошли проверку, то записываем в конец списка. (остальные удаляются из списка)
34. Назначаем прокси по умолчанию в шаблон.
35. Назначаем прокси в переменную "proxy" для использования с запросами или по личному усмотрению.
36. Возвращаем прокси в ответе сниппета (на всякий случай =) )
39. Записываем прокси в конец если даже она не прошла проверку. (28 строку нужно закоментировать //)
40. Сообщение в лог, что прокси не прошла проверку.
44. Сообщение в лог, что список пуст или закончились попытки.
Тут первая версия.
Выражаю благодарность @nole @samsonnn @Dimionix за активное участие при создании v1
Так же выражаю благодарность @DmitryAk @Dmitrybyapple @Sergeevich68 за активное участие при создании v2
C#:
if (project.Variables["TurnProxy"].Value == "True" )
{
// проверяем включены-ли прокси или нет.
IZennoList proxyList = project.Lists["Proxy"]; //Получаем указатель на лист с проксями
int count = 100; // количество неудачных проверок подряд
string protocol = "";
if (project.Variables["Protocol"].Value == "") //(пустая переменная = http://)
project.Variables["Protocol"].Value = "http";
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(project.Variables["CHECK_ADRESS"].Value, // CHECK_ADRESS - url для проверки
protocol + proxy,
"UTF-8",
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
5000);
project.Variables["debug"].Value = content;
if (!Regex.Match(content, "^$|blocked|заблокирован|407 Proxy").Success) // ""- если ответ пустой, && - или, содержит blocked в заголовках или ответе, то прокси не подходит
{
proxyList.Add(proxy); // записываем живую проксю в конец списка*
instance.SetProxy(protocol + proxy); // назначаем прокси в проект
project.Variables["proxy"].Value = protocol + proxy; // назначем прокси в переменную
return proxy; // возвращаем в ответе снипета прокси
}
// proxyList.Add(proxy); // записываем проксю в конец списка в любом случае (предыдущее за комментировать!)*
project.SendWarningToLog(proxy+" Прокся плохая,чекаю ещё!"); // если прокся плохая пишем,что она плохая.
}
throw new Exception("Все прокси полное говнo!");//Если израсходовали все попытки подключения , то выходим из блока c# с таким сообщением.
}
}
Берет строку из списка проверяет на валид и бан на заданном сайте пока не найдет рабочую. Далее назначает прокси по умолчанию и в перменную. Далее записывает рабочую прокси в конец списка. Не рабочие выкидывает. Можно сделать, что бы не рабочие тоже записывал (подробнее смотрите строка 28 и 33). Приложил шаблон со входными настройками.
Подробное описание сниппета по строкам.
1. TurnProxy - Использовать ли прокси. Переменная для входных настроек (Boolean) Принимает значения True/False
4. Proxy - это название списка с прокси (регистрозависимо).
5. 100 - кол-во неудачных проверок подряд.
9. Protocol - Выбор протокола. Переменная для входных настроек (Select) {http|socks5}
18. Выход если список прокси пуст.
24-31. Ключевое изменение v2.
CHECK_ADRESS - переменная с URL сайта для проверки, задается в шаблоне.
C#:
if (!Regex.Match(content, "^$|blocked|заблокирован|407 Proxy").Success)
^$ - пустой ответ
blocked - на слово blocked в ответе
заблокирован - на слово заблокирован в ответе
407 Proxy Authenticaon - неверном логине и пароле прокси
Если прокси с пустым ответом (не рабочая) или содержит любое из заданых слов, то мы ее не используем и берем следующую. Я делал для сайта Авито, для своего сайта загоняйте прокси в бан и смотрите что пишет в ответе.
У меня "blocked" писало в заголовках, а "заблокирован" писало в ответе. При разных обстоятельствах.
Назначьте прокси в проекте.
Сделайте GET-запрос к главной странице сайта, сохраните код в отдельный файл.
Далее сделайте конструкцию GET-запрос далее пауза 0 сек и обратно запрос. Запустите на 10-20 сек. Остановите.
Если на сайте стоит защита, то она вас идентифицирует как бота и заблокирует доступ к сайту.
Далее скопируйте ответ запроса и внимательно посмотрите на текст. Поищите в заголовках слово Blocked или подобные, если нету ищите ниже.
Как найдете слово. Допуситим заблокирован. Скопируйте это слово и проверьте нет ли его в первом запросе, который мы сохранили в самом начале.
Если нет, то вы нашли идентификатор бана.
Далее заменяйте слова по своему усмотрению, если 4 значения вам не нужно, можете убавить или прибавить.
Например нам нужно убрать 407 Proxy
И слово заблокирован поменять на слово блокировка.
Получаем
И не забудьте поменять CHECK_ADRESS на свой сайт.
Ничего сложного =)
Но если вдруг будет сложно пишите в теме)
Сделайте GET-запрос к главной странице сайта, сохраните код в отдельный файл.
Далее сделайте конструкцию GET-запрос далее пауза 0 сек и обратно запрос. Запустите на 10-20 сек. Остановите.
Если на сайте стоит защита, то она вас идентифицирует как бота и заблокирует доступ к сайту.
Далее скопируйте ответ запроса и внимательно посмотрите на текст. Поищите в заголовках слово Blocked или подобные, если нету ищите ниже.
Как найдете слово. Допуситим заблокирован. Скопируйте это слово и проверьте нет ли его в первом запросе, который мы сохранили в самом начале.
Если нет, то вы нашли идентификатор бана.
Далее заменяйте слова по своему усмотрению, если 4 значения вам не нужно, можете убавить или прибавить.
C#:
if (!Regex.Match(content, "^$|blocked|заблокирован|407 Proxy").Success)
И слово заблокирован поменять на слово блокировка.
Получаем
C#:
if (!Regex.Match(content, "^$|blocked|блокировка").Success)
Ничего сложного =)
Но если вдруг будет сложно пишите в теме)
30. debug - Назначаем ответ запроса в переменную "debug". (Таким образом вы сможете проверить работает ли поиск при изменении значений)
33. Если прокси прошли проверку, то записываем в конец списка. (остальные удаляются из списка)
34. Назначаем прокси по умолчанию в шаблон.
35. Назначаем прокси в переменную "proxy" для использования с запросами или по личному усмотрению.
36. Возвращаем прокси в ответе сниппета (на всякий случай =) )
39. Записываем прокси в конец если даже она не прошла проверку. (28 строку нужно закоментировать //)
40. Сообщение в лог, что прокси не прошла проверку.
44. Сообщение в лог, что список пуст или закончились попытки.
Вложения
-
17,1 КБ Просмотры: 330
Последнее редактирование: