Salta al contenuto

La guida completa all'uso dei proxy con le richieste Python

Se stai scrivendo scraper o crawler Python, la configurazione del supporto proxy dovrebbe essere in cima alla tua lista. I proxy ti consentono di instradare le tue richieste attraverso server intermedi, nascondendo la tua posizione reale. Ciò apre molte possibilità come lo scraping di siti su larga scala senza essere bloccati o l'accesso a contenuti limitati a determinate regioni.

In questa guida completa, tratterò tutto ciò che devi sapere per utilizzare i proxy con il modulo request di Python. Spiegherò perché i proxy sono utili, come funzionano, dove trovarli, le migliori pratiche per l'autenticazione e la sicurezza e come implementare la rotazione dei proxy. Seguimi e ti farò diventare un proxy pro!

Perché i proxy sono essenziali per gli scraper Python

Diamo prima un'occhiata al motivo per cui i proxy sono così importanti per gli scraper Python:

Evita di rimanere bloccato durante lo scraping

Il motivo n. 1 per utilizzare i proxy con le richieste Python è evitare i divieti IP. Molti siti dispongono di protezioni per bloccare scraper e bot. Possono consentire un certo numero di richieste al minuto da un determinato IP prima di inserirlo nella lista nera.

Lo scraping da un pool rotante di server proxy ti fa sembrare molti utenti diversi. I siti avranno più difficoltà a rilevarti e bloccarti rispetto allo scraping da un singolo IP residenziale.

Per darti un’idea delle dimensioni, un sito può consentire 60-100 richieste al minuto per IP prima di attivare un divieto. Anche con solo una manciata di proxy puoi facilmente moltiplicare per dieci la tua capacità di scraping. I proxy consentono la scalabilità.

Accedi ai contenuti con restrizioni geografiche

Un altro vantaggio dei proxy è la possibilità di accedere a contenuti limitati a determinate regioni. Ad esempio, il servizio di streaming video BBC iPlayer è disponibile solo per i residenti nel Regno Unito. Instradando il tuo traffico attraverso un proxy nel Regno Unito, puoi visualizzare il sito come se fossi a Londra.

Altri esempi importanti includono Hulu (solo Stati Uniti), Channel 4 (Regno Unito) e NHK World (Giappone). I proxy ti offrono opzioni per accedere a contenuti limitati per regione da qualsiasi luogo.

Anonimato e sicurezza

Nascondere il tuo vero indirizzo IP migliora anche la privacy durante lo scraping. I siti non saranno in grado di risalire facilmente alle richieste fino alla tua posizione o identità.

Gli autori delle minacce possono anche sfruttare i proxy per mascherare gli attacchi, ma questo va oltre lo scopo in questa sede. Ci concentreremo sugli aspetti positivi del miglioramento della privacy e dell'anonimato per il web scraping.

Raschietti in pitone in scala

I proxy ti consentono di effettuare molte più richieste parallele poiché non sei limitato dalla capacità di un singolo IP residenziale.

Invece di raggiungere i limiti di threading o essere bloccato con un singolo IP, puoi instradare le richieste attraverso più proxy per moltiplicare le richieste al minuto che puoi effettuare.

Se ciascun proxy consente 60 richieste/min, 4 proxy ti darebbero una capacità di 240 richieste/min. 10 proxy scalano fino a 600 richieste/min. I proxy sono essenziali per creare scraper distribuiti e ad alto volume in Python.

Ora che hai capito perché i proxy sono utili, entriamo nei dettagli di come funzionano...

Come funzionano i proxy: rendere anonime le tue richieste

I proxy fungono da intermediari per le richieste tra te e il server di destinazione:

Come funzionano i proxy

Invece di connetterti direttamente dal tuo IP al sito di destinazione, le tue richieste vengono prima instradate attraverso il server proxy. Questo maschera il tuo vero IP dalla destinazione.

Funziona configurando le tue richieste HTTP per utilizzare l'indirizzo IP del proxy invece del tuo. Tratteremo esattamente come configurarlo in Python più avanti.

Alcune note chiave su come funzionano i proxy:

  • Il proxy ha il proprio IP univoco da cui sembra provenire il traffico. Questo nasconde il tuo IP reale, sostituendolo con quello del proxy.

  • I proxy possono essere concatenati insieme per ulteriore anonimato. Puoi instradare il traffico attraverso più proxy per offuscare ulteriormente le origini.

  • Protocolli proxy come HTTP e SOCKS gestire il traffico in transito. Questo è configurato a livello di applicazione per le richieste.

Ora che hai capito come funzionano i proxy a livello fondamentale, esaminiamo i diversi tipi di proxy disponibili.

HTTP contro SOCKS Proxy

I due principali protocolli proxy sono HTTP e SOCKS. Confrontiamoli:

Proxy HTTP

I proxy HTTP sono il tipo più comune che incontrerai. Alcuni attributi chiave:

  • Funziona solo per il traffico HTTP/HTTPS (non TCP/UDP di livello inferiore)
  • Semplice da configurare – compatibile con la maggior parte delle librerie e degli strumenti
  • Tipicamente utilizzato per il web scraping e l'accesso generale al web

I proxy HTTP essenzialmente intercettano le richieste HTTP effettuate dal client e le inoltrano alla destinazione. Sono limitati solo al traffico HTTP.

SOCKS Proxy

SOCKS è un protocollo proxy più completo che opera su livelli di rete inferiori.

Alcune caratteristiche:

  • Funziona con qualsiasi traffico TCP, inclusi HTTP, HTTPS, FTP ecc.
  • Aggiunte funzionalità di autenticazione e sicurezza come autenticazione nome utente/password.
  • Tipicamente utilizzato per l'accesso completo alla rete e l'anonimato.

Mentre i proxy HTTP operano solo a livello di applicazione, SOCKS si trova più in basso a livello di rete/trasporto. Questo permette SOCKS per proxy praticamente qualsiasi traffico TCP.

Quale dovresti usare?

Per la maggior parte dei casi di utilizzo del web scraping, un proxy HTTP va benissimo. È più semplice da configurare e ti interessa solo indirizzare le tue richieste HTTP tramite proxy.

Se è necessario il routing dell'accesso completo alla rete per il traffico di livello inferiore oltre HTTP, utilizzare SOCKS anziché. SOCKS è anche meglio se dai la priorità a una maggiore sicurezza e hai bisogno dell'autenticazione.

Per i nostri usi incentrati sugli scraper web Python, i proxy HTTP sono perfettamente adatti. Ora diamo un'occhiata a dove ottenere i server proxy.

Dove ottenere i proxy per il Web Scraping

Esistono alcuni metodi principali per acquisire proxy da utilizzare con le richieste Python:

1. Acquista proxy da un fornitore di proxy

Il modo più semplice è acquistare proxy da un servizio proxy. Alcuni dei principali fornitori includono:

  • BrightData – Il mio fornitore preferito in assoluto con IP residenziali di alta qualità in tutto il mondo. Connessioni veloci e tempi di attività affidabili.

  • Oxylab – Proxy datacenter disponibili per tutte le regioni per supportare grandi volumi. Prezzi convenienti.

  • GeoSurf – Specializzato in proxy residenziali per paesi specifici per accedere a contenuti con restrizioni geografiche.

Aspettatevi di pagare circa $ 1- $ 5 per proxy al mese, a seconda della qualità e della posizione del provider. Le API del servizio proxy semplificano il caricamento di elenchi di nuovi proxy da integrare nel tuo codice.

2. Trova proxy disponibili pubblicamente

Puoi anche trovare proxy pubblici disponibili gratuitamente online. Attenzione che questi sono di qualità inferiore poiché sono condivisi. I proxy pubblici hanno un utilizzo elevato e spesso vanno offline.

Luoghi utili per trovare proxy pubblici:

Non consiglio di fare affidamento esclusivamente sui proxy pubblici, ma possono aumentare quelli a pagamento in un attimo. Aspettatevi tempi di attività/velocità inferiori.

3. Distribuisci i tuoi proxy

Puoi anche creare i tuoi proxy privati ​​distribuendo server proxy su infrastrutture come IP ruotati residenziali, istanze cloud o VPN.

Ciò ti dà il controllo ma richiede uno sforzo maggiore per configurare e mantenere i server proxy. In genere, per semplicità, si esternalizza il provisioning del proxy a un provider.

In sintesi, consiglio di acquistare proxy da un fornitore affidabile come BrightData a meno che il budget non sia fortemente limitato. L’affidabilità e la qualità superano la gestione dei delicati proxy pubblici.

Successivamente tuffiamoci nel codice per vedere come configurare le richieste Python utilizzando i proxy...

Impostazione di un proxy – Esempi di richieste Python

Le richieste Python semplificano l'indirizzamento del traffico attraverso i server proxy.

Puoi specificare i proxy creando un file proxies dict che associa gli schemi URL agli URL proxy:

proxies = {
  ‘http‘: ‘http://10.10.1.10:3128‘,
  ‘https‘: ‘http://10.10.1.10:1080‘ 
}

Quindi passa questo proxy dict quando effettui richieste:

