En rå Python-socket forhandler ikke en proxy, bare fordi http_proxy findes. Til et program, der taler sin egen TCP-protokol, skal du bruge en connector, der forstår tjenesten ved proxyendepunktet.

Når PySocks allerede er tilgængelig, skal du oprette forbindelsen eksplicit:

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.

Erstat dokumentationsadressen og destinationsporten. For en tilladt offentlig destination skal du vælge en kandidat fra SOCKS5-proxylisten, først når du har kontrolleret, at den tillader programmets målport. Kontroller den installerede pakke, de understøttede metoder og endepunktets krav mod PySocks-grænsefladen.

Resten af programmet udveksler sin protokol over denne etablerede forbindelse. Hvis den protokol bruger TLS, skal du starte den efter proxyforhandlingen og bekræfte det rigtige destinationsværtsnavn. Proxygodkendelse etablerer ruten; den giver ikke destinationslogin eller kryptering.

En SOCKS-lytter har brug for SOCKS-forhandling. En HTTP-tjeneste har brug for en CONNECT-kompatibel connector til en vilkårlig TCP-destination og kan afvise sin port. Vælg connectoren ud fra den tjeneste, der faktisk tilbydes, i stedet for at ændre en adresse og efterlade det forkerte håndtryk.

Hold erstatningen lokal. Tildeling af en klasse til socket.socket kan påvirke urelaterede imports og biblioteker. Hvis et andet bibliotek ejer socketoprettelsen, skal du bruge dets dokumenterede forbindelsesfabrik eller proxyindstilling; en ordbog, det aldrig læser, kan ikke ændre den forbindelse.

Relaterede artikler