Ein SOCKS-medviten kopling for Python TCP-soklar
Vel ei proxy-medviten sokkekopling og hald omfanget skilt frå Python sin prosessomfattande socket-implementasjon.
Ein rå Python-socket forhandlar ikkje om proxy berre fordi http_proxy finst. For ein applikasjon som snakkar sin eigen TCP-protokoll, bruk ei kopling som forstår tenesta ved proxy-endepunktet.
Når PySocks allereie er tilgjengeleg, opprett tilkoplinga eksplisitt:
import socks
with socks.socksocket() as connection:
connection.set_proxy(socks.SOCKS5, '203.0.113.10', 1080)
connection.settimeout(10)
connection.connect(('example.com', 12345))
# Exchange the destination protocol here.
Erstatt dokumentasjonsadressa og destinasjonsporten. For ein tillaten offentleg destinasjon, vel ein kandidat frå SOCKS5-proxylista først etter å ha kontrollert at ho tillèt målporten til applikasjonen. Kontroller den installerte pakka, støtta metodar og endepunktkrav mot PySocks-grensesnittet.
Resten av applikasjonen utvekslar protokollen sin over denne etablerte tilkoplinga. Viss den protokollen brukar TLS, start han etter proxy-forhandlinga og verifiser det verkelege destinasjonsvertsnamnet. Proxy-autentisering etablerer ruta; ho gjev ikkje innlogginga til destinasjonen eller kryptering.
Ein SOCKS-lyttar treng SOCKS-forhandling. Ei HTTP-teneste treng ei CONNECT-kapabel kopling for ein vilkårleg TCP-destinasjon og kan avvise porten sin. Vel koplinga frå tenesta som faktisk blir tilboden, i staden for å endre ei adresse medan feil handtrykk blir ståande.
Hald erstatninga lokal. Å tildele ein klasse til socket.socket kan påverke urelaterte importar og bibliotek. Viss eit anna bibliotek eig socket-opprettinga, bruk den dokumenterte tilkoplingsfabrikken eller proxy-valet; ei ordbok det aldri les kan ikkje endre den tilkoplinga.