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.

Relaterte artiklar