Как и зачем использовать прокси для работы с любыми API?
В статье рассмотрим, как использовать прокси для работы с API. Покажем, как добавить прокси в код, чтобы, например, изменить геолокацию.
Что такое API и зачем они нужны?
API (интерфейс программирования приложений) — как меню в ресторане. Вместо того чтобы готовить сами, вы выбираете из меню, а повара (или API) выполняют всю работу.
API позволяют программам обмениваться данными и функциями. Например, интернет-магазин может обрабатывать платежи через API без необходимости глубокого понимания работы платежных систем.
Зачем используют прокси для работы с API?
Прокси помогают в нескольких случаях:
- Сохранение анонимности. Прокси скрывают ваш IP-адрес, что защищает вашу личную информацию и позволяет изменять геолокацию.
- Избежание ограничений. Некоторые API ограничивают количество запросов с одного IP. Прокси позволяют распределить запросы и избежать таких ограничений.
Шаги работы с API и прокси
Выбор API и подготовка кода
В нашем примере возьмем API для парсинга данных о товарах с Amazon в реальном времени. Взяли его с этой библиотеки разных API. Сайт полезный; здесь можно найти API для любых задач. Многие из них доступны бесплатно.
Как добавить прокси в код
Будем использовать Python и библиотеку requests.
Как прописывать прокси в коде?
Вот как прописывать данные прокси в коде:
Формат прокси
Прокси-серверы мы пишем в формате:
IP:порт:логин:пароль.
Например:
181.214.117.124:3686:user94438:nyp6os.
Добавление прокси в код
В коде нужно добавить список прокси и функцию для преобразования данных в формат, который понимает библиотека requests. Вот шаги, как это сделать:
Создайте список прокси
Вначале создайте список прокси в формате
IP:порт:логин:пароль.
Например:
proxy_list = [
"181.214.117.124:3686:user94438:nyp6os",
"109.196.175.126:4800:user94438:nyp6os"
]
Создайте функцию для преобразования прокси
Создайте функцию get_proxy_dict, которая преобразует строку прокси в словарь, подходящий для использования с requests. Пример функции:
def get_proxy_dict(proxy):
ip, port, user, password = proxy.split(':')
return {
"http": f"http://{user}:{password}@{ip}:{port}",
"https": f"https://{user}:{password}@{ip}:{port}"
}
Эта функция принимает строку прокси, разбивает на компоненты и возвращает словарь, который библиотека requests может использовать для отправки запросов через прокси.
Использование прокси в запросах
В основном коде для отправки запросов с использованием прокси, нужно определить URL, параметры запроса и заголовки. Прокси применяются к каждому запросу. В цикле используйте функцию get_proxy_dict, чтобы получить правильный формат для прокси:
for _ in range(len(proxy_list)):
proxy = next(proxy_cycle)
proxies = get_proxy_dict(proxy)
try:
response = requests.get(url, headers=headers, params=querystring, proxies=proxies)
print(response.json())
break
except requests.RequestException as e:
print(f"Ошибка при использовании прокси {proxy}: {e}")
Здесь proxy_cycle используется для циклического перебора прокси. get_proxy_dict(proxy) преобразует строку прокси в формат, который можно передать в параметр proxies функции requests.get.
Теперь знаете, как правильно прописывать и использовать прокси в коде. Это поможет вам обойти ограничения и изменить геолокацию при работе с API.
Вот упрощенный код с нашим API и добавленными прокси:
import requests
from itertools import cycle
# Прокси в формате IP:порт:логин:пароль
proxy_list = [
"181.214.117.124:3686:user94438:nyp6os",
"109.196.175.126:4800:user94438:nyp6os"
]
def get_proxy_dict(proxy):
ip, port, user, password = proxy.split(':')
return {
"http": f"http://{user}:{password}@{ip}:{port}",
"https": f"https://{user}:{password}@{ip}:{port}"
}
proxy_cycle = cycle(proxy_list)
url = "https://real-time-amazon-data.p.rapidapi.com/search"
querystring = {"query":"Phone","page":"1","country":"US","sort_by":"RELEVANCE","product_condition":"ALL","brand":"Apple"}
headers = {
"x-rapidapi-key": "YOUR_API_KEY",
"x-rapidapi-host": "real-time-amazon-data.p.rapidapi.com"
}
for _ in range(len(proxy_list)):
proxy = next(proxy_cycle)
proxies = get_proxy_dict(proxy)
try:
response = requests.get(url, headers=headers, params=querystring, proxies=proxies)
print(response.json())
break
except requests.RequestException as e:
print(f"Ошибка при использовании прокси {proxy}: {e}")
Здесь, вместо "YOUR_API_KEY" надо вставить ключ (токен) API.
Запуск кода
Установите библиотеку requests с помощью команды pip install requests.
Поместите код в файл с текстовый файл расширением .py (например, parser.py).
Откройте командную строку, перейдите в директорию с файлом и выполните команду:
python имя файла
После выполнения кода получите данные. Возможно, вам потребуется отфильтровать лишнюю информацию. Однако, это тема для другой статьи.
Теперь вы знаете как добавлять данные о прокси в свой код. Следуя этому алгоритму, вы сможете настроить прокси для работы с любой API или лично написанной программой.