Jak używać proxy z Scrapy
Scrapy kieruje każde żądanie przez proxy na jeden z trzech sposobów: klucz meta per-request, zmienna środowiskowa lub rotujący middleware pobierania. Oto każdy z nich, z działającym kodem dla autoryzowanych proxy s4m.
Trzy sposoby, w jakie Scrapy komunikuje się z proxy
Scrapy dostarcza HttpProxyMiddleware, który jest domyślnie włączony. Odczytuje proxy z jednego z dwóch miejsc: klucza proxy w słowniku meta żądania lub standardowych zmiennych środowiskowych http_proxy / https_proxy. Aby ustawić stałe proxy na całej sesji, zmienna środowiskowa jest najszybszą opcją; dla kontroli i rotacji na poziomie żądania, ustaw request.meta["proxy"] samodzielnie, zazwyczaj z własnego middleware do pobierania.
Uwierzytelnienie to część, którą ludzie pomijają. Scrapy nie odczytuje USER:PASS@ z adresu URL proxy tak, jak robi to curl — oczekuje nagłówka Proxy-Authorization. Czystym podejściem jest zbudowanie tego nagłówka raz i dołączenie go w swoim middleware. Proxysy s4m uwierzytelniają się za pomocą USER:PASS w stosunku do proxy.s4m.online, HTTP na porcie 3128 (naturalne dopasowanie do middleware HTTP Scrapy). Dla SOCKS5 musiałbyś użyć lokalnego mostu SOCKS-to-HTTP, ale dla większości skanowania punkt końcowy HTTP jest prostszy. Dowiedz się więcej na stronie proxy page i zobacz inne przewodniki po skanowaniu.
Middleware rotacyjnego proxy
Wstaw to do middlewares.py, włącz w settings.py, a każde żądanie wybiera proxy z twojej puli z odpowiednim nagłówkiem autoryzacyjnym.
# middlewares.py
import base64
import random
USER, PASS, HOST = "USER", "PASS", "proxy.s4m.online"
PROXIES = [f"http://{HOST}:3128"] # add more endpoints/ports to rotate
class S4mProxyMiddleware:
def _auth_header(self):
raw = f"{USER}:{PASS}".encode()
return b"Basic " + base64.b64encode(raw)
def process_request(self, request, spider):
request.meta["proxy"] = random.choice(PROXIES)
# Scrapy needs the Proxy-Authorization header explicitly:
request.headers[b"Proxy-Authorization"] = self._auth_header()
# settings.py
DOWNLOADER_MIDDLEWARES = {
# keep Scrapy's built-in proxy middleware after ours
"myproject.middlewares.S4mProxyMiddleware": 350,
"scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware": 400,
}
CONCURRENT_REQUESTS = 8
DOWNLOAD_DELAY = 0.5
RETRY_ENABLED = True
RETRY_TIMES = 3
RETRY_HTTP_CODES = [429, 500, 502, 503, 504]Podłącz to
Od czystego projektu do przeszukiwania przez proxy.
Dodaj middleware
Wklej klasę S4mProxyMiddleware do pliku middlewares.py w swoim projekcie i zastąp USER, PASS oraz HOST swoimi danymi uwierzytelniającymi s4m oraz punktem końcowym.
Włącz to w ustawieniach
Zarejestruj go w DOWNLOADER_MIDDLEWARES z priorytetem poniżej HttpProxyMiddleware Scrapy (mniejsza liczba działa pierwsza), aby twój proxy i nagłówek były ustawione przed uruchomieniem wbudowanego middleware.
Dostosuj uprzejmość
Ustaw DOWNLOAD_DELAY i CONCURRENT_REQUESTS, aby pozostać poniżej limitu szybkości celu, i włącz RETRY_HTTP_CODES dla 429 i 5xx, aby tymczasowe blokady były automatycznie ponawiane.
Zweryfikuj IP wyjściowe
Dodaj pierwsze żądanie do punktu końcowego IP-echo, takiego jak https://api.ipify.org i zaloguj odpowiedź, aby potwierdzić, że Twoje skanowanie naprawdę wychodzi przez proxy.
Rotacja, ponowne próby i uczciwość
Dla prawdziwej rotacji, umieść kilka punktów końcowych w PROXIES i pozwól, aby process_request wybierał jeden na żądanie; połącz to z wbudowanym oprogramowaniem do ponawiania prób Scrapy, aby 429 lub 503 były ponawiane przy nowym wyborze. Utrzymuj DOWNLOAD_DELAY na wartości niezerowej i umiarkowanej współbieżności — crawler, który się wycofuje, jest znacznie trudniejszy do zablokowania niż ten, który pędzi.
Dwie szczere uwagi. Po pierwsze, proxy s4m są datacenter, a nie mieszkalne: doskonałe do API, testowania i umiarkowanie chronionych stron, ale agresywne systemy anty-botowe mogą oznaczać zakresy datacenter. Po drugie, rotacja nie jest licencją na ignorowanie zasad strony — przeczytaj robots.txt i jej warunki. Gdy potrzebujesz jednego spójnego wyjścia dla białej listy, dodaj dedykowany osobisty IP zamiast rotacji. Sprawdź wyjścia i porty za pomocą narzędzi i prototypuj przeciwko bezpłatnej liście proxy przed zaangażowaniem ruchu.
Pytania, odpowiedzi
Dlaczego Scrapy nie pobiera mojego USER:PASS z adresu URL proxy?
W przeciwieństwie do curl, HttpProxyMiddleware w Scrapy nie analizuje poświadczeń z URL. Musisz samodzielnie ustawić nagłówek Proxy-Authorization — zbuduj nagłówek Basic auth z USER:PASS, jak pokazano w przykładzie middleware.
Czy Scrapy może używać proxy SOCKS5?
Nie natywnie przez HttpProxyMiddleware, które jest zorientowane na HTTP. Użyj punktu końcowego HTTP na porcie 3128 dla Scrapy lub uruchom lokalny mostek SOCKS-to-HTTP, jeśli potrzebujesz konkretnie SOCKS5.
Jak mogę rotować proxy na żądanie?
Umieść kilka punktów końcowych proxy na liście i wybierz jeden w process_request, ustawiając request.meta["proxy"] za każdym razem. Połącz to z middleware retry Scrapy, aby zablokowane żądanie próbowało ponownie z nowym wyborem.
Czy to są proxysy mieszkalne?
Nie. proxy s4m to uwierzytelnione proxy SOCKS5 i HTTP w centrach danych, rozliczane na zasadzie pay-as-you-go. Nadają się do większości skanowania, chociaż mocno bronione cele mogą oznaczyć zakresy IP centrów danych.
Skaluj swoje skrypty Scrapy
Uwierzytelnione proxy datacenter na proxy.s4m.online, płatność na zasadzie pay-as-you-go, gotowe do rotacji przez middleware Scrapy. Dodaj dedykowany IP, gdy cel oczekuje jednego spójnego wyjścia.
Ludzie znaleźli tę stronę, szukając
- jak używać proxy z Scrapy
- jak skonfigurować jak używać proxy z Scrapy
- jak używać proxy z Scrapy dla systemu Windows
- czy jak używać proxy z Scrapy jest bezpieczne
- co to jest jak używać proxy z Scrapy
- Ustawienia openvpn
- jak sprawdzić, czy proxy jest anonimowe
- najlepsze protokoły VPN w 2026 roku
- jak skonfigurować wyłącznik kill VPN
- świeży konfiguracja proxy
- Plany proxy http
- jak naprawić 429 zbyt wiele żądań podczas zbierania danych
- wireguard
- jak unikać banów IP podczas scrapingu
- proxy do skrobania
Rzeczywiste frazy wyszukiwania, na które ta strona odpowiada — powiązane otwierają stronę, która je szczegółowo omawia.