- Регистрация
- 16.03.2016
- Сообщения
- 2 008
- Реакции
- 1 704
- Баллы
- 113
Удобная система управления списками своих прокси (для ZennoPoster и не только)
Здравствуйте, меня зовут Юра, и я… люблю парсить

Ну, так исторически сложилось. Вдаваться в подробности не буду, скажу лишь, что за последние годы чего только ни приходилось парсить. И, конечно, для всего этого нужны прокси. Прокси нужны разные: серверные, мобильные, резидентские, быстрые, дешевые, российские, иностранные, четверки, шестерки, безлимитные и с оплатой за трафик… Иногда в один момент в работе с разными задачами используются несколько сотен, а то и тысяч самых различных прокси, собранных из самых разных мест: сервисов, складчин, самоподнятые и даже напаршенные…
В общем, скажу честно, разбираться в этом порой становится сложно, нередко я начинал путаться и забывал, откуда конкретный проект получает списки прокси… А если в каком-то сервисе пачка прокси меняется на другую, то, соответственно, меняются все доступы. И их нужно менять во всех проектах, в файлах, где лежат списки под разные задачи, в настройках шаблонов. В общем, постоянный геморрой с запоминанием, где еще я должен все поправить )) А если серверов несколько, и на каждом свои файлы/проекты/настройки… Ужас, в общем.
В итоге, в один момент у меня появилась мысль, что проще реализовать себе какую-то единую базу, где я могу держать все актуальные прокси, которые сейчас используются в работе, а все мои проекты и шаблоны будут уже непосредственно из нее подтягивать нужные списки прокси для работы. Т.е., если мне нужно что-то поменять, удалить, отключить, я просто это делаю в одном месте, соответственно, проекты всегда берут актуальную информацию.
Сперва все началось просто с базы данных, которую я правил прямо в phpMyAdmin, куда я зенкой напрямую делал запрос и получал нужные мне данные. Но это в Зенке возможно, есть кубик для работы с БД, далеко не в каждом софте такое реализовано ))) Поэтому потом я написал простенький php-скрипт, который взаимодействовал с базой, но обращаться к нему уже можно было обычными запросами, что облегчало задачу в других программах. Но в целом все равно было не очень удобно работать…
Поэтому появилось желание все-таки превратить это в более-менее user friendly систему, которая позволит и удобно видеть всю информацию по прокси, которые имеются в работе, оперативно вносить изменения, как-то удобно сегментировать весь этот пул и, главное, удобно получать нужные для работы прокси одним GET-запросом.
Делалось для себя, для разных задач и разных вариантов использования (прокси в работе нужны не только для парсинга, конечно)... Шаг за шагом это превратилось в некоторое «решение», которым я и решил сегодня поделиться (а не писать статью про тернистый пусть автоматизатора, труд которого сегодня обесценился с появлением нейронок
).Пакетное добавление прокси:
Настройка выбора нужных прокси и режима работы для получения по ссылке:
Настройка внешнего вида таблицы:
Настройка оформления строк и ячеек в таблице:
Настройка выбора нужных прокси и режима работы для получения по ссылке:
Настройка внешнего вида таблицы:
Настройка оформления строк и ячеек в таблице:
Итак… 4ZP.ProxyManager, который…
- Держит в единой базе все нужные для работы прокси
- Позволяет загружать прокси в систему массово (и потом массово же их удалять, отметив нужные)
- Позволяет сегментировать эти прокси по разным направлениям (протоколам, типам, группам задач, формату и так далее)
- Показывает полную информацию по внешнему IP за прокси
- В режиме «поштучной» работы (когда мы берем один прокси, а не список) показывает, когда этот прокси последний раз брался в работу
- Дает возможность брать прокси из группы по определенным критериям «по кругу» (в работу будет браться тот прокси, который брался раньше всех)
- Позволяет отключать прокси, убирая их из работы
- Дает возможность работать с прокси в режиме «аренды» (пока предыдущий поток не вернул прокси обратно в работу, система его не выдаст новому потоку), при этом текущий статус прокси отображается в таблице
- Позволяет при работе в режиме «аренды» настроить «автоосвобождение» прокси, находящегося в работе больше определенного времени (на случай зависания проекта, который не вернул прокси обратно в работу)
- Позволяет вручную вернуть в работу «зависшие» в режиме «аренды» прокси
- Дает удобно и в пару кликов формировать ссылку для получения нужных прокси (списком или поштучно)
- Позволяет вручную «дергать» прокси на смену IP по ссылке (если она добавлена в прокси)
- Дает получать прокси запросом как в текстовом формате, так и в формате JSON
- Позволяет настраивать формат вывода прокси, меняя местами порядок элементов и указывая свои разделители (разный софт иногда имеет разный формат)
- Дает возможность добавить каждому прокси комментарий
- Может работать с IPv6 прокси, проверяя их на доступность и получая информацию по ним
- Позволяет фильтровать и сортировать прокси по нужным критериям
- Позволяет массово включать/выключать прокси, переводить их в рабочий статус или перепроверять внешний IP и получать по нему данные.
- Дает возможность настраивать внешний вид таблицы, пагинацию, порядок, ширину, цвет и шрифт колонок
- Позволяет выделять нужные группы прокси нужным цветом, чтобы быстрее ориентироваться в таблице
- Автоматически формирует ссылку, по которой можно получить прокси по нужным критериям
- Дает на выбор светлую/темную тему
- Автоматически обновляет страницу с нужным интервалом (можно как настроить интервал, так и отключить автообновление полностью)
- Показывает общую сводную информацию о прокси, имеющихся в базе…
- Добавляет эстетического удовольствия от работы со своей базой прокси ))
- …….
Несмотря, что делалось это все лично для себя, думаю, что может пригодиться и кому-нибудь еще. Причем, все в формате "просто бери и пользуйся".
Может быть, кому-то будет удобно пользоваться этим готовым решением, может, кого-то наведет на мысли сделать что-то подобное свое для своих задач и проектов.
Возможно (даже, скорее всего), чего-то в этой системе не хватает, какие-то вещи и варианты использования я не предусмотрел, но, повторюсь, проект писался для моих задач и моей логики организации работы, и все мои «хотелки» он закрывает полностью
Но, не исключаю, что я что-то упустил. Поэтому можно поделиться мыслями, чего не хватает, может, к следующему конкурсу выкачу новую версию. На край, судя по форуму, сейчас все умеют пользоваться нейронками (насколько помню, каждый второй уже готов написать свой ZennoPoster), код проекта полностью открыт, можно спокойно скормить его клоду/кодексу, пусть допилит нужные вещи 
Требования к системе:
- PHP 5.6+;
- PHP cURL (нужен для проверки прокси);
- MySQL 5.7+;
Справиться должен даже самый дешевый хостинг на том же Beget, да и в целом проблем быть не должно. Локально не ставил (давно не разворачивал ничего локально, все делаю обычно сразу на хостинге), но не думаю, что возникнут трудности.
Что важно помнить: если панель будет ставиться на внешний хостинг, то локальные прокси с IP вида 192.168.0.100 не будут работать (точнее, они не будут проходить проверку в панели, но получать их в запросе вполне можно), надо будет пробросить порты на роутере и указать в систему прокси через свой внешний IP. Уверен, справитесь, все люди опытные ))
Вложения
Последнее редактирование модератором:


