Come evitare di essere bloccato con Python: 8 suggerimenti e trucchi

Vuoi evitare di essere bloccato durante lo scraping di dati dal Web o l’esecuzione di altre attività utilizzando Python? Allora sei sulla pagina giusta, poiché l’articolo qui sotto discute i metodi chiave per evitare i blocchi in Python.

Evita di essere bloccato con Python

L’automazione web semplifica le nostre attività su Internet. Alcune attività sono addirittura impossibili da eseguire senza l’automazione web, soprattutto se richieste su larga scala.

Anche con l’importanza dell’automazione web per il web, l’automazione web, in generale, è odiata dalla maggior parte dei servizi web. Nessun sito Web desidera l’accesso all’automazione, non per raschiare i propri dati o effettuare acquisti in modo automatizzato.

Se ti dedichi al web scraping o ad altre forme di automazione, sarai d’accordo con me sul fatto che i blocchi sono normali, a meno che tu non prenda provvedimenti consapevoli per evitarli. Fortunatamente per noi, puoi effettivamente evitare di essere bloccato.

Se sei uno sviluppatore Python che cerca di evitare di essere bloccato con Python, questo articolo è stato scritto per te. È importante che tu sappia che devi prendere in considerazione alcune cose e utilizzare alcune tecniche in gioco per evitare con successo di essere bloccato poiché i siti Web stanno diventando più intelligenti nel rilevare le attività relative ai bot.

Una cosa che devi sapere per certo è che se sai come un sito Web rileva le attività dei bot, puoi ignorare i controlli e rendere il tuo bot il più umano possibile.


8 suggerimenti comprovati per evitare di essere bloccati con Python


Python è solo uno dei linguaggi di programmazione utilizzati per sviluppare web scraper. Tuttavia, in realtà è uno dei linguaggi più diffusi per lo sviluppo di bot in generale. Anche se non sei uno sviluppatore Python, i metodi qui descritti possono essere applicati al tuo linguaggio di programmazione preferito. Di seguito sono riportati alcuni dei modi in cui puoi evitare di essere bloccato con Python.

1: Usa i proxy rotanti

Exploring-Rotating-Proxie

Il metodo più elementare per evitare blocchi durante l’esecuzione dell’automazione sul Web è l’utilizzo di proxy. I proxy sono fondamentalmente server intermedi che ti forniscono indirizzi IP alternativi.

Per le loro controparti a rotazione, non ti viene fornito solo un indirizzo IP: l’indirizzo IP assegnato a te viene modificato frequentemente. Il cambio frequente dell’indirizzo IP è molto importante se devi evitare di essere bloccato.

Si scopre che ogni sito Web ha un limite di richiesta consentito per indirizzo IP. Se provi a inviare più richieste dallo stesso indirizzo IP, molto probabilmente verrai bloccato. Questo limite di richiesta non è reso noto al pubblico e varia a seconda del sito Web e dell’attività.

Ma una cosa è certa: frequenti cambi di IP ti aiuteranno a evitare blocchi dovuti all’invio di troppe richieste da un indirizzo IP. I bot, per natura, inviano troppe richieste in un breve periodo di tempo e hanno bisogno di proxy a rotazione per scalare i sistemi anti-spam dei siti web.

Ti consigliamo di utilizzare una rete proxy residenziale di alta qualità con supporto automatico della rotazione IP. Bright Data e Smartproxy sono alcune delle migliori reti proxy residenziali consigliate con enormi pool di IP, un buon supporto per la posizione e sono abbastanza impercettibili.

  • BrightData (Luminati Proxy) – Miglior proxy in assoluto <Il numero 1 degli esperti per la raschiatura>
  • Proxy intelligente – Pool di proxy residenziale veloce
  • Soax – Miglior pool di proxy mobili

Per alcune attività, i proxy residenziali non funzioneranno: avrai bisogno di proxy mobili. Puoi anche acquistare proxy mobili a rotazione da Bright Data. Soax è un altro fornitore di proxy mobili rotanti che funzionano. Usare i proxy nel codice Python è semplice. Di seguito è riportato un codice di esempio che utilizza la libreria di richieste di terze parti.

import requests

proxies = {

'http': 'http://proxy.example.com:8080',

'https': 'http://secureproxy.example.com:8090',

}

url="http://mywebsite.com/example"


response = requests.post(url, proxies=proxies)

2: Usa Captcha Solver

Usa il risolutore di captcha

I siti web stanno diventando sempre più intelligenti di giorno in giorno e il solo utilizzo dei proxy non è sufficiente. Anche con i proxy, possono indovinare se sei un bot o meno. Alcune delle forme popolari di blocchi che sperimenterai come sviluppatore di bot sono Captcha.

E quando ne vieni colpito uno, a meno che tu non sia in grado di risolverlo, il tuo compito finirà per quel momento. Come gestirlo è semplice: usa un risolutore di captcha. Con i risolutori Captcha, sei in grado di risolvere captcha i captcha che appaiono, permettendoti così di continuare la tua attività di automazione senza ostacoli.

Quando si tratta di risolvere i captcha, ci sono molti servizi di risoluzione dei captcha sul mercato. 2Captcha e DeathByCaptcha sono alcune delle popolari opzioni a tua disposizione. Mentre alcuni dei captcha possono essere risolti tramite l’intelligenza artificiale, la maggior parte dei captcha al giorno d’oggi richiede esseri umani e, come tali, questi risolutori di captcha svuotano i risolutori di captcha umani dai paesi del terzo mondo per aiutare a risolvere i captcha.

Per questo motivo, non aspettarti di ottenere risolutori di captcha gratuiti che funzionino, soprattutto quando hai a che fare con captcha complessi che non possono essere risolti utilizzando l’intelligenza artificiale.


3: impostare agenti utente personalizzati e altre intestazioni pertinenti — e ruotarli

Imposta agenti utente personalizzati e altre intestazioni pertinenti

Uno dei modi più semplici con cui i servizi Web rilevano i bot è tramite i loro agenti utente e altre intestazioni pertinenti. Python è un popolare linguaggio di programmazione per il web scraping e i siti web conoscono le intestazioni predefinite impostate da Python e dalle sue popolari librerie HTTP.

Prendiamo, ad esempio, la libreria delle richieste utilizza “python-requests/2.25” come stringa predefinita dell’agente utente. Questo ti darà subito. In passato, ho provato a eseguire lo scraping di Amazon senza impostare un’intestazione dell’agente utente personalizzato utilizzando Python e sono stato bloccato. Dopo aver impostato l’agente utente su quello del mio browser Chrome, la richiesta è andata a buon fine.

L’agente utente ha lo scopo di identificare il client. Poiché i siti Web consentono solo agli utenti regolari, è meglio utilizzare l’agente utente dei browser più diffusi. Ecco una pagina Web in cui è possibile trovare i dettagli degli agenti utente dei browser Web più diffusi. È anche importante che tu sappia che oltre all’agente utente, ci sono anche altre intestazioni rilevanti che devi impostare.

Questo varia a seconda dei siti web. Utilizza gli strumenti di rete negli Strumenti per sviluppatori del tuo browser per controllare le intestazioni necessarie impostate dal tuo browser quando invii una richiesta al tuo sito web di destinazione.

Alcune delle intestazioni di richiesta popolari includono “Accept”, “Accept-Encoding” e “Accept-Language”. Le intestazioni della richiesta che sono univoche e indispensabili per il tuo sito Web di destinazione ti verranno rivelate se utilizzi lo strumento per sviluppatori. La semplice impostazione dell’agente utente non è sufficiente. Devi anche ruotare l’agente utente. Di seguito è riportato un codice su come impostare la stringa dell’agente utente in Python.

import requests

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"}

response = requests.get("http://www.kite.com", headers=headers)

4: Usa un browser senza testa

Browser senza testa

Un altro metodo che puoi utilizzare per evitare di essere bloccato è l’utilizzo di browser headless. I browser headless sono software che si comportano come browser reali ma senza l’interfaccia utente (UI) del browser. Sono utilizzati principalmente per test automatizzati e automazione web in generale.

In passato, l’unico motivo per cui avresti dovuto utilizzare browser senza testa per il web scraping o altre forme di automazione era se il sito Web di destinazione dipendeva da JavaScript per il rendering del suo contenuto. Al giorno d’oggi, i siti Web utilizzano JavaScript per raccogliere vari dati, che utilizza per generare impronte digitali del browser o semplice comportamento del monitor.

Se usi normali librerie HTTP come le richieste libreria HTTP per Python, il tuo sito web di destinazione può dire che stai usando un bot e non un browser. Per gli sviluppatori Python, Selenium è lo strumento per il lavoro. Selenium automatizza i browser Web in modo che il tuo bot si comporti come un vero browser.

Potrebbe attivare eventi proprio come clic, scorrimenti e tutti i tipi di eventi. Ciò ridurrà anche il verificarsi di captcha a causa di quanto reali saranno le tue attività. L’unico grosso problema associato all’utilizzo di Selenium o di qualsiasi altro strumento per l’automazione dei browser è che è più lento rispetto all’utilizzo delle normali librerie HTTP.


5: Imposta ritardi casuali tra le richieste

Uno dei motivi per cui vieni bloccato facilmente è che il tuo bot invia troppe richieste web in un breve periodo di tempo. Se hai effettuato l’accesso a un account su un sito Web, sappi solo che i proxy non ti aiuteranno: sei conosciuto. Invece di provare a utilizzare i proxy, puoi anche limitare la velocità con cui invii le richieste.

