Как и зачем использовать прокси для работы с любыми API?

api

В статье рассмотрим, как использовать прокси для работы с API. Покажем, как добавить прокси в код, чтобы, например, изменить геолокацию.

Что такое API и зачем они нужны?

API (интерфейс программирования приложений) — как меню в ресторане. Вместо того чтобы готовить сами, вы выбираете из меню, а повара (или API) выполняют всю работу. 

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

 

Зачем используют прокси для работы с API?

Прокси помогают в нескольких случаях:

  • Сохранение анонимности. Прокси скрывают ваш IP-адрес, что защищает вашу личную информацию и позволяет изменять геолокацию.
  • Избежание ограничений. Некоторые API ограничивают количество запросов с одного IP. Прокси позволяют распределить запросы и избежать таких ограничений.

Шаги работы с API и прокси

Выбор API и подготовка кода

В нашем примере возьмем API для парсинга данных о товарах с Amazon в реальном времени. Взяли его с этой библиотеки разных API. Сайт полезный; здесь можно найти 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 имя файла

phyton

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

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