pl
English
Español
中國人
Tiếng Việt
Deutsch
Українська
Português
Français
भारतीय
Türkçe
한국인
Italiano
Gaeilge
اردو
Indonesia CloudScraper to moduł do automatyzacji żądań HTTP i interakcji z zasobami internetowymi, które stosują dodatkową walidację ruchu, takimi jak Cloudflare. CloudScraper proxy pomaga zarządzać połączeniami, ustawiać parametry sieciowe dla żądań i utrzymywać stabilny dostęp do witryn, które sprawdzają adresy IP, nagłówki i zachowanie klientów.
CloudScraper jest zaimplementowany w Pythonie i zbudowany na bazie biblioteki requests. W przeciwieństwie do podstawowego klienta HTTP, może automatycznie obsługiwać strony wyzwań z punktami kontrolnymi JavaScript, emulując zachowanie podobne do przeglądarki. Moduł dodaje wymagane nagłówki, zarządza plikami cookie, śledzi przekierowania i radzi sobie z typowymi mechanizmami ochrony - pod warunkiem, że nie obejmują one CAPTCHA.
W praktyce programiści często używają go jako interfejsu API do skrobania stron internetowych w celu usprawnienia procesów ekstrakcji danych przy jednoczesnym zminimalizowaniu zakazów IP.
Korzystanie z serwera proxy CloudScraper umożliwia:
Biblioteka działa bez uruchamiania pełnej przeglądarki i w niektórych przypadkach może zastąpić narzędzia headless, takie jak Puppeteer czy Playwright.
Cloudflare stosuje kilka warstw ochrony przed zautomatyzowanym ruchem, zwanych łącznie ochroną przed botami. Obejmują one wyzwania JavaScript, przekierowania HTTP, kontrole nagłówków, tokeny plików cookie i limity oparte na adresach IP. CloudScraper wykrywa mechanizm walidacji i stosuje odpowiednią strategię obsługi.
Jest wieloplatformowy, regularnie aktualizowany i kompatybilny z systemami Windows, Linux i macOS. Działa w środowiskach wirtualnych i na serwerach bez interfejsu graficznego. Pozwala również programistom na szybką integrację serwerów proxy w celu lepszej kontroli dostępu i niezawodności.
Aby rozpocząć, musisz mieć zainstalowany Python w wersji 3.6 lub nowszej. Korzystanie z CloudScraper w Pythonie jest wygodne, ponieważ moduł można podłączyć za pomocą jednego polecenia i jest on natychmiast gotowy do pracy w dowolnym środowisku.
Narzędzie jest instalowane za pomocą standardowego menedżera pakietów Pythona - pip, który umożliwia pobieranie i aktualizowanie bibliotek innych firm z oficjalnego repozytorium PyPI. Jeśli korzystasz ze środowiska wirtualnego, upewnij się, że jest ono aktywowane przed instalacją.
pip install cloudscraper
Podczas instalacji biblioteka automatycznie pobiera kluczowe zależności: requests, pyparsing i requests-toolbelt. W razie potrzeby można je zaktualizować ręcznie:
pip install --upgrade requests pyparsing requests-toolbelt
Aby sprawdzić, czy instalacja zakończyła się poprawnie, można uruchomić następujący skrypt testowy:
import cloudscraper
scraper = cloudscraper.create_scraper()
response = scraper.get("https://www.cloudflare.com")
print(response.status_code)
Jeśli skrypt zwróci kod statusu 200, 301 lub 302, połączenie powiodło się i otrzymano odpowiedź z serwera.
Poniższy przykład pokazuje, jak użyć modułu do wysłania próby do chronionej strony, określając parametry środowiska odpowiadające przeglądarce Chrome w systemie Windows.
Jest to konieczne do prawidłowego generowania nagłówków i zwiększenia szans na pomyślne nawiązanie sesji:
import cloudscraper
url = "https://example.com/protected"
scraper = cloudscraper.create_scraper(
browser={
'browser': 'chrome',
'platform': 'windows',
'mobile': False
}
)
response = scraper.get(url)
if response.status_code == 200:
print("Access granted.")
print(response.text[:500])
elif response.status_code == 403:
print("Request denied. Check proxy or headers.")
else:
print(f"Response code: {response.status_code}")
Na podstawie tych parametrów moduł zastępuje odpowiedni User-Agent i inne kluczowe nagłówki, co pozwala na prawidłową obsługę wyzwania i pobranie zawartości strony.
Jeśli używane są serwery proxy CloudScraper akceptuje ich parametry w standardowej formie - jako słownik proxy, podobny do formatu używanego przez bibliotekę żądań. Pozwala to programistom na korzystanie z tego samego serwera proxy dla wielu żądań, zapewniając spójną obsługę IP i stabilność sesji.
Przykład przekazywania parametrów serwera proxy podczas wykonywania żądania:
proxies = {
'http': 'http://user:pass@proxy.server:port',
'https': 'http://user:pass@proxy.server:port'
}
scraper = cloudscraper.create_scraper()
response = scraper.get(url, proxies=proxies)
Serwery proxy CloudScraper są zalecane podczas pracy z zasobami, które ograniczają dostęp przez IP, region lub częstotliwość połączeń. Pomagają one rozłożyć obciążenie, symulować ruch z żądanego regionu i poprawiają stabilność dostępu.
Pomimo zaawansowanych mechanizmów interakcji z ochroną, CloudScraper nie obsługuje automatycznie captcha. Dotyczy to interaktywnych hCaptcha i graficznych reCAPTCHA. Biblioteka nie rozpoznaje ich zawartości, więc nie może generować odpowiedzi na takie formularze.
Podczas pobierania strony z captcha, moduł zwraca HTML zawierający odpowiedni element, na przykład:
<iframe src="https://www.google.com/recaptcha/api2/anchor?...">
W tym przypadku istnieją dwa możliwe rozwiązania:
captcha_data = {
'method': 'userrecaptcha',
'googlekey': 'SITE_KEY',
'pageurl': 'https://example.com',
'key': 'API_KEY_ANTICAPTCHA'
} Jeśli captcha pojawia się nawet przy umiarkowanej liczbie żądań, ma to sens:
Jakość adresu IP jest krytycznym czynnikiem podczas pracy z chronionymi zasobami. Niezawodne serwery proxy dla CloudScraper (domowe, mobilne, ISP lub centrum danych) pomagają zmniejszyć prawdopodobieństwo wystąpienia captcha i zapewniają stabilną wydajność sesji. Aby poznać różnice między różnymi typami serwerów proxy i dowiedzieć się, jak wybrać najlepsze rozwiązanie dla konkretnego zadania, przeczytaj ten artykuł.
Moduł rozwiązuje wiele zadań związanych z omijaniem Cloudflare, ale w niektórych przypadkach może być potrzebne inne podejście - bardziej wyspecjalizowane lub dostosowane do konkretnych warunków ochrony.
Oto kilka popularnych alternatyw:
Porównanie rozwiązań:
| Funkcja / narzędzie | CloudScraper | Requests+cookies | Puppeteer | Playwright |
|---|---|---|---|---|
| Złożoność wdrożenia | Niski | Średni | Wysoki | Wysoki |
| Szybkość działania | Wysoki | Wysoki | Średni | Średni |
| Odporność na kontrole | Średni | Niski | Wysoki | Maksimum |
| Integracja z usługą Captcha | Tak (przez API) | Nie | Tak (za pośrednictwem wtyczek/API) | Tak (za pośrednictwem wtyczek/API) |
| Wykonywanie skryptów JavaScript | Częściowy | Nie | Tak | Tak |
| Zużycie zasobów | Niski | Niski | Wysoki | Wysoki |
Nawet przy prawidłowej konfiguracji, CloudScraper może napotkać problemy techniczne, które są łatwe do zdiagnozowania i rozwiązania po zrozumieniu przyczyn.
Podczas przetwarzania żądania może pojawić się komunikat wskazujący na problem z certyfikatem SSL. Wskazuje to na niepowodzenie w jego weryfikacji - najczęściej z powodu wygasłego certyfikatu lub nieprawidłowej daty systemowej.
Jak to naprawić:
scraper.get(url, verify=False)
Kod pokazuje, jak tymczasowo ominąć błąd weryfikacji SSL poprzez wyłączenie walidacji certyfikatu. Jest to przydatne do diagnostyki, ale niebezpieczne do stałego użytku.
Serwer odrzuca połączenie z błędem 403, mimo że adres URL jest dostępny w przeglądarce. Dzieje się tak, gdy ochrona identyfikuje próby jako zautomatyzowane.
Jak rozwiązać problem:
mport cloudscraper
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.199 Safari/537.36',
'Referer': 'https://example.com',
'Accept-Language': 'en-US,en;q=0.9',
'Accept-Encoding': 'gzip, deflate, br'
}
scraper = cloudscraper.create_scraper()
response = scraper.get("https://example.com", headers=headers)
print(response.status_code)
Uwaga: Jeśli User-Agent jest ustawiony ręcznie za pomocą nagłówków, parametr przeglądarki podczas tworzenia sesji nie jest wymagany - zostanie nadpisany.
Należy również sprawdzić używany serwer proxy i w razie potrzeby zmienić adres IP lub wybrać serwer pośredniczący z innego regionu.
Moduł nie może przetworzyć zwróconej strony wyzwania, wyświetlając pusty kod HTML lub komunikat o błędzie. Powód - typ zabezpieczenia nieobsługiwany przez bibliotekę (na przykład hCaptcha lub Turnstile).
Jak rozwiązać problem:
Jeśli to nie pomoże, zaleca się przejście na przeglądarki bezgłowe.
Podczas wysyłania połączenia obserwowane są powtarzające się przekierowania między stronami. Zawartość nie ładuje się, a linia żądania zmienia się wielokrotnie, nie docierając do strony docelowej.
W takim przypadku użytkownik jest przekierowywany z powrotem na stronę weryfikacji, ponieważ przejście ochrony nie zostało zakończone. Może się to zdarzyć, gdy pliki cookie nie są zapisywane między próbami lub sesja zostanie utracona podczas nawigacji.
Kroki do rozwiązania:
import cloudscraper
scraper = cloudscraper.create_scraper()
response1 = scraper.get("https://example.com/start")
response2 = scraper.get("https://example.com/continue")
print(response2.status_code) import time
import cloudscraper
scraper = cloudscraper.create_scraper()
response1 = scraper.get("https://example.com/start")
time.sleep(2)
response2 = scraper.get("https://example.com/continue") Dodanie opóźnienia pomaga uniknąć sytuacji, w których serwer klasyfikuje ruch jako automatyczny z powodu zbyt wysokiej częstotliwości połączeń. Jest to szczególnie ważne w przypadku korzystania z proxy CloudScraper: opóźnienia poprawiają stabilność sesji i zmniejszają prawdopodobieństwo uruchomienia filtrów.
Niektóre próby kończą się powodzeniem, podczas gdy inne kończą się niepowodzeniem z błędami połączenia lub przekroczeniem limitu czasu. Często wskazuje to na niskiej jakości adresy IP.
Środki zaradcze:
Rejestrowanie pomaga śledzić działanie modułu podczas łączenia się za pośrednictwem serwera proxy (żądania, kody stanu, typy błędów). W Pythonie odbywa się to na przykład za pomocą standardowego modułu logowania:
import logging
import cloudscraper
# basic file logging
logging.basicConfig(
filename="scraper.log",
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s"
)
scraper = cloudscraper.create_scraper()
try:
response = scraper.get("https://example.com")
logging.info(f"Request successful, status: {response.status_code}")
except Exception as e:
logging.error(f"Request error: {e}")
Tworzy to dziennik błędów i udanych prób, który pozwala określić, który serwer proxy CloudScraper nie powiódł się i kiedy.
Jeśli serwer proxy zacznie zwracać 403, przekroczenie limitu czasu, błędy SSL itp Rotacja IP. Użyj puli serwerów proxy i wróć do następnego dostępnego serwera, na przykład w przypadku awarii:
import cloudscraper
proxies_list = [
"http://user:pass@proxy1:port",
"http://user:pass@proxy2:port",
"http://user:pass@proxy3:port"
]
url = "https://example.com"
scraper = cloudscraper.create_scraper()
for proxy in proxies_list:
try:
response = scraper.get(url, proxies={"http": proxy, "https": proxy}, timeout=10)
if response.status_code == 200:
print("Success via:", proxy)
break
except Exception as e:
print("Error on", proxy, "-", e)
W rezultacie żądania są wykonywane przez pierwszy dostępny serwer proxy z puli, co pomaga uniknąć niedziałających adresów.
Korzystanie z CloudScraper Proxy pomaga zautomatyzować połączenia z witrynami z ochroną na poziomie połączenia. Błędy zazwyczaj wynikają z niestabilnych serwerów proxy, wysokiej liczby prób lub CAPTCHA. Praktyczne środki zaradcze obejmują korzystanie z niezawodnych adresów IP, dostosowywanie nagłówków i zarządzanie częstotliwością żądań.
CloudScraper działa na poziomie żądania HTTP i nie odtwarza pełnego zachowania przeglądarki. Może maskować się za pomocą nagłówków, ale nie może naśladować zachowania użytkownika ani odcisków palców przeglądarki. Do kontroli opartych na zachowaniu należy używać narzędzi bezgłowych, takich jak Playwright lub Puppeteer.
Tak. Izoluj sesje, używaj puli proxy i prawidłowo obsługuj wyjątki. Utwórz dedykowaną sesję na wątek. W przypadku błędów połączenia (timeout, ProxyError, 403 Forbidden, 429 Too Many Requests), rotuj proxy.
CloudScraper jest dobrym rozwiązaniem dla małych i średnich projektów, w których liczy się szybka integracja. W przypadku krytycznych systemów o dużym obciążeniu należy rozważyć bardziej skalowalne rozwiązania (np. Playwright) lub niestandardowy stos oparty na przeglądarce.
Komentarze: 0