Прокси (Работа с Прокси чекером)

При разработке функции парсинга с помощью прокис я столкнулся с проблемой блокировки Proxy на хостинге.
То есть если вы используете публичные прокси, или даже приватные (платные), это еше не гарантирует что данные прокси сервера будут работать конкретно у вас на хостинге.
То есть бывает так что хостер уже заблокировал ваши прокси. Я сейчас говорю не о сервере сайта донора, а конкретно о сервере на котором работает ваш сайт.

Для теста использую Хостинг
Это очень стабильных хостинг, но как оказалась стабильность там не просто так. Большая часть прокси не работает поскольку вашему сайт запрещено работать через нестандартные порты.

По сути вы можете выходить в мир только через 80 порт.

С другой стороны через панель управления хостингом это решается.
Не все пользователи смогут это решить, поскольку при работе через Proxy запрос будет уходить, а в ответ вы будете получать
couldn't connect to host
Да и я не уверен что на других хостингах есть возможность самому открывать нужные порты.

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

Прокси чекер

В данном чекере вы можете загрузить в список сколько угодно проксей и запустить их проверку.
Модуль будет брать по очереди каждый прокси и проверять его по вашим настройкам.

На данный момент модуль умеет отсеивать по следующим параметрам.

  1. Рабочий не рабочий proxy - рабочий прокси это то который присылает ответ на запрос :)
  2. Время соединение с сайтом через прокси. - Время за которое мы должны успеть соединится с сайтом донором
  3. Общее время выполнение запроса через прокси. - время за которое мы должны получить ответ от сайта донора
  4. Проверка на работу с сайтом донором - Здесь мы проверяем что бы прокси сервер не был заблокировал на сайте доноре который вы хотите парсить. Поскольку бывает так что даже платные прокси сервера уже забанены на большинстве ресурсов и их использование невозможно.

Принцип работы чекера.

Для того что бы чеке мог проверить работоспособность прокси вам необходимо заполнить два поля.

  1. Ссылка на сайт донор - Ссылка на страницу сайта донора для которого вы хотите проверить работоспособность прокси.
  2. Проверочный текст - Кусок кода который точно есть на странице. Хорошо подойдет артикул или код товара.

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

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

Как вы понимаете я бы рекомендовал всегда производить проверку прокси серверов на совместимость, и использовать только проверенный список.
Так же вам нужно понимать что список который вы проверили вчера не обязательно будет работать сегодня.
Особенно если вы используете публичные прокси сервера.

Публичные прокси сервера - Это сервера которые находятся в открытом доступе, и распространяются бесплатно.
Такие прокси как правило низкого качества, и постоянно умирают. И вам нужно постоянно проверять свой список проксей.
Платные прокси сервера как правило лишены этой проблемы.

Я рекомендую использовать платные прокси сервера!

Форма записи прок серверов

Для начала нужно определится какие есть типы прокси

  1. HTTP
  2. HTTPS
  3. SOCKS4
  4. SOCKS5

HTTP - Установлен по умолчанию, если вы не указываете какой тип прокси используется модуль будет по умолчанию пытаться соединится через http
Что это за типы и чем отличаются я не буду расписывать. Это вы можете узнать в сети.

Запись списка прокси

Прокси записывается в поле Полный список прокси
Каждый новый прокси записывается с новой строки. Как на скриншоте выше.

ip:port - стандартная запись. По умолчанию в данной записи тип прокси определяется как HTTP
Пример 123456789:80

ip:port:proxy-type - если тип прокси отличается от HTTP тогда вам нужно после порта через двоеточие : записать тип прокси
Пример 123456789:80:SOCKS4

Если вы используете приватные прокси тогда логин и пароль так же записывается через : после порта.

ip:port:proxy-type:login:password - При записи прокси сервера, где используется авторизация вам необходимо записать логин и пароль после типа прокси. Если тип прокси стандартный HTTP тогда вы можете его не записывать а оставить поле записи пустым. Вот так - 123456789:80::login:password Обычная запись будет выглядеть как в примере ниже.
Пример (1) 123456789:80:SOCKS4:login:password
Пример (2) 123456789:80::login:password

Каждый новый прокси нужно записывать с новой строки

123456789:80:SOCKS4
123456789:80:HTTP:login:password
987654321:8080:login:password
192837465:1080

Логи прокси чекера

После того как модуль проверит весь список прокси вы сможете перейти в логи и просмотреть вердикт по каждому из прокси.

Здесь как вы видите есть разные ответы.
Ответы поделены на два класса УСПЕХ или ОШИБКА
Успешными считаются только тек которые прошли проверку по всем пяти параметрам. Описанным в начал.
Остальные считаются нерабочими. Модуль описывает причину почему данных прокси считается не рабочим.