Come affermato in precedenza, la maggior parte dei siti Web ti bloccherà se superi il limite di richieste. L’unico modo importante per affrontare questo problema è impostare ritardi nel codice. Per Python, puoi utilizzare il metodo “sleep” nella classe “time” per impostare ritardi tra le richieste. Oltre a vedere i ritardi, è anche meglio renderli casuali, poiché l’invio di richieste agli stessi intervalli ti tradirà anche come bot.


6: Evita gli Honeypot

Evita gli Honeypot

I siti web stanno diventando subdoli con le loro tecniche anti-scraping. Uno dei modi in cui rilevano i web scraper è l’impostazione di honeytrap. Gli Honeytrap aggiungono fondamentalmente collegamenti invisibili a una pagina. Il collegamento è camuffato in modo che i normali utenti di Internet non li vedano.

Il collegamento avrà il suo attributo CSS per la visualizzazione su nessuno {display:none} o la visibilità su nascosto {visibility:hidden}. Con questi valori di attributo, i collegamenti non sono visibili agli occhi, ma i robot automatici li vedranno. Una volta che c’è una visita a tale URL, il sito Web bloccherà ulteriori richieste.

A volte, possono diventare ancora più intelligenti. Invece di utilizzare uno qualsiasi degli attributi sopra menzionati, imposteranno semplicemente il dispositivo di raffreddamento dell’URL su bianco se il dispositivo di raffreddamento dello sfondo è bianco. In questo modo, i web scraper che cercano di evitare gli URL con il loro valore di visualizzazione o visibilità impostato per renderli invisibili rimarranno comunque intrappolati.

Per questo motivo, dovresti eseguire la scansione di tutti gli URL in modo programmatico e assicurarti che non abbiano attributi o impostazioni CSS che li rendano nascosti. Chiunque venga rilevato dovrebbe essere evitato per evitare di essere rilevato e bloccato.


7: raschia invece la cache di Google

Raschiare invece la cache di Google

A volte, il tuo sito di destinazione potrebbe essere solo un osso difficile da decifrare. Se non vuoi affrontare la seccatura di cercare di evitare di essere bloccato, puoi raschiare dall’indice di Google.

Fortunatamente per noi, Google mantiene una cache delle pagine disponibili nel suo indice. E la buona notizia è che non è protetta come la stessa piattaforma di ricerca di Google. Puoi scartare da questo indice e risparmiarti il ​​mal di testa di gestire i sistemi anti-spam. Per eseguire lo scraping dalla cache di Google, utilizza questo URL: “http://webcache.googleusercontent.com/search?q=cache:YOUR_URL”. Sostituisci YOUR_URL con l’URL della tua pagina di destinazione.

Tuttavia, è importante sapere che non tutte le pagine sono disponibili in Google Cache. Qualsiasi pagina web non disponibile su Google, come le pagine protette da password, non può essere trovata in Google Cache.

Altrettanto importante è il fatto che alcuni siti Web, anche se disponibili su Google, impediscono a Google di memorizzare nella cache le loro pagine per l’accesso pubblico. Anche la questione della freschezza è qualcosa da considerare. Se i dati su una pagina cambiano spesso, la cache di Google è inutile in questo caso e per i siti Web impopolari, questo è anche peggio a causa dei lunghi ritardi tra le scansioni.


8: utilizzare le API di scraping

Usa le API di scraping

L’ultima risorsa per evitare di essere bloccato è utilizzare un’API di scraping. Le API di scraping sono API REST che ti aiutano a estrarre i dati dai siti Web senza che tu debba affrontare i problemi dei blocchi. La maggior parte delle API di scraping gestisce la gestione dei proxy, i browser headless e i captcha. Alcuni sono persino dotati di parser per semplificare l’estrazione dei punti dati.

E una cosa buona con le API di scraping è che puoi pagare solo per le richieste andate a buon fine: questo li fa sforzare di più per consegnare, poiché è solo quando fanno soldi. Con le API di scraping, puoi concentrarti solo sui dati e non sui blocchi.

Ti aiuta anche a evitare di preoccuparti della gestione dei web scraper e delle modifiche al sito web. Attualmente, ScraperAPI, ScrapingBee e WebScraperAPI sono le migliori API di scraping disponibili. Sono anche convenienti.

Le 3 migliori API di web scraping


Conclusion

I metodi sopra descritti sono alcuni dei migliori metodi che puoi utilizzare per evitare di essere bloccato durante l’automazione delle tue attività in Python. Un aspetto positivo dei metodi sopra descritti è che non sono esclusivi di Python.

I metodi per evitare di essere bloccati durante l’esecuzione di web scraping o altre forme di automazione non sono unici per nessun linguaggio di programmazione. Puoi applicarli anche in altre lingue.