Usare un proxy con le Python Requests

Commenti: 0

In poche parole, i proxy sono server che fungono da strato esterno di connessione ai servizi di rete. Fungono da intermediari tra un computer e il sito da cui l'utente vuole estrarre informazioni. La richiesta dell'utente, invece di essere inviata direttamente al sito in questione, viene prima indirizzata al proxy che poi la invia al server finale. Di conseguenza, l'indirizzo IP del server proxy è quello che il sito salva invece di quello dell'utente.

Quindi, perché usare un proxy?

  • Anonimato:

Ad esempio, se è necessario raccogliere informazioni da un sito senza temere restrizioni o blocchi. Un proxy aiuta a mascherare l'indirizzo IP dell'utente reale, cambiando la sua vera identità digitale.

  • Bypassare le restrizioni:

È possibile utilizzare un proxy di un paese specifico in cui non vi sono restrizioni. Questo perché, in alcuni Paesi, l'accesso ad alcuni programmi e siti web è limitato o bloccato.

  • Bilanciamento del carico:

Se un numero elevato di richieste viene inviato a un determinato sito, è probabile che il sistema venga caricato. Di conseguenza, il rischio di essere bloccati è elevato. L'utilizzo di più proxy contemporaneamente consente agli utenti di distribuire uniformemente le richieste al sito specifico, evitando così il blocco.

Impostazione e installazione delle richieste di Python

Requests è una libreria per inviare richieste HTTP utilizzando Python. Rende semplice l'esecuzione di richieste GET e POST. Utilizzando Python Requests senza proxy è possibile inviare richieste HTTP, ma non fornisce l'anonimato o l'aggiramento delle restrizioni.

1. Installazione della libreria Requests

Per installare le richieste, è sufficiente inserire il comando seguente nel terminale:


pip install requests

2. Verifica dell'installazione

Per verificare che la libreria richiesta sia impostata correttamente, è necessario aprire l'ambiente di sviluppo Python ed eseguire il comando:


import requests 

print(requests.__version__)

Se tutto è stato fatto correttamente, lo script restituirà il numero di versione.

Come usare il proxy con le Python Requests

Una volta installata la libreria requests, possiamo iniziare a eseguire le richieste HTTP. Tuttavia, per incorporare un proxy, è necessario eseguire alcune configurazioni in Python.

Esaminiamo i passi da seguire per configurare correttamente un proxy per le richieste in Python. Considereremo separatamente le Python Requests con le configurazioni dei proxy SOCKS.

1. Configurazione del server proxy

L'uso di Python per impostare un proxy è molto semplice per gli utenti che utilizzano la libreria requests. Richiede che l'indirizzo del server proxy sia passato in un dizionario e poi utilizzato quando si effettuano le richieste HTTP.


proxies = {
    "http": "http://your-proxy-ip:port",
    "https": "http://your-proxy-ip:port",
}

response = requests.get("http://example.com", proxies=proxies)

2. Autenticazione proxy

Quando si usa Python Requests, l'autenticazione proxy è facile da configurare. Diamo un'occhiata più da vicino ai dettagli.


proxies = { 
    "http": "http://username:password@your-proxy-ip:port", 
    "https": "http://username:password@your-proxy-ip:port", 
} 

response = requests.get("http://example.com", proxies=proxies)

I due nuovi campi da compilare sono:

  • username – nome utente proxy;
  • password – password proxy.

3. Utilizzo dei proxy SOCKS

Per gli utenti che necessitano di un livello di anonimato più elevato, o se si lavora con siti fortemente limitati, i proxy HTTP standard potrebbero non funzionare. In questo caso, i proxy SOCKS potrebbero essere più adatti.

Per abilitare il supporto del proxy SOCKS, è necessario installare una libreria aggiuntiva utilizzando il comando elencato di seguito:


pip install requests[socks]

Una volta installato, Python Requests consente di impostare un proxy SOCKS che può essere utilizzato come mostrato nell'esempio seguente.


import requests

proxies = {
    "http": "socks5h://your-proxy-ip:port",
    "https": "socks5h://your-proxy-ip:port",
}

response = requests.get("http://example.com", proxies=proxies)

Se il server proxy richiede l'autenticazione, includerla come mostrato di seguito.


proxies = {
    "http": "socks5h://username:password@your-proxy-ip:port",
    "https": "socks5h://username:password@your-proxy-ip:port",
}

Gestione delle sessioni con i proxy nelle Python Requests

Quando si effettuano molte richieste attraverso un singolo proxy, invece di aggiungerlo a ogni richiesta, diventa molto più efficiente usare le sessioni di Python Requests con il proxy.

Questo metodo di utilizzo dei proxy consente di mantenere le impostazioni in tutte le sessioni. Inoltre, semplifica il codice, migliora le prestazioni e, soprattutto, rende l'implementazione molto più semplice.

1. Uso delle sessioni di Python Requests con i proxy

È molto semplice creare una sessione, basta digitare requests.Session().

Si consideri il seguente esempio:


import requests

# Creazione di una sessione
session = requests.Session()

session.proxies = {
    "http": "http://username:password@your-proxy-ip:port",
    "https": "http://username:password@your-proxy-ip:port",
}

# Richiesta attraverso la sessione
response = session.get("http://example.com")

Tutte le Python Requests all'interno di questa sessione utilizzeranno il proxy impostato per impostazione predefinita, senza ulteriori configurazioni.

2. Gestione di più proxy nelle Python Requests

Quando ci si collega attivamente a un sito web a scopo di scraping o di automazione, l'uso ripetuto dello stesso proxy può causare il blocco dell'account. Questo problema è gestibile ruotando i proxy se si dispone di alcuni server proxy diversi.

L'esempio seguente mostra l'implementazione di un ciclo che ruota i proxy per ogni interazione con la pagina web:


import requests
import random

proxies_list = [
    "http://username:password@your-proxy-ip[1]:port",
    "http://username:password@your-proxy-ip[2]:port",
    "http://username:password@your-proxy-ip[3]:port",
]

session = requests.Session()

for _ in range(5):
    proxy = random.choice(proxies_list)  # Scegliere a caso un proxy
    session.proxies = {"http": proxy, "https": proxy}

    response = session.get("http://example.com")
    print(f"Used proxy: {proxy}")
    print(response.status_code)

Conclusione

In sintesi, ecco alcuni suggerimenti che potrebbero aiutarvi a gestire meglio i proxy:

  • Utilizzare le sessioni per non dover impostare un proxy a ogni richiesta.
  • Per una maggiore protezione, utilizzare proxy anonimi senza log.
  • Per evitare di essere bloccati, utilizzate più proxy.

In questo articolo abbiamo parlato di cosa sono i server proxy, di come utilizzare correttamente i proxy in Python Requests e di come gestire i proxy attraverso le sessioni per semplificare il codice. L'esempio mostra anche l'uso di proxy SOCKS e normali, come viene gestita l'autenticazione e la gestione dei proxy.

Commenti:

0 Commenti