it
English
Español
中國人
Tiếng Việt
Deutsch
Українська
Português
Français
भारतीय
Türkçe
한국인
Gaeilge
اردو
Indonesia
Polski CloudScraper è un modulo per automatizzare le richieste HTTP e interagire con le risorse web che applicano una validazione aggiuntiva del traffico, come Cloudflare. Il proxy CloudScraper aiuta a gestire le connessioni, a impostare i parametri di rete per le richieste e a mantenere stabile l'accesso ai siti che ispezionano IP, intestazioni e comportamento dei clienti.
CloudScraper è implementato in Python e costruito sulla base della libreria requests. A differenza di un client HTTP di base, è in grado di gestire automaticamente pagine di sfida con checkpoint JavaScript, emulando un comportamento simile a quello del browser. Il modulo aggiunge le intestazioni necessarie, gestisce i cookie, segue i reindirizzamenti ed è in grado di gestire i meccanismi di protezione più comuni, a condizione che non comportino un CAPTCHA.
In pratica, gli sviluppatori la utilizzano spesso come API per lo scraping del web per semplificare i processi di estrazione dei dati riducendo al minimo i divieti IP.
L'utilizzo del proxy CloudScraper consente di:
La libreria viene eseguita senza lanciare un browser completo e può, in alcuni casi, sostituire strumenti headless come Puppeteer o Playwright.
Cloudflare impiega diversi livelli di protezione contro il traffico automatizzato, collettivamente indicati come protezione anti-bot. Questi includono sfide JavaScript, reindirizzamenti HTTP, controlli delle intestazioni, token dei cookie e limiti basati sull'IP. CloudScraper rileva il meccanismo di convalida e applica una strategia di gestione appropriata.
È multipiattaforma, regolarmente aggiornato e compatibile con Windows, Linux e macOS. Funziona in ambienti virtuali e su server senza interfaccia grafica. Inoltre, consente agli sviluppatori di integrare rapidamente i proxy per migliorare il controllo degli accessi e l'affidabilità.
Per iniziare, è necessario avere installato la versione 3.6 o superiore di Python. L'uso di CloudScraper in Python è comodo perché il modulo può essere collegato con un solo comando ed è immediatamente pronto a funzionare in qualsiasi ambiente.
Lo strumento viene installato tramite il gestore di pacchetti Python standard - pip, che consente di scaricare e aggiornare le librerie di terze parti dal repository ufficiale PyPI. Se si utilizza un ambiente virtuale, assicurarsi che sia attivato prima dell'installazione.
pip install cloudscraper
Durante l'installazione, la libreria inserisce automaticamente le dipendenze chiave: requests, pyparsing e requests-toolbelt. Se necessario, possono essere aggiornate manualmente:
pip install --upgrade requests pyparsing requests-toolbelt
Per verificare che l'installazione sia stata completata correttamente, è possibile eseguire il seguente script di test:
import cloudscraper
scraper = cloudscraper.create_scraper()
response = scraper.get("https://www.cloudflare.com")
print(response.status_code)
Se lo script restituisce il codice di stato 200, 301 o 302, la connessione è riuscita e il server ha ricevuto una risposta.
L'esempio seguente mostra come utilizzare il modulo per inviare un tentativo a una pagina protetta, specificando i parametri di ambiente che corrispondono al browser Chrome su Windows.
Ciò è necessario per la corretta generazione delle intestazioni e per aumentare le possibilità di stabilire con successo una sessione:
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}")
In base a questi parametri, il modulo sostituisce l'User-Agent appropriato e altre intestazioni chiave, che consentono di gestire correttamente la sfida e di recuperare il contenuto della pagina.
Se si utilizzano server proxy CloudScraper accetta i loro parametri in una forma standard, come un dizionario di proxy, simile al formato utilizzato dalla libreria requests. Ciò consente agli sviluppatori di utilizzare lo stesso proxy per più richieste, garantendo una gestione coerente degli IP e la stabilità della sessione.
Esempio di come passare i parametri del server proxy durante l'esecuzione di una richiesta:
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)
I server proxy CloudScraper sono consigliati quando si lavora con risorse che limitano l'accesso per IP, regione o frequenza di chiamata. Essi aiutano a distribuire il carico, a simulare il traffico dalla regione desiderata e a migliorare la stabilità dell'accesso.
Nonostante i meccanismi avanzati di interazione con la protezione, CloudScraper non gestisce automaticamente i captchas. Questo vale per gli hCaptcha interattivi e i reCAPTCHA grafici. La libreria non riconosce il loro contenuto, quindi non può generare risposte a tali moduli.
Quando si recupera una pagina con un captcha, il modulo restituisce l'HTML contenente l'elemento corrispondente, ad esempio:
<iframe src="https://www.google.com/recaptcha/api2/anchor?...">
In questo caso, esistono due possibili approcci risolutivi:
captcha_data = {
'method': 'userrecaptcha',
'googlekey': 'SITE_KEY',
'pageurl': 'https://example.com',
'key': 'API_KEY_ANTICAPTCHA'
} Se un captcha appare anche con un tasso di richiesta moderato, ha senso farlo:
La qualità dell'indirizzo IP è un fattore critico quando si lavora con risorse protette. I proxy affidabili per CloudScraper (residenziali, mobili, ISP o datacenter) aiutano a ridurre la probabilità di captchas e a garantire prestazioni stabili della sessione. Per conoscere le differenze tra i vari tipi di proxy e come scegliere la soluzione migliore per un compito specifico, leggete questo articolo.
Il modulo risolve molti compiti relativi all'aggiramento di Cloudflare, ma in alcuni casi potrebbe essere necessario un approccio diverso, più specializzato o adattato a condizioni di protezione specifiche.
Ecco alcune alternative comuni:
Soluzione a confronto:
| Funzione / Strumento | CloudScraper | Requests+cookies | Puppeteer | Playwright |
|---|---|---|---|---|
| Complessità di implementazione | Basso | Medio | Alto | Alto |
| Velocità delle prestazioni | Alto | Alto | Medio | Medio |
| Resistenza ai controlli | Medio | Basso | Alto | Massimo |
| Integrazione del servizio Captcha | Yes (via API) | No | Sì (tramite plugin/API) | Sì (tramite plugin/API) |
| Esecuzione di JavaScript | Parziale | No | Sì | Sì |
| Consumo di risorse | Basso | Basso | Alto | Alto |
Anche con una configurazione corretta, CloudScraper può incontrare problemi tecnici che sono semplici da diagnosticare e risolvere una volta comprese le cause.
Durante l'elaborazione di una richiesta, potrebbe apparire un messaggio che indica un problema con il certificato SSL. Ciò indica un errore nella verifica, spesso dovuto a un certificato scaduto o a una data di sistema errata.
Come risolvere il problema:
scraper.get(url, verify=False)
Il codice mostra come aggirare temporaneamente l'errore di verifica SSL disabilitando la convalida del certificato. Questo è utile per la diagnostica, ma non è sicuro per un uso permanente.
Il server rifiuta una chiamata con l'errore 403, anche se l'URL è accessibile nel browser. Questo accade quando la protezione identifica i tentativi come automatici.
Come risolvere il problema:
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)
Nota: se User-Agent viene impostato manualmente tramite le intestazioni, il parametro del browser al momento della creazione della sessione non è necessario: verrà sovrascritto.
È inoltre necessario verificare il proxy in uso e, se necessario, cambiare l'IP o selezionare un server intermedio di un'altra regione.
Il modulo non può elaborare la pagina di sfida restituita, mostrando un HTML vuoto o un messaggio di errore. Motivo: un tipo di protezione non supportato dalla libreria (ad esempio, hCaptcha o Turnstile).
Come risolvere il problema:
Se ciò non dovesse essere d'aiuto, si consiglia di passare ai browser headless.
Durante l'invio di una chiamata, si osservano ripetuti reindirizzamenti tra le pagine. Il contenuto non viene caricato e la riga di richiesta cambia più volte senza raggiungere la pagina di destinazione.
In questo caso, l'utente viene reindirizzato alla pagina di verifica perché il superamento della protezione non è stato completato. Questo può accadere quando i cookie non vengono salvati tra un tentativo e l'altro o la sessione viene persa durante la navigazione.
Passi per risolvere il problema:
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") L'aggiunta di un ritardo aiuta a evitare situazioni in cui il server classifica il traffico come automatico a causa di una frequenza di chiamata troppo elevata. Questo è particolarmente importante quando si utilizza il proxy CloudScraper: i ritardi migliorano la stabilità della sessione e riducono la probabilità di attivare i filtri.
Alcuni tentativi riescono, mentre altri falliscono con errori di connessione o timeout. Questo spesso indica IP di bassa qualità.
Mitigazioni:
Il logging aiuta a tracciare il funzionamento del modulo durante la connessione tramite un server proxy (richieste, codici di stato, tipi di errore). In Python questo viene fatto con il modulo standard di logging, ad esempio:
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}")
Questo produce un registro degli errori e dei tentativi andati a buon fine che consente di determinare quale proxy CloudScraper ha fallito e quando.
Se un proxy inizia a restituire errori 403, di timeout, SSL, ecc. Rotazione IP. Utilizzare un pool di proxy e, in caso di guasto, ripiegare sul successivo server disponibile, ad esempio:
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)
Di conseguenza, le richieste vengono eseguite attraverso il primo proxy disponibile del pool, evitando così gli indirizzi non funzionanti.
L'uso di CloudScraper Proxy aiuta ad automatizzare le chiamate ai siti con protezione a livello di connessione. Gli errori sono tipicamente dovuti a proxy instabili, a tassi elevati di tentativi o a CAPTCHA. I rimedi pratici includono l'uso di IP affidabili, l'adattamento delle intestazioni e la gestione della frequenza delle richieste.
CloudScraper opera a livello di richiesta HTTP e non riproduce il comportamento completo del browser. Può mascherarsi con le intestazioni, ma non può emulare il comportamento dell'utente o le impronte digitali del browser. Per i controlli basati sul comportamento, utilizzare strumenti headless come Playwright o Puppeteer.
Sì. Isolare le sessioni, usare un pool di proxy e gestire correttamente le eccezioni. Creare una sessione dedicata per ogni thread. In caso di errori di connessione (timeout, ProxyError, 403 Forbidden, 429 Too Many Requests), ruotare i proxy.
CloudScraper è adatto a progetti di piccole e medie dimensioni in cui è importante la rapidità di integrazione. Per i sistemi mission-critical e ad alto carico, è opportuno considerare soluzioni più scalabili (ad esempio, Playwright) o uno stack personalizzato basato su browser.
Commenti: 0