Необходимые требования
- Сервер с Root доступом. Рекомендую вот этот
- Установленный и работающий Docker (его установка была описана тут)
- База данных. Мы создадим отдельный Docker контейнер с MySQL и нашей переносной базой.
- Клиент для подключения к созданной базе данных
- Лицензия Zenno Poster
- Шаблон Zenno Poster
Подготовка
Создадим папку где будем хранить контейнер с базой.
Выставляем необходимые права
Создаём и заполняем фаил docker-compose.yml таким содержимым
В процессе заполнения обращаем внимание на переменные окружения в которых нас интересуют такие параметры как:
- Пользователь: MYSQL_USER
- Пароль: MYSQL_PASSWORD
- Пароль Root: MYSQL_ROOT_PASSWORD
- База данных: MYSQL_DATABASE
- Внешний Порт: 10000:3306
Переходим в только что созданную папку
Стартуем наш контейнер.
Если у вас тоже самое что на скрине - поздравляю, можно переходить к следующему шагу
Подключаемся к нашей БД
Для подключения нам понадобится Клиент Heidisql. Подойдёт Portable версия. Рекомендую поставить стиль Charcoal Dark Slate и шрифт Arial 12 px.
При открытии Heidisql нас приветствует мастер настройки новых подключений
Советую сразу настроить папки как вам удобно. Создаём новое подключение которое заполняем данными из фаила docker-compose.yml
- ip адрес Хоста
- Пользователь
- Пароль
- Порт
Если всё сделано правильно то при подключении мы увидим:
Работаем с БД через клиент
Самое время потренироваться на чём нибудь.
Для начала нужно создать саму базу данных. В Heidisql открываем вкладку запрос, вставляем туда то что написано в блоке ниже и нажимаем F9
`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;
Результатом будет создана база. Иногда сразу по нажатию F5 а иногда нужно перезайти в Heidisql но ничего страшного. Я долгое время не понимал тоже, а потом привык к периодическим крэшам. И мне программа спустя время начала нравиться, нужно отдать должное разработчикам, ведь программа бесплатная
О шаблоне
Последние версии прокси чекера обладают рядом недостатков, которые я предлагаю решить шаблоном Zenno на post/get.
- Функционал шаблона
- Во многопотоке берёт проксю из большой сырой базы прокси. Которую мы спарсили заранее. Если у вас нет такой базы рекомендую ознакомится с шаблоном по парсингу proxy на get запросах.
- Назначает каждому Get запросу проксю взятую из сырухи
- Выполняет Get запрос на ресурс который отображает информацию об ip адресе
- Если был получен ответ - значит прокси живой
- Производит запись живой прокси в базу данных
Работаем с таблицей из шаблона Zenno Poster
Для того чтобы работать с созданной базой из Zenno Poster предлагаю рассмотреть вот этот шаблон. В последнем экшене нам необходимо подредактировать под себя
Вписываем свои данные и сохраняем шаблон. А в фаил 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) получаем:
Результаты чека + магия MySQL запросов
Спустя какое то время у нас накопятся данные и мы сможем поиграться с возможностями которые нам даёт MySQL.
В проксичекере реализован механизм в котором можно добавить диапазоны ip адресов для того чтобы сделать white или blacklist. Сама концепция там очень не удобная и потребляет много ресурсов. Попробуем сделать это сами но при помощи SQL запроса(ов).
Рассмотрим примеры запросов. Их вбиваем в Heidisql на закладке "запрос" и нажимаем F9
Таким запросом отобразим все рабочие прокси из Russia
FROM public_proxy_checker WHERE proxy_country='Russia';
Далее я пошёл сначала более сложным путём
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';
Как оказалось можно гораздо проще
FROM public_proxy_checker WHERE proxy_timezone REGEXP '^(Europe/)';
FROM public_proxy_checker WHERE proxy_timezone REGEXP '^(America/)';
FROM public_proxy_checker WHERE proxy_timezone REGEXP '^(Asia/)';
FROM public_proxy_checker WHERE proxy_timezone REGEXP '^(Pacific/)';
Если мы хотим отобразить содержимое всех столбцов
FROM public_proxy_checker WHERE proxy_timezone REGEXP '^(Europe/)';
FROM public_proxy_checker WHERE proxy_timezone LIKE "Europe%" ORDER BY proxy_country;
FROM public_proxy_checker WHERE proxy_timezone LIKE "%merica%" ORDER BY proxy_country;
Ещё интересные запросы:
FROM public_proxy_checker WHERE proxy_timezone LIKE "%merica%" AND proxy_country <> 'Argentina' AND proxy_country <> 'Brazil' ORDER BY proxy_country;
Удалит всё из бд!!!
Про переносимость
Теперь в любой момент мы можем потушить наш контейнер. Затем заархивировать его и в таком виде передать на любой другой сервер с установленным Docker, и стартануть его оттуда. Тогда мы будем работать с того же самого места на котором мы остановились, а MySQL даже не заметит что он куда то переехал.
Итог
Мы научились быстро разворачивать "переносимую" базу данных, писать данные в эту БД из Zenno Poster, тому что некоторые штуки будет проще сделать на стороне самого SQL
Отправить комментарий