Прокси-сервер, теория
Прокси-сервер — это промежуточное звено в Вашем общении со всемирной паутиной.
Вы отправляете запрос на сервер, он поступает на прокси-сервер, оттуда уже запрос отправляется дальше и дальше до тех пор, пока не будет получен достаточный ответ. После того, как прокси-сервер получил качественный ответ, он отправляет его клиенту совершившему запрос.
Существуют различные виды прокси-серверов. Некоторые дополнительно предоставляют анонимность, некоторые элементарно служат «почтальонами» пересылающими запросы и ответы. Какие-то используют высоко производительные машины под свою деятельность, какие-то более слабые. Однако существуют ещё и такие прокси-сервера, которые за свои услуги просят денежные взносы, бесплатные же могут использовать Ваш сетевой трафик в своих целях: продавать сведения о Вашей интернет-деятельности рекламщикам для анализа усовершенствования маркетинговой политики, например. Будьте бдительны и внимательны при выборе какой использовать прокси-сервер, идеально безопасной сети не бывает.
Использование прокси для своего сёрфинга в интернете не обязательно, но порой возникает необходимость обезопасить себя из-за участившихся хакерских атак, Вас чрезвычайно сильно беспокоит анонимность в интернете или Вас элементарно достала однородная поисковая выдача в связи с недавними многочисленными целенаправленными поисками некоторой вещицы.
Существуют прокси с авторизацией, то есть для того, чтобы взаимодействовать с данным промежуточным звеном требуется знание логина и соответствующего пароля. Также, имеются в миру и не требующие авторизации и ими можно пользоваться абсолютно свободно.
Рассмотрим как отправить запрос используя оба способа.
Программное обеспечение
Для языка программирования Python был создан один крайне полезный модуль под названием requests. Задача его скромна и крайне значима — помочь во взаимодействии с глобальной всемирной паутиной. Он не идёт из коробки для Python 3.x.x, а потому требует отдельной инсталляции. О том, как установить модуль можете прочесть здесь.
Прокси без авторизации
Рассмотрим пример использования случайного прокси-сервера не требующего авторизации. Импортируйте модуль requests, затем определите используемый прокси-сервер с используемым протоколом передачи (SOCKS4, HTTP, HTTPS, и так далее) и указанным портом, создайте запрос с прописанными ранее данными прокси-сервера, отправьте запрос и получите ответ. В ответе нас будет интересовать только статус — запрос выполнен успешно или же провалился.
Схема создания записи данных прокси-сервера и отправки запроса следующая, необходимые данные предоставляется поставщиком прокси:
- Создаётся ассоциативный массив, где ключом является используемый протокол. Прописывать необходимо только подходящий под Ваше соединение протокол;
- В качестве значения ключа ассоциативного массива указывается ip-адрес или же доменное имя прокси-сервера;
- В конце значения прописывается порт. После адреса ставится двоеточие без каких-либо пробелов и прописывается используемый порт;
- Создаёте запрос указав необходимый Вам ресурс в виде доменного имени или же ip-адреса, добавив ассоциативный массив содержащий жизненно важные данные о прокси соединении;
1 2 3 4 5 6 7 8 9 |
import requests url = 'http://google.com/' proxies = {'http': '207.154.231.208:3128'} response = requests.get(url=url, proxies=proxies) response.close() print(response.status_code) # 200 - good |
Сервер возвратил ответ, в нём содержится статус-код, если он равен 200, то это значит, что всё хорошо и запрос выполнен успешно. Если же Ваш запрос возвратил ответ с иным кодом, то необходимо разобраться с неисправностью, ибо проблема может заключаться в чём угодно начиная от сбоя сервера и продолжая Вашим подключением к сети.
Прокси с авторизацией
Прокси требующие авторизации зачастую используются на производстве, в компаниях для создания защищённой и закрытой среды интернет-обитания для своих сотрудников. В подобных закрытых сетях может располагаться служебная информации, доступ к базам данных необходимых для работы фирмы и многое другое интересное.
Как уже говорилось ранее, для такого рода подключения нужно знать корректные логин и пароль. Предположим, что он у нас есть.
Схема создания записи данных прокси-сервера и отправки запроса следующая, необходимые данные предоставляется поставщиком прокси:
- Создаётся ассоциативный массив, где ключом является используемый протокол. Прописывать необходимо только подходящий под Ваше соединение протокол;
- В качестве значения ключа ассоциативного массива указывается ip-адрес или же доменное имя прокси-сервера;
- В конце значения прописывается порт. После адреса ставится двоеточие без каких-либо пробелов и прописывается используемый порт;
- Отдельно от данных прокси-сервера прописываете актуальные и достоверные авторизационные сведения используя для этого класс HTTPProxyAuth, который сформирует всё необходимое исходя из Ваших двух переданных аргументов: логин и пароль;
- Создаёте запрос, указав необходимый Вам ресурс в виде доменного имени или же ip-адреса, добавив ассоциативный массив содержащий жизненно важные данные о прокси соединении, а также авторизационные данные;
1 2 3 4 5 6 7 8 9 10 11 |
import requests from requests.auth import HTTPProxyAuth url = 'http://google.com/' proxies = {'http': '207.164.21.34:3128'} auth = HTTPProxyAuth('my_login', 'my_password') response = requests.get(url=url, proxies=proxies, auth=auth) response.close() print(response.status_code) # 200 - good |
Проверяем статус-код. Если код 200, значит всё великолепно, если нет, значит смотрим в список кодов ошибок и анализируем причину неудачи.