Se esegui il parsing di marketplace durante la notte, fai farming di account Facebook Ads per 8 ore o automatizzi il posting di massa su Instagram, hai sicuramente affrontato il problema delle interruzioni delle sessioni. I proxy cambiano IP, il browser perde i cookie, lo script si interrompe dopo tre ore di lavoro. In questa guida vedremo come configurare sessioni stabili e a lungo termine per compiti che funzionano per diverse ore fino a un giorno senza interruzioni.
Che cos'è la gestione delle sessioni e a cosa serve
La gestione delle sessioni è il controllo dello stato della connessione tra il tuo strumento (browser, script, bot) e il servizio target per un lungo periodo di tempo. Per compiti brevi — come il parsing di 100 prodotti in 5 minuti — non è critico. Ma se il compito dura diverse ore, è importante mantenere:
- Lo stesso indirizzo IP — affinché il sito non sospetti un cambio di dispositivo
- Cookie e localStorage — per l'autenticazione e il tracciamento delle azioni
- Fingerprint del browser — insieme di caratteristiche del dispositivo (User-Agent, risoluzione dello schermo, WebGL)
- Stato dello script — quali pagine sono state elaborate, dove ci si è fermati in caso di errore
Se anche solo uno di questi parametri cambia durante il processo, il sito può bloccare l'account, interrompere il parsing dei captcha o resettare la sessione di autenticazione.
Compiti tipici a lungo termine: farming di account Facebook Ads (6-12 ore di riscaldamento), parsing di tutti i prodotti di una categoria su Wildberries (3-8 ore), posting di massa in 50 account Instagram (4-10 ore con ritardi), monitoraggio dei prezzi dei concorrenti 24/7.
Problemi tipici con sessioni prolungate
Vediamo cosa rompe più frequentemente le sessioni a lungo termine e porta all'interruzione del compito:
1. Rotazione dell'indirizzo IP del proxy
Molti servizi proxy cambiano l'IP ogni 5-15 minuti per impostazione predefinita. Per il parsing senza autenticazione va bene, ma se sei loggato in un account Facebook Ads, il cambio di IP da Mosca a San Pietroburgo a metà sessione susciterà sospetti. La piattaforma richiederà conferma dell'accesso, invierà un codice al telefono o addirittura bloccherà l'account per attività sospette.
Soluzione: utilizzare sticky sessions (sessioni sticky) — una modalità in cui il proxy fornisce lo stesso IP per 10 minuti, 1 ora o 24 ore. Maggiori dettagli nella sezione sottostante.
2. Timeout della connessione lato proxy
Alcuni fornitori di proxy interrompono la connessione se non c'è attività per 10-30 minuti. Se il tuo script fa una pausa tra le azioni (ad esempio, simula una persona — 5 minuti a leggere un prodotto, poi passa al successivo), il proxy può chiudere la connessione. Quando si tenta di continuare a lavorare, lo script riceverà un errore e si fermerà.
Soluzione: configurare richieste keep-alive (ping del proxy ogni 2-3 minuti) o scegliere un fornitore senza timeout rigidi. I proxy residenziali e mobili di solito mantengono la connessione più a lungo rispetto ai data center.
3. Modifica del fingerprint del browser
Se riavvii il browser anti-detect o lo script crea una nuova istanza del browser, il fingerprint cambia. Anche con lo stesso IP, il sito vedrà che User-Agent, risoluzione dello schermo, elenco dei font o canvas fingerprint differiscono dalla sessione precedente. Questo attiva i sistemi anti-frode.
Soluzione: mantenere il profilo del browser (in Dolphin Anty, AdsPower, Multilogin questo avviene automaticamente) e non crearne uno nuovo ad ogni avvio. Se utilizzi Selenium o Puppeteer, salva il User Data Directory con i cookie e le impostazioni.
4. Perdita dello stato dello script in caso di errore
Lo script ha fatto parsing per 6 ore, ha elaborato 8000 prodotti su 10000 e si è bloccato a causa di un errore di rete. Se non si salva il progresso, si dovrà ricominciare da zero. Questo è particolarmente critico per compiti di 12 ore o più.
Soluzione: salvare i risultati intermedi in un database o in un file ogni N iterazioni (ad esempio, ogni 100 prodotti). Al riavvio, lo script continuerà dall'ultima posizione salvata.
Quali proxy sono adatti per compiti a lungo termine
Non tutti i tipi di proxy sono ugualmente buoni per sessioni prolungate. Ecco un confronto in base ai criteri di stabilità e durata dell'IP:
| Tipo di proxy | Durata dell'IP | Stabilità | Adatto per |
|---|---|---|---|
| Data center | Illimitato (IP statico) | Alta, ma facilmente rilevabili | Parsing senza autenticazione, monitoraggio dei prezzi |
| Residenziali | 10 min — 24 ore (sticky sessions) | Media (dipende dal fornitore) | Farming di account, parsing con autenticazione |
| Mobili | 5-30 minuti (cambio secondo il timer dell'operatore) | Bassa (cambi frequenti di IP) | Compiti brevi sui social, bypass di blocchi rigidi |
| Proxy ISP | Illimitato (IP residenziale statico) | Molto alta | Compiti lunghi con autenticazione, farming di account premium |
Raccomandazioni per la scelta:
- Per il parsing di marketplace senza autenticazione (Wildberries, Ozon, Yandex.Market) — sono adatti i data center con IP statico. Sono economici, veloci e se il sito non blocca severamente i data center, possono gestire compiti di 12 ore o più.
- Per il farming di account Facebook Ads, TikTok Ads, Google Ads — solo proxy residenziali o ISP con sticky sessions per 24 ore. I mobili non sono adatti a causa del frequente cambio di IP.
- Per l'automazione di Instagram, TikTok — residenziali con sticky sessions di 1-6 ore. Se il compito è breve (posting in 10 account in un'ora) — anche i mobili possono andare bene.
- Per il monitoraggio 24/7 (monitoraggio dei prezzi dei concorrenti, parsing delle notizie) — proxy ISP o data center, se il sito non li blocca.
Importante: I proxy mobili NON sono adatti per compiti a lungo termine! L'IP cambia ogni 5-30 minuti secondo il timer dell'operatore mobile, e non puoi controllarlo. Usali solo per compiti brevi (registrazione di account, posting una tantum, bypass di captcha).
Sticky sessions: come mantenere l'IP per 24 ore
Le sticky sessions (sessioni sticky) sono una modalità di lavoro del proxy in cui si ottiene lo stesso indirizzo IP per un periodo di tempo specificato: 10 minuti, 1 ora, 6 ore o 24 ore. Questo è critico per compiti con autenticazione.
Come funzionano le sticky sessions
Di solito, le sticky sessions vengono implementate tramite un ID di sessione nell'URL del proxy. Invece del formato standard:
http://username:password@proxy.example.com:8000
Aggiungi il parametro session:
http://username-session-mysession123:password@proxy.example.com:8000
Ora tutte le richieste con l'identificativo mysession123 passeranno attraverso lo stesso IP, fino a quando non scade il tempo di vita della sessione (di solito 10-30 minuti per impostazione predefinita). Se hai bisogno di una sessione più lunga, il fornitore può offrire un parametro di tempo:
http://username-session-mysession123-lifetime-1440:password@proxy.example.com:8000
Dove lifetime-1440 significa 1440 minuti (24 ore).
Configurazione delle sticky sessions nei servizi popolari
Nei proxy residenziali: la maggior parte dei fornitori supporta le sticky sessions tramite parametri nel nome utente. Controlla il formato nella documentazione del tuo fornitore. Esempi tipici:
username-session-ABC123— mantiene l'IP per il tempo predefinito (10-30 minuti)username-session-ABC123-sessionduration-60— mantiene per 60 minutiusername-country-us-session-ABC123— IP dagli Stati Uniti con mantenimento
Nei proxy ISP: di solito l'IP è statico per impostazione predefinita, le sticky sessions non sono necessarie — si ottiene sempre lo stesso indirizzo, a meno che non si cambi manualmente il proxy.
Nei data center: l'IP è statico, non sono necessarie ulteriori impostazioni.
Esempio di utilizzo in un browser anti-detect
Supponiamo che tu stia facendo farming di un account Facebook Ads in Dolphin Anty. Il compito è di 8 ore di riscaldamento (navigazione su siti, visione di video, like). Configurazione:
- Apri il profilo del browser in Dolphin Anty
- Vai alla sezione "Proxy"
- Scegli il tipo: HTTP o SOCKS5
- Inserisci l'host e la porta del proxy
- Nel campo "Login" inserisci:
username-session-farm001-sessionduration-480(480 minuti = 8 ore) - Inserisci la password
- Clicca su "Verifica proxy" — assicurati che l'IP venga rilevato
- Salva il profilo
Ora, per 8 ore, tutte le richieste da questo profilo passeranno attraverso lo stesso IP. Anche se chiudi il browser e lo riapri dopo un'ora, utilizzando lo stesso ID di sessione (farm001) otterrai lo stesso IP.
Consiglio: Usa ID di sessione comprensibili, legati al compito. Ad esempio, farm-fb-account-001, parse-wb-electronics. Questo semplificherà il debug se hai decine di compiti paralleli.
Configurazione dei browser anti-detect per sessioni prolungate
I browser anti-detect (Dolphin Anty, AdsPower, Multilogin, GoLogin, Octo Browser) sono progettati proprio per sessioni a lungo termine con mantenimento del fingerprint. Ma ci sono alcune impostazioni critiche per compiti di 8 ore o più.
1. Salvataggio del profilo del browser
Il profilo del browser è un insieme di cookie, localStorage, fingerprint (User-Agent, canvas, WebGL, font). Tutti i browser anti-detect salvano i profili automaticamente alla chiusura. L'importante è non creare un nuovo profilo ad ogni avvio del compito!
Approccio corretto:
- Crea un profilo una volta per un compito specifico (ad esempio, "Farming FB account #1")
- Configura il proxy con sticky session
- Esegui il primo avvio, accedi all'account
- Chiudi il browser — il profilo verrà salvato
- Al successivo avvio, apri QUELLO STESSO profilo — l'autenticazione e il fingerprint verranno mantenuti
Approccio errato:
- Creare ogni giorno un nuovo profilo per lo stesso compito
- Eliminare manualmente i cookie tra i lanci
- Cambiare il fingerprint (User-Agent, risoluzione dello schermo) a metà compito
2. Configurazione del fingerprint per stabilità
Per compiti lunghi, scegli un fingerprint REALISTICO che corrisponda al proxy. Se il proxy è dalla Russia (Mosca) — non impostare User-Agent da MacBook Pro con locale inglese. Meglio:
- OS: Windows 10 o 11 (i più popolari in Russia)
- Browser: Chrome ultima versione (si aggiorna automaticamente nell'anti-detect)
- Risoluzione dello schermo: 1920x1080 (la più comune)
- Lingua: ru-RU, fuso orario: Europe/Moscow
- WebRTC: disabilitare o sostituire con l'IP del proxy (per non far trapelare il vero IP)
In Dolphin Anty e AdsPower c'è la funzione "Crea fingerprint casuale" — genera una combinazione credibile di parametri. Per compiti lunghi, questo è più sicuro che configurare manualmente.
3. Disabilitazione degli aggiornamenti automatici e dei riavvii
Se il compito dura 12 ore, assicurati che:
- Il computer non vada in modalità sospensione (disabilita nelle impostazioni di alimentazione di Windows/macOS)
- Il software antivirus non riavvii il sistema per aggiornamenti (rimanda gli aggiornamenti)
- Il browser anti-detect non si aggiorni automaticamente a metà compito (nelle impostazioni disabilita l'aggiornamento automatico o impostalo per la notte)
4. Utilizzo delle API dei browser anti-detect per l'automazione
Dolphin Anty, AdsPower, Multilogin forniscono API per gestire i profili da script. Questo permette di:
- Avviare il profilo del browser da uno script Python/Node.js
- Collegarsi ad esso tramite Selenium o Puppeteer
- Eseguire un compito lungo
- Chiudere il profilo automaticamente al termine
Ecco un esempio di avvio di un profilo Dolphin Anty tramite API (Python):
import requests
from selenium import webdriver
# Avvio del profilo tramite API Dolphin Anty
profile_id = "123456"
response = requests.get(f"http://localhost:3001/v1.0/browser_profiles/{profile_id}/start")
data = response.json()
# Collegamento di Selenium al browser avviato
options = webdriver.ChromeOptions()
options.debugger_address = data['automation']['port']
driver = webdriver.Chrome(options=options)
# Esecuzione del compito
driver.get("https://example.com")
# ... il tuo codice di parsing o automazione ...
# Chiusura del profilo
requests.get(f"http://localhost:3001/v1.0/browser_profiles/{profile_id}/stop")
Questo approccio garantisce che il fingerprint e i cookie vengano mantenuti, anche se lo script si interrompe — al riavvio ci si collegherà allo stesso profilo.
Automazione e salvataggio dello stato
Per compiti di 8 ore o più, è fondamentale salvare il progresso, in modo da non dover ricominciare da zero in caso di errore. Vediamo i metodi per diversi strumenti.
1. Salvataggio del progresso in un database
Se stai facendo parsing di 10000 prodotti da Wildberries, salva i risultati in SQLite, PostgreSQL o MongoDB dopo ogni 50-100 prodotti. Struttura della tabella:
CREATE TABLE parsing_progress (
id INTEGER PRIMARY KEY,
url TEXT,
status TEXT, -- 'pending', 'completed', 'error'
data TEXT, -- JSON con i risultati
created_at TIMESTAMP
);
Al lancio, lo script controlla quali URL non sono ancora stati elaborati (status = 'pending') e continua da lì. Se lo script si interrompe, al riavvio salterà i prodotti già elaborati.
2. Utilizzo di code di lavoro
Per compiti complessi (ad esempio, farming di 50 account Facebook Ads in parallelo) utilizza sistemi di code: Celery (Python), Bull (Node.js), RabbitMQ. Principio:
- Crea un elenco di compiti (50 account)
- Ogni compito è indipendente (proprio profilo del browser, proprio proxy)
- I worker prendono i compiti dalla coda e li eseguono
- Se un worker si interrompe, il compito torna nella coda e viene preso da un altro worker
Questo garantisce che nessun compito venga perso, anche se parte dei processi si interrompe.
3. Logging e monitoraggio
Per compiti di 12 ore o più, configura un logging dettagliato:
- Registra nel log ogni azione (pagina aperta, pulsante cliccato, dati ricevuti)
- Salva screenshot in caso di errori (in Selenium:
driver.save_screenshot('error.png')) - Utilizza livelli di log: INFO per azioni normali, WARNING per situazioni sospette (captcha, caricamento lento), ERROR per guasti
Ecco un esempio di configurazione del logging in Python:
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('parsing.log'),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
# Nel codice
logger.info(f"Prodotto elaborato {product_id}")
logger.warning(f"Caricamento lento della pagina: {url}")
logger.error(f"Errore di parsing: {error}")
Monitoraggio e recupero dopo un'interruzione
Anche con la configurazione corretta del proxy e del browser, la sessione può interrompersi: la rete è caduta, il proxy si è riavviato, il sito ha mostrato un captcha. È importante rilevare il problema rapidamente e ripristinare il lavoro.
1. Controllo della disponibilità del proxy
Prima di iniziare il compito e periodicamente (ogni 30-60 minuti), controlla che il proxy funzioni:
import requests
def check_proxy(proxy_url):
try:
response = requests.get(
'https://api.ipify.org?format=json',
proxies={'http': proxy_url, 'https': proxy_url},
timeout=10
)
if response.status_code == 200:
ip = response.json()['ip']
logger.info(f"Il proxy funziona, IP: {ip}")
return True
except Exception as e:
logger.error(f"Il proxy non risponde: {e}")
return False
# Controllo prima di iniziare
if not check_proxy(proxy_url):
logger.error("Il proxy non è disponibile, arresto del compito")
exit(1)
2. Gestione dei captcha e dei blocchi
Se il sito mostra un captcha (Google reCAPTCHA, hCaptcha, Cloudflare Turnstile) — il compito si interrompe. Opzioni di risoluzione:
- Risoluzione automatica del captcha: integrazione con servizi come 2Captcha, Anti-Captcha, CapMonster. Risolvono il captcha in 10-30 secondi, lo script continua a lavorare.
- Cambio di proxy: se il captcha è apparso a causa di un IP sospetto — passa a un altro proxy del pool e continua.
- Pausa e ripetizione: a volte il captcha appare a causa di azioni troppo veloci. Fai una pausa di 2-5 minuti, poi ripeti la richiesta.
3. Riavvio automatico in caso di errore
Avvolgi il codice principale in un try-except e, in caso di errore, riavvia il compito:
import time
max_retries = 3
retry_delay = 60 # secondi
for attempt in range(max_retries):
try:
# Codice principale del compito
run_parsing()
break # Se ha successo, esci dal ciclo
except Exception as e:
logger.error(f"Errore al tentativo {attempt + 1}: {e}")
if attempt < max_retries - 1:
logger.info(f"Riavvio tra {retry_delay} secondi...")
time.sleep(retry_delay)
else:
logger.error("Numero massimo di tentativi superato, arresto")
raise
4. Notifiche sui problemi
Per compiti che lavorano di notte o nei fine settimana, configura notifiche per errori critici:
- Bot Telegram: invia un messaggio in caso di errore (tramite la libreria python-telegram-bot)
- Email: tramite SMTP (libreria smtplib in Python)
- SMS: tramite Twilio o servizi simili
Ecco un esempio di invio di una notifica su Telegram:
import requests
def send_telegram_alert(message):
bot_token = "YOUR_BOT_TOKEN"
chat_id = "YOUR_CHAT_ID"
url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
requests.post(url, data={'chat_id': chat_id, 'text': message})
# In caso di errore
try:
run_parsing()
except Exception as e:
send_telegram_alert(f"⚠️ Errore di parsing: {e}")
Casi pratici di utilizzo
Vediamo compiti specifici e la configurazione ottimale della gestione delle sessioni per ciascuno.
Scenario 1: Farming di un account Facebook Ads (8 ore di riscaldamento)
Compito: Riscaldare un nuovo account Facebook Ads prima di lanciare la pubblicità. È necessario simulare il comportamento di un normale utente: accedere a Facebook, leggere il feed, guardare video, mettere like, cliccare su pubblicità. In totale 8 ore di attività con pause.
Configurazione:
- Proxy: Residenziale con sticky session di 8-12 ore, paese — lo stesso indicato nell'account (se l'account è degli Stati Uniti, il proxy deve essere dagli Stati Uniti)
- Browser: Dolphin Anty o AdsPower, creare un profilo separato per questo account
- Fingerprint: Realistico per il paese (Windows 10, Chrome, risoluzione 1920x1080, lingua en-US per gli Stati Uniti)
- Automazione: Script su Selenium con ritardi casuali (5-15 minuti tra le azioni), simulazione di scrolling e movimento del mouse
- Salvataggio del progresso: Logging di tutte le azioni in un file, in modo da continuare dall'ultimo in caso di errore
Rischi: Cambio di IP a metà sessione — Facebook richiederà conferma dell'accesso. Azioni troppo veloci — l'account sarà sospettato.
Scenario 2: Parsing di tutti i prodotti di una categoria su Wildberries (6 ore)
Compito: Fare parsing di tutti i prodotti della categoria "Elettronica" su Wildberries (circa 50000 prodotti). È necessario ottenere il nome, il prezzo, il rating, il numero di recensioni. Il parsing avviene senza autenticazione.
Configurazione:
- Proxy: Data center con IP statico (Wildberries di solito non blocca severamente i data center) o residenziale con sticky session di 6 ore o più
- Browser: Non obbligatorio, si può usare requests + BeautifulSoup (più veloce) o Selenium (se il sito è in JavaScript)
- Salvataggio del progresso: Database SQLite, salvare ogni 100 prodotti. Al riavvio, saltare quelli già elaborati.
- Gestione degli errori: Se un prodotto non si carica (404, timeout) — saltare e continuare, registrare nel log
Rischi: Wildberries può mostrare un captcha con richieste troppo frequenti. Soluzione — aggiungere un ritardo di 1-3 secondi tra i prodotti o utilizzare un pool di proxy con rotazione.
Scenario 3: Posting di massa in 30 account Instagram (5 ore)
Compito: Pubblicare lo stesso post in 30 account Instagram dei clienti. Per ogni account — il proprio testo e hashtag. È necessario farlo con ritardi, in modo che non sembri spam.
Configurazione:
- Proxy: Residenziali con sticky session di 1-2 ore, per ogni account — il proprio proxy (per evitare che gli account siano collegati tramite IP)
- Browser: Dolphin Anty, creare 30 profili (uno per account), in ciascuno — il proprio proxy
- Automazione: Lo script avvia i profili a turno, pubblica tramite Instagram Web o API, chiude il profilo. Ritardo tra gli account — 10-15 minuti.
- Salvataggio del progresso: Elenco degli account in CSV, segnare lo stato (posted/pending/error)
Rischi: Instagram può bloccare l'account per azioni di massa. Soluzione — aggiungere ritardi casuali, simulare il comportamento umano (scrolling del feed prima del posting).
Scenario 4: Monitoraggio dei prezzi dei concorrenti su Ozon 24/7
Compito: Monitorare i prezzi di 500 prodotti dei concorrenti su Ozon ogni ora, registrare le modifiche in un database. Il compito funziona continuamente.
Configurazione:
- Proxy: Proxy ISP con IP statico (non cambia mai) o data center
- Automazione: Compito Cron (Linux) o Task Scheduler (Windows), avvia lo script ogni ora
- Salvataggio dei dati: PostgreSQL o MySQL, tabella con campi: product_id, price, timestamp
- Gestione degli errori: Se Ozon non è disponibile (errore 500) — saltare l'iterazione, registrare nel log, ripetere dopo un'ora
Rischi: Ozon può bloccare l'IP con richieste troppo frequenti. Soluzione — utilizzare un pool di 3-5 proxy con rotazione.
Conclusione
La gestione delle sessioni per compiti lunghi è una combinazione della scelta corretta dei proxy, della configurazione del browser anti-detect e di un'automazione affidabile con salvataggio del progresso. Punti chiave:
- Per compiti con autenticazione (farming di account, lavoro con pannelli pubblicitari) utilizza proxy residenziali o ISP con sticky sessions di 6-24 ore
- Per il parsing senza autenticazione, i data center con IP statico sono più economici e veloci
- I proxy mobili NON sono adatti per compiti a lungo termine a causa del frequente cambio di IP
- Salva il profilo del browser e non cambiare il fingerprint a metà compito
- Assicurati di registrare il progresso e configura il riavvio automatico in caso di errori
- Per compiti critici, configura notifiche sui problemi (Telegram, email)
Se prevedi di avviare compiti di 8 ore o più con autenticazione (farming di account, automazione dei social, lavoro con pannelli pubblicitari), ti consigliamo di provare proxy residenziali con supporto per sticky sessions — garantiscono un IP stabile per tutta la sessione e un rischio minimo di blocchi. Per il parsing di marketplace e monitoraggio dei prezzi senza autenticazione, sono adatti proxy dei data center — più veloci e più economici con la stessa stabilità di connessione.