Docker + SQL + Zenno Poster Быстрый старт

Docker + SQL + Zenno Poster Быстрый старт
Расширяем наши возможности. Установим полноценную "карманную" БД MySQL с помощью Docker. Подключимся и создадим тестовую базу данных. Создадим тестовый проект и научимся взаимодействовать со всем этим добром.


Нам понадобиться

  • Установленный и работающий Docker (его установка была в предыдущем посте)
  • База данных. Мы создадим отдельный Docker контейнер с MySQL и нашей переносной базой.
  • Клиент для подключения к созданной базе данных
  • Шаблон Zenno Poster



Делаем

Создадим папку где будем хранить контейнер с базой. И выставляем права на них.

sudo mkdir -p /app/publicproxy-db/DB sudo chown -R ubuntu:ubuntu /app/publicproxy-db sudo nano /app/publicproxy-db/docker-compose.ymlcode-box

Обращаем внимание на переменные окружения в которых нас интересуют такие параметры как:

  • Пользователь
  • Пароль
  • Пароль Root
  • База данных
  • Внешний Порт
После чего переходим в только что созданную папку и стартуем наш контейнер.

cd /app/publicproxy-db/ sudo docker-compose up -dcode-box
Docker MySQL

Если у вас тоже самое что на скрине - поздравляю, можно переходить к следующему шагу




Подключаемся к нашей БД

Для подключения нам понадобится Клиент Heidisql. Подойдёт Portable версия. Рекомендую поставить стиль Charcoal Dark Slate и шрифт Arial 12 px. Нас приветствует мастер настройки новых подключений

Heidisql settings

Можете настроить папки как удобно. Создаём новое подключение в котором заполняем

  • ip адрес Хоста
  • Пользователь
  • Пароль
  • Порт

Если всё сделано правильно то при подключении мы увидим:

Heidisql settings


Работаем с таблицей через клиент

Самое время потренироваться на чём нибудь. Последние версии прокси чекера обладают рядом недостатков, которые я предлагаю решить шаблоном зенно на post/get.

  • во многопотоке берёт проксю из большой сырой базы(спарсили заранее)
  • назначает каждому гет запросу взятую из сырухи проксю
  • выполняет гет запрос на ресурс который отображает информацию об ip адресе
  • если получает какой то ответ значит прокси живой
  • записывает ответ в базу данных
Нам нужно для начала создать саму базу данных. В Heidisql открываем вкладку запрос, вставляем туда то что написано в блоке ниже и нажимаем F9

CREATE TABLE IF NOT EXISTS `public_proxy_checker` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `proxy_full` varchar(35) DEFAULT NULL, `proxy_date` datetime DEFAULT NULL, `proxy_unixdate` varchar(35) DEFAULT NULL, `proxy_ip` varchar(35) DEFAULT NULL, `proxy_port` varchar(35) DEFAULT NULL, `proxy_type` varchar(35) DEFAULT NULL, `proxy_country` varchar(35) DEFAULT NULL, `proxy_country_code` varchar(35) DEFAULT NULL, `proxy_region` varchar(35) DEFAULT NULL, `proxy_zip` varchar(35) DEFAULT NULL, `proxy_lat` varchar(35) DEFAULT NULL, `proxy_lon` varchar(35) DEFAULT NULL, `proxy_timezone` varchar(35) DEFAULT NULL, `proxy_isp` varchar(35) DEFAULT NULL, `proxy_org` varchar(35) DEFAULT NULL, `proxy_as` varchar(35) DEFAULT NULL, `proxy_deadz` smallint unsigned DEFAULT '0', `proxy_status` smallint unsigned DEFAULT '0', `proxy_use_time` int unsigned DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8MB4;code-box

Результатом будет создана база. Иногда сразу по нажатию F5 а иногда нужно перезайти в Heidisql но ничего страшного. Я долгое время не понимал тоже, а потом привык к периодическим крэшам. И мне программа спустя время начала нравиться, нужно отдать должное разработчикам, ведь программа бесплатная




Работаем с таблицей из шаблона Zenno Poster

Для того чтобы работать с созданной базой из Zenno Poster предлагаю рассмотреть вот этот шаблон. В последнем экшене нам необходимо подредактировать под себя

server=ZZZ.XXX.CCC.VVV;user id=publicproxy;database=publicproxy;password=YOUR_PASSWORD;persistsecurityinfo=True;port=10000code-box
вписываем свои данные и сохраняем шаблон. А в фаил input-proxy.txt кладём всю проксю которую мы хотим проверять. Обязательным условием все строки в этом фаиле должны начинаться с протокола вот так:

  • socks5://111.111.111.111:2222
  • socks5://111.111.111.111:3333
  • socks4://111.111.111.111:4444
  • socks4://111.111.111.111:5555
  • http://111.111.111.111:23410
  • http://111.111.111.111:10800