response = requests.get(‘https://example.com‘, proxies=proxies)

Ciò instraderà tutte le richieste HTTP e HTTPS attraverso i proxy specificati.

Puoi anche impostare proxy a livello globale per tutte le richieste o in base alla richiesta. Diamo un'occhiata ad esempi di diverse configurazioni proxy con richieste Python.

Proxy globale per tutte le richieste

Per applicare un proxy a livello globale a tutte le richieste effettuate tramite la sessione delle richieste, imposta i proxy dict a livello di sessione:

import requests

session = requests.Session() 

proxies = {
  ‘http‘: ‘http://10.10.1.10:3128‘,
  ‘https‘: ‘http://10.10.1.10:1080‘  
}

session.proxies = proxies

response = session.get(‘https://example.com‘) 
# Uses HTTP proxy http://10.10.1.10:3128

Puoi farlo anche impostando le variabili di ambiente HTTP_PROXY ed HTTPS_PROXY prima di eseguire lo script.

Proxy per richiesta

Per utilizzare un proxy solo per una richiesta specifica, passa il proxy dict come parametro solo per quella chiamata:

import requests 

response = requests.get(‘https://example.com‘) # no proxy

proxied_response = requests.get(‘https://example.com‘, proxies={
  ‘http‘: ‘http://10.10.1.10:3128‘,
  ‘https‘: ‘http://10.10.1.10:1080‘ 
}) # uses proxy

Ciò sovrascrive il proxy globale solo per questa richiesta.

Proxy per dominio specifico

Per eseguire il proxy del traffico solo per determinati domini, specifica il dominio nel tuo proxy dict:

proxies = {
   ‘http://scrape-site.com‘: ‘http://10.10.1.10:3128‘,
   ‘https://api.example.com‘: ‘http://10.10.1.10:1080‘, 
}

requests.get(‘http://scrape-site.com/‘, proxies=proxies) # uses proxy
requests.get(‘http://no-proxy-domain.com‘, proxies=proxies) # no proxy

Ciò consente un controllo granulare su quali siti utilizzano i proxy e quali no.

Ora che sai come applicare i proxy, parliamo di come eseguire l'autenticazione con i proxy...

Autenticazione con proxy

Molti proxy richiedono l'autenticazione per utilizzarli. Ciò comporta il passaggio delle credenziali nome utente/password negli URL proxy.

Ecco un esempio di URL proxy HTTP con autenticazione:

http://myusername:[email protected]:8080

Abbastanza semplice, ma c'è un'ulteriore considerazione se il tuo nome utente o la tua password contengono caratteri speciali.

Molti personaggi speciali come @ ed : non sono validi nella sintassi dell'URL di base. Per gestire questi casi, dobbiamo farlo Codifica URL le credenziali con il urllib biblioteca:

from urllib.parse import quote

username = ‘[email protected]‘
password = ‘pass#123‘

proxy_url = f‘http://{quote(username)}:{quote(password)}@123.45.6.7:8080‘

Ciò codificherà correttamente tali valori in modo che possano essere passati nell'URL.

Ora le tue credenziali possono contenere caratteri speciali e puoi autenticarti con successo.

Detto questo, passiamo a discutere dei proxy a rotazione...

Proxy a rotazione per evitare ban

Quando esegui lo scraping dei siti Web, ti consigliamo di ruotare le tue richieste su più IP proxy. Ciò ti impedisce di essere bannato dai siti per aver effettuato troppe richieste da un singolo IP.

Ecco un modo per implementare la rotazione proxy in Python:

import requests 
from random import choice

proxy_list = [
  ‘http://123.45.6.7:8080‘,
  ‘http://98.76.54.3.2:8080‘,
  ‘http://103.47.99.2:8080‘  
]

for _ in range(10):

  proxy = choice(proxy_list)

  response = requests.get(‘https://example.com‘, proxies={
      ‘http‘: proxy,
      ‘https‘: proxy
  })

  # Do something with response...

Manteniamo un elenco di URL proxy. Prima di ogni richiesta, scegliamo casualmente un proxy utilizzando Python random.choice(). Questo ruota i proxy con ogni richiesta.

Puoi caricare l'elenco dei proxy da un file, un'API proxy, un database o un'altra fonte. Aggiornalo periodicamente per inserire nuovi proxy quando quelli vecchi vanno male.

Idealmente, utilizza almeno 10+ proxy e modificali almeno ogni 100 richieste per sicurezza. Più sono, meglio è.

Assicurati di implementare una rotazione proxy simile nei tuoi scraper di produzione per rimanere sotto il radar.

Considerazioni finali sui proxy con richieste Python

Ed eccola qua: una guida completa all'uso dei proxy con il modulo delle richieste di Python!

Abbiamo trattato l'importanza dei proxy per i web scraper Python, come funzionano dietro le quinte, dove ottenere i proxy, come configurare le richieste per utilizzare proxy, autenticazione e modelli di rotazione dei proxy.

I proxy sono cruciali per lo scraping di siti con successo su larga scala ed evitare i divieti IP. Con le tecniche qui descritte, puoi sfruttare i proxy come un professionista!

Per un utilizzo del proxy ancora più avanzato, fare riferimento a richiede documentazione. Ora vai avanti e usa i tuoi nuovi poteri proxy per sempre! Fammi sapere se hai altre domande sul proxy.

Partecipa alla conversazione

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *