[Python] Cercare un server proxy (SOCKS5)

Può capitare di avere bisogno di utilizzare all’interno del proprio codice un servizio proxy SOCKS5 per rendere un po’ più anonima la navigazione nel web senza utilizzare una più sicura, ma più lenta VPN. Personalmente risolvo utilizzando questa funzione in Python che ho realizzato sfruttando i moduli requestBeautifulSoup che richiama la pagina dedicata del portale Spys.one, legge la lista dei server disponibili e ritorna l’IP del server con la relativa porta di utilizzo.

Di seguito il codice pronto all’utilizzo:

import requests
from bs4 import BeautifulSoup

def cercaProxy():
    ip = ''
    porta = ''
    proxy = ''
    t_data = {}
    
    url = "http://spys.one/en/socks-proxy-list/"
    r = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
    soup = BeautifulSoup(r.content, 'lxml')
    cercaip = soup.find_all('font', attrs={'class' : 'spy14'})
    work = cercaip[1].text
    legenda = soup.find_all('script', attrs={'type' : 'text/javascript'})
    discover = (legenda[1].text).split(';')
    
    for brace in discover:
        if brace == '':
            continue
        tar = brace.split('=')
        if tar[1][1] == '^':
            t_data.update({tar[0]:tar[1][0]})
            
    if work.find('document.write'):
        start_index = work.find('document.write')
        ip = work[:start_index]
        plus_index = work.find('"+(') + 2
        porta_tmp = work[plus_index:-1]
        leggiporta=porta_tmp.split('+')
        for item in leggiporta:
            rar = item.split('^')
            itm_porta = str(t_data.get(rar[0][1:], 'n'))
            porta = porta + itm_porta
            
    proxy = ip + ':' + porta
    print 'Proxy ip: ' + proxy
    return proxy