Перейти к основному содержанию
Библиотека requests - самый популярный способ выполнения HTTP-запросов в Python. Интеграция прокси Catproxy невероятно проста.

Базовая настройка

Чтобы использовать наши прокси, вам достаточно создать словарь proxies и передать его в запрос. Словарь должен содержать ключи http и https.
basic_setup.py
import requests

# 1. Скопируйте их на странице «Настройки прокси»
proxy_host = "proxy.catproxy.net"
proxy_port = 5555
proxy_user = "PROXY_USERNAME"
proxy_pass = "PROXY_PASSWORD"

# 2. Соберите URL прокси
proxy_url = f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"

# 3. Создайте словарь прокси
proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

# 4. Отправьте запрос!
try:
    response = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=10)
    response.raise_for_status() # Raise an exception for bad status codes (4xx or 5xx)

    print("Success! Your proxy IP is:", response.json()['ip'])

except requests.exceptions.RequestException as e:
    print(f"Error making request: {e}")

Практический пример: Парсинг цен на игры в Steam

Давайте решим реальную задачу: проверим цену популярной игры, например Counter-Strike 2, в разных регионах. Многие интернет-магазины используют региональное ценообразование, и прокси - единственный способ увидеть то, что видят локальные пользователи. В этом примере мы проверим цену в США и Турции, динамически изменяя параметр -country в имени пользователя.
Для этого примера потребуются requests и BeautifulSoup4. Установите их командой pip install requests beautifulsoup4.
steam_scraper.py
import requests
from bs4 import BeautifulSoup

# --- Your Base Credentials ---
BASE_USERNAME = "PROXY_USERNAME"
PASSWORD = "PROXY_PASSWORD"
PROXY_HOST_PORT = "proxy.catproxy.net:5555"

# --- Target Information ---
GAME_APP_ID = "730" # Counter-Strike 2 AppID
TARGET_URL = f"https://store.steampowered.com/app/{GAME_APP_ID}/"
REGIONS = ["us", "tr"] # USA and Turkey

# --- Main Scraper Logic ---
for region in REGIONS:
    print(f"--- Checking price in {region.upper()} ---")

    # Dynamically construct the username for each region
    proxy_username = f"{BASE_USERNAME}-country-{region}"

    proxies = {
        "http": f"http://{proxy_username}:{PASSWORD}@{PROXY_HOST_PORT}",
        "https": f"http://{proxy_username}:{PASSWORD}@{PROXY_HOST_PORT}",
    }

    # We must also pass the region code to Steam to get the correct store page
    # and cookies to bypass the age gate check.
    params = {'cc': region}
    cookies = {'birthtime': '568022401', 'wants_mature_content': '1'}
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}

    try:
        response = requests.get(
            TARGET_URL,
            proxies=proxies,
            params=params,
            cookies=cookies,
            headers=headers,
            timeout=15
        )
        response.raise_for_status()

        # Parse the HTML to find the price
        soup = BeautifulSoup(response.text, 'html.parser')
        price_element = soup.find('div', class_='game_purchase_price')

        if price_element:
            print(f"Success! Price found: {price_element.get_text(strip=True)}")
        else:
            # Maybe it's on sale?
            discount_price_element = soup.find('div', class_='discount_final_price')
            if discount_price_element:
                print(f"Success! Discount price found: {discount_price_element.get_text(strip=True)}")
            else:
                print("Could not find the price element on the page.")

    except requests.exceptions.ProxyError as e:
        print(f"Proxy Error! Check your credentials or balance. Details: {e}")
    except requests.exceptions.HTTPError as e:
        print(f"HTTP Error! The target website blocked us. Status code: {e.response.status_code}")
    except requests.exceptions.RequestException as e:
        print(f"An unexpected error occurred: {e}")

    print("-" * (25 + len(region)))

Ожидаемый результат

Запуск этого скрипта выдаст результат, аналогичный следующему:
Terminal
--- Checking price in US ---
Success! Price found: $14.99
--------------------------
--- Checking price in TR ---
Success! Discount price found: ₺265,50
--------------------------
Этот пример демонстрирует возможности динамического управления местоположением вашего прокси прямо из кода, позволяя создавать мощные и масштабируемые приложения для сбора данных.