2019-09-27 06:04:20| !-> PROXY CHECKER | ОШИБКА | Прокси не анонимное, и в список проверенных не добавлено  | Прокси = [ 109.200.155.198:8080 ]
2019-09-27 06:04:23| --> PROXY CHECKER | УСПЕХ | Прокси прошел проверку по вашим требованиям и добавлен в список проверенных | Прокси = [ 104.198.232.184:80 ]
2019-09-27 06:04:25| !-> PROXY CHECKER | ОШИБКА | Номер ошибки = 7 | Сообщение об ошибке = [ couldn't connect to host ] | Прокси = [ 178.62.63.229:35107 ]
2019-09-27 06:04:26| !-> PROXY CHECKER | ОШИБКА | Прокси не анонимное, и в список проверенных не добавлено  | Прокси = [ 182.253.94.8:8080 ]
2019-09-27 06:04:26| !-> PROXY CHECKER | ОШИБКА | Подменяет данные сайта к которому вы обращаетесь | Прокси = [ 104.28.10.146:80 ]
2019-09-27 06:04:29| !-> PROXY CHECKER | ОШИБКА | Прокси не анонимное, и в список проверенных не добавлено  | Прокси = [ 117.204.253.93:8080 ]
2019-09-27 06:04:31| !-> PROXY CHECKER | ОШИБКА | Подменяет данные сайта к которому вы обращаетесь | Прокси = [ 139.180.163.43:8080 ]
2019-09-27 06:04:31| !-> PROXY CHECKER | ОШИБКА | Прокси не анонимное, и в список проверенных не добавлено  | Прокси = [ 159.89.191.89:80 ]
2019-09-27 06:04:32| !-> PROXY CHECKER | ОШИБКА | Номер ошибки = 7 | Сообщение об ошибке = [ couldn't connect to host ] | Прокси = [ 110.74.208.154:21776 ]
2019-09-27 06:04:34| !-> PROXY CHECKER | ОШИБКА | Прокси не анонимное, и в список проверенных не добавлено  | Прокси = [ 203.189.159.90:8080 ]
2019-09-27 06:04:34| !-> PROXY CHECKER | ОШИБКА | Подменяет данные сайта к которому вы обращаетесь | Прокси = [ 104.28.24.46:80 ]
2019-09-27 06:04:35| !-> PROXY CHECKER | ОШИБКА | Номер ошибки = 7 | Сообщение об ошибке = [ couldn't connect to host ] | Прокси = [ 176.120.37.82:59365 ]
2019-09-27 06:04:36| !-> PROXY CHECKER | ОШИБКА | Номер ошибки = 7 | Сообщение об ошибке = [ couldn't connect to host ] | Прокси = [ 103.250.166.16:48340 ]
2019-09-27 06:04:37| !-> PROXY CHECKER | ОШИБКА | Номер ошибки = 7 | Сообщение об ошибке = [ couldn't connect to host ] | Прокси = [ 188.134.77.205:7777 ]
2019-09-27 06:04:38| --> PROXY CHECKER | УСПЕХ | Прокси прошел проверку по вашим требованиям и добавлен в список проверенных | Прокси = [ 95.168.185.183:8080 ]
2019-09-27 06:04:38| !-> PROXY CHECKER | ОШИБКА | Номер ошибки = 7 | Сообщение об ошибке = [ couldn't connect to host ] | Прокси = [ 200.89.174.211:80 ]
2019-09-27 06:04:44| !-> PROXY CHECKER | ОШИБКА | Номер ошибки = 28 | Сообщение об ошибке = [ Operation timed out after 5000 milliseconds with 0 bytes received ] | Прокси = [ 185.107.49.1:8080 ]
2019-09-27 06:04:50| !-> PROXY CHECKER | ОШИБКА | Номер ошибки = 28 | Сообщение об ошибке = [ connect() timed out! ] | Прокси = [ 189.43.68.163:8080 ]
2019-09-27 06:04:52| !-> PROXY CHECKER | ОШИБКА | Номер ошибки = 56 | Сообщение об ошибке = [ Failure when receiving data from the peer ] | Прокси = [ 110.77.201.143:80 ]

Попробую немного пояснить ответы.

--> PROXY CHECKER | УСПЕХ | Прокси прошел проверку по вашим требованиям и добавлен в список проверенных - тут все просто прокси прошел проверку по всем пяти пунктам. И добавлен в список проверенных.

!-> PROXY CHECKER | ОШИБКА | Прокси не анонимное, и в список проверенных не добавлено - у вас выбрано добавлять в список только анонимные прокси. А этот прокси таковым не является.

!-> PROXY CHECKER | ОШИБКА | Номер ошибки = 7 | Сообщение об ошибке = [ couldn't connect to host ] - у меня на хостинге эта ошибка связана с тем что прокси работает на порте который закрыт моим хостингом. И его нужно открыть в настройках панели управления.

!-> PROXY CHECKER | ОШИБКА | Подменяет данные сайта к которому вы обращаетесь - данный прокси вместо того что бы вернуть нам сайт которых мы хотим парсить возвращает другую страницу. Такое часто бывает на публичных прокси серверах. Допустим это корпоративный прокси и на нем заблокированы все сайты кроме корпоративного. И на все запросы он отдает страничку что данных сайт в этой сети недоступен.
Обратите внимание что даже этот чекер не может гарантировать что сайт который вы будете парсить не заблокирован на уровне прокси. Особенно при использовании публичных прокси серверов.

!-> PROXY CHECKER | ОШИБКА | Номер ошибки = 28 | Сообщение об ошибке = [ connect() timed out! ] - Либо прокси медленно работает либо оно мертвое. Так или иначе модуль не успел соединится с сайтом за время указанное в настройках чекера.

!-> PROXY CHECKER | ОШИБКА | Номер ошибки = 28 | Сообщение об ошибке = [ Operation timed out after 5000 milliseconds with 0 bytes received ] - Модуль не успел получить ответ за указанное в настройках время. Значит прокси скорее всего работает медленнее чам вам необходимо.

!-> PROXY CHECKER | ОШИБКА | Номер ошибки = 56 | Сообщение об ошибке = [ Failure when receiving data from the peer ] - Вероятно, прокси блокирует запрос на сервер. Но это не точно. :) я еше не все ошибки смог разобрать и протестировать.

На этом все.

Буду рад услащать ваши предложения по развитию модуля.
Все вопросы и предложения можно оставить на странице Темы поддержки модуля