BAS-Статьи
January 27, 2023

BAS - элементарный Proxy Checker на http запросах (Часть вторая)

мануал для новичков и тех «хардскилл профи», что клепают «софт» на заказ с использованием эмуляции

*******************************


​Эта статья является продолжением продолжением данной темы. В ней мы допишем наш простой чекер прокси и заложим некий фундамент для следующей статьи.

Разбивка по темам (ссылки будут обновляться по мере выхода статей)

План статьи:

  1. Подготовка к проверке полученных прокси
  2. Создание функции на проверку
  3. Результат

1.Подготовка к проверке полученных прокси

В прошлой статье мы остановились на том, что мы получили список прокси с сайта — донора. Теперь нам нужно понять, как произвести проверку и составить сам скрипт.

Что было в конце предыдущей статьи

Для начала, давайте обсудим план действий. Сперва, на всякий случай, нам необходимо сохранить список полученных прокси, Далее нужно взять этот список, проверить его и записать результат. Для самой проверки, мы вновь воспользуемся http-клиентом. Но здесь есть небольшой нюанс: если мы используем кубик «прокси» из раздела «браузер», то он автоматически проверяет соединение и в случае ошибки, автоматически выводит ошибку подключения в лог. Но при этом, данный метод работает медленнее http-клиента. Сам же http-клиент не делает автоматическую проверку прокси, следовательно, нам будет необходимо сделать простой GET-запрос, и в случае положительного ответа, мы будем сохранять наш валидный результат.
Для самого GET-запроса, нам потребуется найти сайт с минимальным наполнением, без редиректов и минимальным весом страницы. Пошарив немного в интернете, самым легковесным сайтом, который я нашел, оказался — он. Идеально подходит для нашей задачи, ведь в нем нет ничего, кроме одной простенькой таблицы.
И так, все подготовительные этапы пройдены, приступаем к написанию скрипта.

2. Создание функции на проверку

Так как список проксей мы получили, сохраняем их в файл.

Сохранение прокси

Далее нам нужно их вновь прочитать. Мы не будем создавать новый ресурс и загружать из него. Если помните, еще в начале прошлой статьи, мы создавали ресурс «proxy» и настроили перезагрузку ресурса с таймаутом в 1 секунду (1000 миллисекунд). Эта опция поможет нам записать данные в файл и прочитать их без перезагрузки скрипта и создания лишних ресурсов. Для того, чтоб скрипт точно успел записать все строки, мы сделаем таймаут перед чтением этих самых строк.

Чтение с таймаутом

Мы воспользовались действием «спать» и указали время ожидания. Для полной уверенности, время ожидания, указываем на 1 единицу больше, чем время обновления ресурса. Читаем ресурс сразу в список и смотрим на результат.

Количество полученных прокси

Как мы видим, фишка с перезагрузкой ресурса, работает как надо. Создаем еще один список, в который мы будем помещать наши рабочие прокси и приступаем к написанию функции проверки.

Список наших гудов

Теперь создадим функцию. Для чего нам нужна отдельная функция? Для более компактного и удобного скрипта. Использование отдельных функций также помогает гораздо легче находить ошибки и редактировать отдельные части скрипта. Для создания отдельной функции, скликаем на полоску «main», у нас открывается список всех функций в скрипте. Сейчас у нас имеется только одна функция, давайте создадим еще одну. Для этого кликаем на красный плюс и вводим название функции. Я назову функцию «PROXYCHECKER».

Создание функции

После создания, у нас снова появляется пустой скрипт. Не пугайтесь, вы всегда можете нажать на строку, где раньше было написано «main» и вернуться к предыдущей части скрипта. А пока что, давайте создадим сам обработчик. Для этого нам понадобится цикл «foreach». Почему мы используем именно этот цикл? Потому что он создан специально для выполнения одинаковых действий со всеми элементами списка или массива.
В строке цикла, мы указываем список, в который читали наши прокси из файла.

Цикл Foreach

