Używanie proxy z Python Requests

Komentarze: 0

W skrócie, serwery proxy to serwery, które służą jako zewnętrzna warstwa łącząca się z usługami sieciowymi. Służą jako pośrednicy między komputerem a witryną, z której użytkownik chce uzyskać informacje. Żądanie użytkownika, zamiast być wysyłane bezpośrednio do odpowiedniej witryny, jest najpierw kierowane do serwera proxy, który następnie wysyła je do serwera końcowego. W związku z tym adres IP serwera proxy jest tym, który strona zapisuje zamiast adresu użytkownika.

Dlaczego więc używać proxy?

  • Anonimowość:

Na przykład, jeśli istnieje potrzeba zebrania informacji z witryny bez obawy o ograniczenia lub blokady. Serwer proxy pomaga w maskowaniu prawdziwego adresu IP użytkownika, zmieniając jego prawdziwą tożsamość cyfrową.

  • Omijanie ograniczeń:

Można użyć serwera proxy z określonego kraju, w którym nie ma żadnych ograniczeń. Wynika to z faktu, że w niektórych krajach dostęp do niektórych programów i stron internetowych jest ograniczony lub zablokowany.

  • Równoważenie obciążenia:

Jeśli do danej witryny wysyłana jest duża liczba żądań, istnieje duże prawdopodobieństwo, że system zostanie obciążony. W związku z tym istnieje ogromne ryzyko zablokowania. Korzystanie z wielu serwerów proxy w tym samym czasie pozwala użytkownikom równomiernie rozprowadzać żądania do określonej witryny, unikając w ten sposób blokady.

Konfiguracja i instalacja Python Requests

Requests to biblioteka do wysyłania żądań HTTP za pomocą Pythona. Ułatwia ona wykonywanie żądań GET i POST. Używanie Python Requests bez proxy może wysyłać żądania HTTP, ale nie zapewnia anonimowości ani ominięcia ograniczeń.

1. Instalacja Requests Biblioteka

Aby zainstalować requests, wystarczy wpisać poniższe polecenie w terminalu:


pip install requests

2. Weryfikacja instalacji

Aby sprawdzić, czy wymagana biblioteka jest poprawnie skonfigurowana, należy otworzyć środowisko programistyczne Python i uruchomić polecenie:


import requests 

print(requests.__version__)

Jeśli wszystko zostało wykonane poprawnie, skrypt zwróci numer wersji.

Jak używać proxy z Requests Python

Po zainstalowaniu biblioteki requests możemy rozpocząć wykonywanie żądań HTTP. Aby jednak włączyć proxy, należy wykonać pewne konfiguracje w Pythonie.

Przeanalizujmy kroki, które należy wykonać, aby poprawnie skonfigurować serwer proxy dla żądań w Pythonie. Rozważymy osobno Requests Python z konfiguracjami serwerów proxy SOCKS.

1. Konfiguracja serwera proxy

Użycie Pythona do skonfigurowania serwera proxy jest bardzo proste dla użytkowników korzystających z biblioteki requests. Wymaga to przekazania adresu serwera proxy w słowniku, a następnie użycia go podczas wykonywania żądań HTTP.


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

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

2. Uwierzytelnianie proxy

Podczas korzystania z Python Requests, uwierzytelnianie proxy jest łatwe do skonfigurowania. Przyjrzyjmy się bliżej szczegółom.


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)

Dwa nowe pola, które należy wypełnić to:

  • username – nazwa użytkownika proxy;
  • password – hasło proxy.

3. Korzystanie z serwerów proxy SOCKS

W przypadku użytkowników, którzy wymagają wyższego poziomu anonimowości lub jeśli pracujesz z witrynami o silnych ograniczeniach, standardowe serwery proxy HTTP mogą nie działać. W takim przypadku lepszym rozwiązaniem mogą być serwery proxy SOCKS.

Aby włączyć obsługę proxy SOCKS, należy zainstalować dodatkową bibliotekę za pomocą polecenia wymienionego poniżej:


pip install requests[socks]

Po zainstalowaniu, Python Requests pozwala na skonfigurowanie proxy SOCKS, które może być używane jak pokazano w poniższym przykładzie.


import requests

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

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

Jeśli serwer proxy wymaga uwierzytelnienia, dołącz je, jak pokazano poniżej.


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

Zarządzanie sesjami za pomocą serwerów proxy w Python Requests

Podczas wykonywania wielu żądań za pośrednictwem pojedynczego serwera proxy, zamiast dodawać go do każdego żądania, znacznie wydajniejsze staje się korzystanie z sesji Python Requests z proxy.

Ta metoda korzystania z serwerów proxy pomaga zachować ustawienia we wszystkich sesjach. Upraszcza również kod, poprawia wydajność, a co najważniejsze, znacznie ułatwia implementację.

1. Używanie sesji Requests Python z serwerami proxy

Utworzenie sesji jest bardzo proste, wystarczy wpisać requests.Session().

Rozważmy następujący przykład:


import requests

# Tworzenie sesji
session = requests.Session()

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

# Żądanie za pośrednictwem sesji
response = session.get("http://example.com")

Wszystkie Requests Python w tej sesji będą domyślnie używać ustawionego proxy bez żadnych dodatkowych konfiguracji.

2. Obsługa wielu serwerów proxy w Requests Python

W przypadku aktywnego korzystania z witryny internetowej w celu skrobania lub automatyzacji, używanie tego samego serwera proxy w kółko może spowodować zablokowanie konta. Można sobie z tym poradzić poprzez rotację serwerów proxy, biorąc pod uwagę, że masz kilka różnych serwerów proxy.

Poniższy przykład pokazuje implementację pętli, która obraca serwery proxy dla każdej interakcji ze stroną internetową:


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)  # Losowy wybór serwera proxy
    session.proxies = {"http": proxy, "https": proxy}

    response = session.get("http://example.com")
    print(f"Used proxy: {proxy}")
    print(response.status_code)

Wnioski

Podsumowując, oto kilka sugestii, które mogą pomóc w lepszym zarządzaniu serwerami proxy:

  • Używaj sesji, aby nie musieć ustawiać proxy przy każdym żądaniu.
  • Używaj anonimowych serwerów proxy bez logów dla lepszej ochrony.
  • Aby uniknąć zablokowania, należy korzystać z wielu serwerów proxy.

W tym artykule omówiliśmy, czym są serwery proxy, jak prawidłowo używać proxy w Python Requests i zarządzać proxy poprzez sesje w celu uproszczenia kodu. Przykład pokazuje również użycie zarówno SOCKS, jak i zwykłych serwerów proxy, sposób obsługi uwierzytelniania i zarządzania serwerami proxy.

Komentarze:

0 komentarze