Если не знаете какой протокол - советую вписать наугад socks4 или socks5. Быстро и массово добавить протокол в начало строки можно например в notepad++ нужно:

  • нажать сочетание клавиш CTRL + H
  • Установить: "режим поиска Регуляр. Выражен."
  • В поле Найти вписываем "^" без кавычек
  • В поле заменить на вписываем "socks5://" без кавычек
  • нажать "Заменить все"
Разобрались - запускаем шаблон и через какое то время обновив Heidisql(F5) получаем:

succsess


Подключаем голову и Zenno

Теперь когда у нас есть данные мы можем поиграться с возможностями которые нам даёт SQL. В прокси чекере реализован механизм в котором можно добавить диапазоны ip адресов для того чтобы сделать white или blacklist. Сама концепция там очень не удобная и потребляет много ресурсов - попробуем сделать это сами но при помощи SQL запроса(ов). Рассмотрим примеры запросов. Их вбиваем в Heidisql на закладке "запрос" и нажимаем F9

Таким запросом отобразим все рабочие прокси из Russia SELECT proxy_full FROM public_proxy_checker WHERE proxy_country='Russia';code-box
Heidisql querry

Далее я пошёл сначала более сложным путём

SELECT proxy_full FROM public_proxy_checker WHERE proxy_country='Russia' OR proxy_country='Belarus' OR proxy_country='Ukraine' OR proxy_country='Kazakhstan' OR proxy_country='Albania' OR proxy_country='Armenia' OR proxy_country='Austria' OR proxy_country='Bosnia and Herzegovina' OR proxy_country='Bulgaria' OR proxy_country='Bulgaria' OR proxy_country='Croatia' OR proxy_country='Czechia' OR proxy_country='Denmark' OR proxy_country='France' OR proxy_country='Georgia' OR proxy_country='Germany' OR proxy_country='Hungary' OR proxy_country='Ireland' OR proxy_country='Israel' OR proxy_country='Italy' OR proxy_country='Kosovo' OR proxy_country='Kyrgyzstan' OR proxy_country='Latvia' OR proxy_country='Lithuania' OR proxy_country='Moldova' OR proxy_country='Netherlands' OR proxy_country='Poland' OR proxy_country='Portugal' OR proxy_country='Romania' OR proxy_country='Serbia' OR proxy_country='Slovakia' OR proxy_country='Slovenia' OR proxy_country='Spain' OR proxy_country='Sweden' OR proxy_country='Turkey' OR proxy_country='United Kingdom';code-box
Heidisql querry 2

Как оказалось можно гораздо проще

SELECT proxy_full FROM public_proxy_checker WHERE proxy_timezone REGEXP '^(Europe/)';code-box
SELECT proxy_full FROM public_proxy_checker WHERE proxy_timezone REGEXP '^(America/)';code-box
SELECT proxy_full FROM public_proxy_checker WHERE proxy_timezone REGEXP '^(Asia/)';code-box
SELECT proxy_full FROM public_proxy_checker WHERE proxy_timezone REGEXP '^(Pacific/)';code-box

Если мы хотим отобразить именно всё содержимое

SELECT * FROM public_proxy_checker WHERE proxy_timezone REGEXP '^(Europe/)';code-box
SELECT * FROM public_proxy_checker WHERE proxy_timezone LIKE "Europe%" ORDER BY proxy_country;code-box
SELECT * FROM public_proxy_checker WHERE proxy_timezone LIKE "%merica%" ORDER BY proxy_country;code-box
Heidisql querry 3

Ещё интересные запросы:

SELECT * FROM public_proxy_checker WHERE proxy_timezone LIKE "%merica%" AND proxy_timezone <> 'America/Sao_Paulo' ORDER BY proxy_country;code-box
SELECT * FROM public_proxy_checker WHERE proxy_timezone LIKE "%merica%" AND proxy_country <> 'Argentina' AND proxy_country <> 'Brazil' ORDER BY proxy_country;code-box
TRUNCATE `public_proxy_checker`; удалит всё из бдcode-box



Про переносимость

Теперь в любой момент мы можем потушить нащ контейнер. Затем заархивировать его и в таком виде передать на любой другой сервер с установленным Docker, и стартануть его оттуда. Тогда мы будем работать с того же самого места на котором мы остановились, а MySQL даже не заметит что он куда то переехал.




Итог

Мы научились быстро разворачивать "переносимую" базу данных, писать данные в эту бд из zenno poster, тому что некоторые штуки будет проще сделать на стороне самого SQL

Post a Comment

Более новые Старые