Scegli il tuo arsenale: proxy gratuiti in natura
Nell'agorà digitale, i proxy si ergono come sentinelle effimere: porte d'accesso all'anonimato, alla libertà e, ahimè, alla fragilità. Il proxy libero, quella creatura sfuggente, offre un passaggio, ma a un prezzo: instabilità, strozzamento o, nel peggiore dei casi, tradimento. Esaminiamo, con chiarezza cartesiana, il panorama:
Tipo di proxy | Anonimato | Velocità | Affidabilità | Esempio di fonte |
---|---|---|---|---|
Proxy HTTP/HTTPS | Medio | Moderare | Basso | https://free-proxy-list.net/ |
SOCKS4/5 Proxy | Alto | Basso | Molto basso | https://socks-proxy.net/ |
Proxy trasparenti | Nessuno | Veloce | Basso | https://spys.one/ |
Avvertimento: I proxy gratuiti sono pubblici e potrebbero essere compromessi. Non inviare mai credenziali o dati sensibili tramite essi.
Raccolta di proxy: il rituale
Una danza con l'effimero richiede l'automazione. Invochiamo Python e i suoi accoliti, richieste
E Zuppa bella
, per recuperare i proxy:
richieste di importazione da bs4 import BeautifulSoup def fetch_proxies(): url = 'https://free-proxy-list.net/' soup = BeautifulSoup(requests.get(url).content, 'html.parser') proxies = [] per riga in soup.find('table', id='proxylisttable').tbody.find_all('tr'): tds = row.find_all('td') if tds[6].text == 'yes': # solo HTTPS proxy = f"{tds[0].text}:{tds[1].text}" proxies.append(proxy) return proxies
Proxy in rotazione: l'arte del travestimento
Amazon ed eBay, quelle fortezze digitali, brandiscono i loro banhammer con precisione meccanica. La soluzione? Ruotare i proxy, cambiare gli user agent e introdurre ritardi: una coreografia di depistaggio.
import random import time proxies = fetch_proxies() user_agents = [ # Un bouquet di user-agent 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)...', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...', # Aggiungi altro ] def get_random_headers(): return {'User-Agent': random.choice(user_agents)} def get_random_proxy(): return {'http': f"http://{random.choice(proxies)}", 'https': f"http://{random.choice(proxies)}"} def request_with_proxy(url): per tentativo in range(5): proxy = get_random_proxy() headers = get_random_headers() try: response = requests.get(url, headers=headers, proxy=proxy, timeout=5) se response.status_code == 200: restituisci response.text eccetto Eccezione: continua time.sleep(random.uniform(1, 3)) restituisci None
Scraping Amazon: navigare nel labirinto
Amazon tesse incantesimi anti-bot: CAPTCHA, contenuti dinamici, divieti IP. Per lo scraping su piccola scala, concentrati sulle inserzioni di prodotto; per qualsiasi altro tipo di attività, considera limiti etici e limiti legali.
Esempio: estrazione dei titoli dei prodotti
da bs4 import BeautifulSoup def scrape_amazon_product_title(asin): url = f"https://www.amazon.com/dp/{asin}" html = request_with_proxy(url) if not html: print("Impossibile recuperare la pagina.") return None soup = BeautifulSoup(html, 'html.parser') title = soup.find('span', id='productTitle') return title.text.strip() if title else None asin = 'B08N5WRWNW' # Esempio ASIN print(scrape_amazon_product_title(asin))
Scraping eBay: attraverso il bazar
eBay, un sistema meno vigile, utilizza comunque sistemi di limitazione della velocità e rilevamento dei bot, meno severi, ma comunque presenti. Concentratevi sulla pagina dell'articolo (ad esempio, https://www.ebay.com/itm/ITEMID).
Esempio: estrazione del prezzo dell'articolo
def scrape_ebay_price(item_id): url = f"https://www.ebay.com/itm/{item_id}" html = request_with_proxy(url) if not html: print("Impossibile recuperare la pagina.") return None soup = BeautifulSoup(html, 'html.parser') price = soup.find('span', id='prcIsum') return price.text.strip() if price else None item_id = '234567890123' # Esempio ID articolo print(scrape_ebay_price(item_id))
Offuscamento: la poesia dell'evasione
- Randomizza gli intervalli di richiesta:
pitone
tempo.sonno(casuale.uniforme(2, 6)) - Mescolare proxy e user-agent con ogni richiesta.
- Metti in pausa o cambia proxy in caso di rilevamenti HTTP 503, 403 o CAPTCHA.
Limiti e legalità:
Sito | Numero massimo di richieste/ora (stimato) | Contromisure chiave |
---|---|---|
Amazzone | ~50-100 | Captcha, divieti IP, controlli JS |
eBay | ~200-300 | Limitatore di velocità, Captcha |
Buone pratiche:
- Verificare la vitalità dei proxy prima dell'uso (molti muoiono entro poche ore).
- Rispetta il file robots.txt e non oltrepassare i confini vietati.
- Limitare la concorrenza (evitare tempeste di thread con proxy gratuiti).
- Analizza con eleganza: i layout del sito mutano come il sottobosco primaverile.
Strumenti e librerie:
Compito | Strumento consigliato |
---|---|
Proxy Scraping | Zuppa bella |
Richieste HTTP | richieste, httpx |
Analisi sintattica | Zuppa bella, lxml |
Rotazione proxy | richieste + personalizzate |
Esempio di routine di convalida del proxy:
def validate_proxy(proxy): prova: r = requests.get('https://httpbin.org/ip', proxies={'http': proxy, 'https': proxy}, timeout=3) restituisci r.status_code == 200 eccetto: restituisci False proxies = [p per p in proxies se validate_proxy(p)]
Una nota finale sulla persistenza:
Smantellare con proxy gratuiti significa inseguire l'orizzonte: in continua evoluzione, sempre irraggiungibile. Ruotate, adattatevi e non dimenticate mai che ogni richiesta è una goccia nell'oceano del commercio digitale. Il web è un essere vivente; trattatelo come tale e potrebbe ancora svelarvi i suoi segreti.
Commenti (0)
Non ci sono ancora commenti qui, potresti essere il primo!