NTA
2034

Прокси для замены ip-адреса

Делимся примером того, как использовать «бесплатные» прокси-серверы для исключения блокировки ip-адреса

В закладки

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

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

Итак, начнем с установки необходимых библиотек.

pip install bs4 requests

Импортируем библиотеки.

import requests import random from bs4 import BeautifulSoup as bs

Далее создаем функцию, с помощью которой получим список бесплатных прокси-серверов, например, с одного из сайтов, который располагает данной информацией.

def get_proxy(): url = "https://free-proxy-list.net/" # формируем объект sp, получив ответ http sp = bs(requests.get(url).content, "html.parser") proxy = [] for row in sp.find("table", attrs={"id": "proxylisttable"}).find_all("tr")[1:]: tds = row.find_all("td") try: ip = tds[0].text.strip() port = tds[1].text.strip() host = f"{ip}:{port}" proxy.append(host) except IndexError: continue return proxy

Выполним эту функцию и посмотрим на полученный список. Надо заметить, что срок «жизни» этого списка недолгий. И для получения нового списка необходимо будет снова выполнить функцию get_proxy().

get_proxy() proxy = get_proxy() print(proxy)

На данном рисунке представлен фрагмент полученного списка.

Другая функция, назовем ее get_session, получив этот список создает сеанс запросов, который случайно выбирет для этого сеанса один из переданных ip-адресов прокси.

def get_session(proxy): # создание сеанса запроса session = requests.Session() # случайный выбор proxy proxy_ = random.choice(proxy) session.proxy = {"http": proxy_, "https": proxy_} return session

Чтобы это проверить, выполним следующий код, который отправит запрос на сайт http://icanhazip.com, возвращающий наш ip-адрес.

for i in range(4): q = get_session(proxy) try: print("Request page with IP:", q.get("http://icanhazip.com", timeout=1.5).text.strip()) except Exception as e: continue

Из полученного результата можем видеть, что это будет не наш фактический ip-адрес, а один из ip-адресов списка proxy.

Request page with IP: 124.158.183.196 Request page with IP: 163.44.153.98 Request page with IP: 191.235.239.84 Request page with IP: 109.200.155.197

Если потребуется использовать прокси-сервер в более длительном процессе парсинга, то можно воспользоваться сервисом, предоставляемым Crawlera. Этот прокси-ротатор справится с большим объемом информации и с сайтами, защищенными от роботов.

Лайфхаки IT, проверенные решения для стандартных задач
{ "author_name": "NTA", "author_type": "editor", "tags": [], "comments": 0, "likes": 3, "favorites": 3, "is_advertisement": false, "subsite_label": "newtechaudit", "id": 167938, "is_wide": false, "is_ugc": false, "date": "Sat, 17 Oct 2020 10:21:40 +0300", "is_special": false }
Чистый маркетинг
Сколько должна стоить разработка сайта и к кому податься?
Управляющий партнер агентства «Чистый маркетинг» рассуждает о ценообразовании на рынке разработки сайтов и анализирует…
Объявление на vc.ru
0
Комментариев нет
Популярные
По порядку

Комментарии

null