Как мы видим, форич автоматически создает вывод в лог. Можем изменить текст в логе, а можем оставить как есть. Элемент из списка прокси, форич возьмет сам и поместит его в переменную «FOREACH_DATA».

Теперь необходимо загрузить этот ip и порт в http-клиент. Для этого, мы воспользуемся действием «http-клиент прокси». Так как мы изначально не знаем, какой тип прокси мы взяли из списка (http или socks), ставим в «тип прокси» значение «auto».

Auto Proxy

В данный момент наша функция выглядит следующим образом:

Вид функции

Теперь нам необходимо создать GET-запрос к нашему сайту с минимальным наполнением. Как создать гет запрос, мы уже знаем, а так как у нашего «пустого» сайта нет никаких защит, можно даже не указывать заголовки.
Гет запрос.

https://gzmland.ru/

Также не забываем про время проверки соединения. По дефолту, он может пытаться соединиться очень и очень долго, дабы не терять лишнее время, укажем время ожидания на подключение к прокси (UpTime). Чем меньше время мы поставим, тем меньше валидных прокси мы получим (даже, если прокси по итогу были рабочие, но с очень долгой загрузкой). Нам же не нужны прокси, которые коннектятся очень долго, поэтому кликаем на песочные часы в нашем гет запросе и и выставляем значение в секундах равное «3».

часики тикают

Наш гет запрос добавлен. Сейчас обратимся к технической части баса. Суть в том, что если во время выполнения какого-либо действия происходит ошибка, бас автоматически прерывает скрипт. То есть, если прокся будет нерабочей, бас остановит весь скрипт. Чтобы нам этого избежать, мы обернем данное действие (GET-запрос) в обработчик ошибок. Сделать это очень просто, достаточно нажать на красный восклицательный знак в правом нижнем углу действия.

Обрабртчик ошибок

После данного действия, у нас автоматически создалась конструкция, которая проверяет наличие ошибки и в случае ее возникновения, скрипт не будет прерван. Теперь, мы немного модифицируем нашу конструкцию и допишем в кубик с «[[WAS_ERROR]]» двойное равно и слово «true». Это поможет нам определять была ли ошибка, и в следующей статье на основе этого действия, мы будем модернизировать данный чекер. Ну, а пока что, имеем следующего вида конструкцию:

конструкция

Можно считать этот момент нашим маленьким финалом, ведь осталось совсем немного действий и элементарный прокси чекер готов.
В случае, если ошибки не было, записываем элемент в созданный нами заранее список под названием «GOODS». Для этого добавим блок «else» и в него поместим наши гуды. На этом наша функция завершена.

функция целиком

Теперь, нам необходимо вернуться в нашу Main функцию. Кликаем по строке над нашими переменными, выбираем Main и листаем вниз.

Возвращение к истокам

Теперь в Main функции добавляем действие «вызов функции». Сделать это можно из модуля «логика скрипта», либо через поиск. В строке выбора функции которую добавляем, выбираем нашу функцию под названием «PROXYCHECKER». Последним действием добавим запись в наш ресурс «proxy» и скрипт готов.

Станция конечная

3. Результат

Ну все, наш элементарный прокси чекер готов, можем сохранять и проверять на работоспособность. Это самый простой, но при этом автоматизированный чекер. Вся его прелесть в том, что он сам находит список прокси под чек, и нам не нужно собирать их одной программой и вставлять в другую, либо просто собирать и отдельно чекать. Следующая статья будет посвящена модернизации данного чека. Мы добавим в него многопоток. Благодаря тому, что мы сделали его без эмуляции, он и так в десятки раз быстрее эмуляционной версии, а благодаря модернизации, мы ускорим его еще больше.
Пока дописывал финальный пункт, чекер успел пройти данное количество строк на стареньком ноуте:

Пройденные строки

Снова благодарю за внимание и выделенное на прочтение статьи время. Надеюсь, у вас хватило терпения прочитать полностью и до конца.​​

*******************************​