Використання проксі з Python Requests

Коментарі: 0

Проксі представляють собою сервери, що дозволяють виконувати непрямі зʼєднання з мережевими сервісами. Вони працюють як посередники між комп'ютером та сайтом, до якого звертається користувач. Замість того, щоб напряму відправляти запит на сайт, його спочатку приймає проксі, а далі передає на кінцевий сервер. В результаті сайт бачить не вашу IP-адресу, а проксі-сервера.

Навіщо використовувати проксі?

  • Анонімність

До прикладу, потрібно зібрати дані із сайту, уникнувши при цьому обмежень або блокувань. Завдяки проксі-серверу ви змінюєте свою справжню IP-адресу, приховуючи свої цифрові дані.

  • Обхід обмежень

У певних країнах обмежені або заблоковані деякі програми або сайти. Щоб все одно переглянути контент, використовується проксі тієї країни, де доступ до даних не заблоковано.

  • Збалансування навантаження

Якщо ви відправляєте велику кількість запитів на сайт, то це дуже навантажує його, внаслідок чого є великий ризик бути заблокованим. Використовуючи кілька проксі одночасно, можна рівномірно розподілити запити на сайт, щоб уникнути блокування.

Налаштування та встановлення Python Requests

Бібліотека requests – один із найпопулярніших інструментів для роботи з HTTP-запитами в Python. Він дозволяє легко виконувати GET і POST-запити. Користуючись Python Requests без проксі можна відправляти HTTP-запити, але це не забезпечує анонімність або обхід обмежень.

1. Встановлення бібліотеки Requests

Щоб встановити requests, відкрийте термінал і виконайте наступну команду:


pip install requests

2. Перевірка встановлення

Щоб переконатися, що необхідна бібліотека встановлена правильно, відкрийте середовище розробки Python та введіть наступну команду:


import requests 

print(requests.__version__)

Якщо все успішно встановлено, ви побачите номер версії.

Як використовувати проксі в Python Requests

Коли ми встановили бібліотеку requests, можна почати відправляти HTTP-запити. Але для того, щоб використовувати проксі, потрібні додаткові налаштування в Python.

Розглянемо детальніше, як правильно встановити проксі для запитів у Python. Окремо розберемо налаштування SOCKS-проксі.

1. Налаштування проксі-сервера

Бібліотека requests дозволяє легко налаштовувати проксі в Python. Для цього передаємо адресу проксі-сервера у словник і використовуємо його у HTTP-запитах.


proxies = {
    "http": "http://your-proxy-ip:port",
    "https": "http://your-proxy-ip:port",
}

response = requests.get("http://example.com", proxies=proxies)

2.Аутентифікація через проксі

Якщо вимагається автентифікація через проксі в Python Requests, налаштувати це у Python дуже просто. Розглянемо приклад:


proxies = { 
    "http": "http://username:password@your-proxy-ip:port", 
    "https": "http://username:password@your-proxy-ip:port", 
} 

response = requests.get("http://example.com", proxies=proxies)

Тут зʼявилось два нових значення, які потрібно заповнити:

  • username – ваш логін;
  • password – ваш пароль.

3.Використання SOCKS-проксі

Якщо вам потрібна більша анонімність або ви працюєте з сайтами, де використовуються суворі обмеження, зазвичай HTTP-проксі можуть не працювати. Тому краще використовувати SOCKS-проксі.

Щоб почати використовувати SOCKS-проксі, потрібно встановити додаткову бібліотеку, за наступною командою:


pip install requests[socks]

Після встановлення можемо використовувати SOCKS-проксі, ось так:


import requests

proxies = {
    "http": "socks5h://your-proxy-ip:port",
    "https": "socks5h://your-proxy-ip:port",
}

response = requests.get("http://example.com", proxies=proxies)

І якщо проксі-сервер вимагає автентифікацію, додаємо їх наступним чином:


proxies = {
    "http": "socks5h://username:password@your-proxy-ip:port",
    "https": "socks5h://username:password@your-proxy-ip:port",
}

Керування сесіями з проксі у Python Requests

Якщо вам потрібно відправляти багато запитів через один і той самий проксі, замість того, щоб щоразу вказувати його у кожному запиті, зручніше використовувати проксі для сесії в Python Requests.

Застосування проксі таким чином дозволяє зберігати одні й ті самі параметри для всіх сесій. До того ж це не тільки спрощує код, але й покращує продуктивність.

1. Використання проксі в сесіях Python Requests

Створити сесію дуже просто, достатньо використовувати лише requests.Session().

Розглянемо приклад:


import requests

# Створення сесії
session = requests.Session()

session.proxies = {
    "http": "http://username:password@your-proxy-ip:port",
    "https": "http://username:password@your-proxy-ip:port",
}

# Запит через сесію
response = session.get("http://example.com")

Після такого налаштування всі запити даної сесії будуть автоматично використовувати вказаний проксі.

2. Обробка кількох проксі у Python Requests

Коли ви активно взаємодієте із веб сайтами, наприклад, у парсингу або автоматизації, постійне використання одного й того самого проксі може призвести до блокування. Цього можна уникнути, якщо перемикати проксі між запитами, маючи декілька інших серверів.

Нижче наведений приклад, як з допомогою циклу надсилати щоразу різний проксі, для взаємодії з веб сторінкою:


import requests
import random

proxies_list = [
    "http://username:password@your-proxy-ip[1]:port",
    "http://username:password@your-proxy-ip[2]:port",
    "http://username:password@your-proxy-ip[3]:port",
]

session = requests.Session()

for _ in range(5):
    proxy = random.choice(proxies_list)  # Випадковий вибір проксі
    session.proxies = {"http": proxy, "https": proxy}

    response = session.get("http://example.com")
    print(f"Використано проксі: {proxy}")
    print(response.status_code)

Висновки

Щоб працювати з проксі ще ефективніше:

  • Використовуйте сесії, щоб не прописувати проксі у кожному запиті.
  • Для більшої безпеки обирайте надійні проксі без логування.
  • Щоб уникнути блокувань, перемикайтеся між проксі.

Ми розглянули, що таке проксі-сервер і як правильно використовувати проксі з Requests в Python. Даний приклад демонструє, як використовувати звичайні та SOCKS-проксі, як забезпечувати автентифікацію та керувати проксі за допомогою сесій, для спрощення коду.

Коментарії:

0 Коментаріїв