Библиотека requests - самый популярный способ выполнения HTTP-запросов в Python. Интеграция прокси Catproxy невероятно проста.
Базовая настройка
Чтобы использовать наши прокси, вам достаточно создать словарь proxies и передать его в запрос. Словарь должен содержать ключи http и https.
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.
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)))
Ожидаемый результат
Запуск этого скрипта выдаст результат, аналогичный следующему:
--- Checking price in US ---
Success! Price found: $14.99
--------------------------
--- Checking price in TR ---
Success! Discount price found: ₺265,50
--------------------------
Этот пример демонстрирует возможности динамического управления местоположением вашего прокси прямо из кода, позволяя создавать мощные и масштабируемые приложения для сбора данных.