NOVITÀ! |Una sola chiamata API, dati puliti in risposta. Nessuno scraper necessario.Ottieni 10.000 token gratuiti →

Pitone del selenio (3). Come bypassare il rilevamento del selenio utilizzando Python: agenti utente ed esecuzione in background

Scopri come ignorare il rilevamento automatico della navigazione utilizzando Python, agenti utente ed esecuzione in background. Potenzia le tue capacità di web scraping e automazione.

Pubblicato3 giugno 2024
Tempo di lettura3 min

Il web scraping e l’automazione del browser sono diventati parte integrante di molte aziende e sviluppatori. Tuttavia, molti siti Web ora rilevano e bloccano la navigazione automatizzata. Questo articolo esplorerà come aggirare il rilevamento di Selenium utilizzando Python manipolando gli user agent ed eseguendo Selenium in background. Approfondiremo passaggi dettagliati, strumenti e best practice per garantire il successo del web scraping.

Comprendere il rilevamento del selenio#

Prima di ignorare il rilevamento, capiamo come funziona. I siti Web possono rilevare il selenio verificando la presenza di determinati flag e proprietà dei driver Web. Quando un sito identifica questi flag, può bloccare l’accesso o presentare dati fuorvianti. Ad esempio, quando apri un sito utilizzando un browser Chrome standard, risponde come previsto. Tuttavia, quando apri lo stesso sito utilizzando Selenium, il sito Web può rilevare l’automazione e bloccarla. Questo rilevamento avviene perché Selenium imposta flag specifici che i siti Web possono cercare.

Modifica dei flag del WebDriver#

Per bypassare il rilevamento del selenio, un metodo efficace consiste nel modificare i flag del WebDriver.

  1. Configurazione di Firefox: apre la pagina di configurazione di Firefox digitando about:config nella barra degli indirizzi. Individua il flag relativo a WebDriver e impostalo su false.
  2. Implementazione del Codice:
from selenium import webdriver

# Set Firefox preferences
options = webdriver.FirefoxOptions()
options.set_preference("dom.webdriver.enabled", False)
options.set_preference('useAutomationExtension', False)

driver = webdriver.Firefox(options=options)

Questo script disabilita il flag di rilevamento WebDriver, facendo apparire il browser come una normale istanza guidata dall’utente.

User Agents#

Un agente utente è una stringa che un browser invia a un server web per identificarsi. La modifica della stringa dell’agente utente può rendere le richieste Selenium indistinguibili dalle normali richieste del browser.

Passaggi per modificare l’agente utente:

  1. Identificare una stringa dell’agente utente comune: Esempio: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
  2. Implementare la modifica del selenio:
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)

Impostando uno user agent personalizzato, è possibile aggirare molti rilevamenti di base.

Esecuzione di Selenium in Background#

L’esecuzione del browser in background è un altro aspetto cruciale per eludere il rilevamento. Questo può essere ottenuto eseguendo il browser in modalità headless.

Implementazione:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless")

driver = webdriver.Chrome(options=options)

L’esecuzione in modalità headless significa che nessuna interfaccia grafica viene visualizzata, il che è essenziale per eseguire attività automatizzate sui server.

Disabilitazione delle notifiche e dei suoni del browser#

La navigazione automatizzata spesso comporta la gestione di pop-up e notifiche inaspettate. Disabilitare questi elementi può semplificare il processo.

Esempio di codice:

from selenium import webdriver

options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
options.add_experimental_option("prefs", prefs)
options.add_argument("--mute-audio")

driver = webdriver.Chrome(options=options)

Questo script disabilita le notifiche e silenzia l’audio, garantendo un’automazione senza interruzioni.

Esempio di analisi dei dati#

Consideriamo un esempio pratico di analisi dei nickname da un sito che genera nomi utente casuali.

Passaggi:

  1. Carica il sito e interagisci con gli elementi:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

# Locate the username field and extract nicknames
usernames = []
for _ in range(10):
    nickname = driver.find_element(By.ID, "nickname").text
    usernames.append(nickname)
    driver.find_element(By.ID, "generate").click()
print(usernames)

Conclusione#

Manipolando i flag di WebDriver, modificando gli user agent, eseguendo Selenium in background e disabilitando le notifiche del browser, puoi bypassare efficacemente il rilevamento di Selenium. Queste tecniche sono essenziali per lo scraping e l’automazione del web senza interruzioni e inosservati. L’implementazione di questi metodi garantisce che le attività automatizzate rimangano ininterrotte ed efficienti. Ricorda di utilizzare sempre il web scraping e l’automazione in modo etico, rispettando i termini di servizio del sito web e le leggi sulla privacy dei dati. Per tecniche più avanzate e aggiornamenti regolari, resta sintonizzato sul nostro blog su FineProxy.org. Sentiti libero di condividere le tue idee e feedback nei commenti qui sotto. Se ti è piaciuto questo articolo, non dimenticare di iscriverti al nostro canale e lasciare un mi piace. Buon scraping!

Implementando questi passaggi e regolando le impostazioni secondo necessità, puoi assicurare che i tuoi progetti di automazione funzionino senza problemi e senza rilevamento.