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?
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ą.
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.
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.
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ń.
Aby zainstalować requests, wystarczy wpisać poniższe polecenie w terminalu:
pip install requests
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.
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.
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)
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:
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",
}
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ę.
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.
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)
Podsumowując, oto kilka sugestii, które mogą pomóc w lepszym zarządzaniu serwerami 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