Surova pythonova vtičnica ne izpogaja proxyja le zato, ker obstaja http_proxy. Za aplikacijo, ki govori lasten protokol TCP, uporabite konektor, ki razume storitev na koncu proxyja.

Če je PySocks že na voljo, povezavo ustvarite izrecno:

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.

Zamenjajte dokumentacijski naslov in ciljna vrata. Za dovoljeni javni cilj izberite kandidata s seznama proxyjev SOCKS5 šele potem, ko preverite, da dovoljuje ciljna vrata aplikacije. Preverite nameščeni paket, podprte metode in zahteve končne točke glede na vmesnik PySocks.

Preostanek aplikacije izmenjuje svoj protokol po tej vzpostavljeni povezavi. Če ta protokol uporablja TLS, ga zaženite po pogajanju s proxyjem in preverite resnično ime ciljnega gostitelja. Preverjanje pristnosti na proxyju vzpostavi pot; ne zagotavlja prijave na cilj ali šifriranja.

Poslušalec SOCKS potrebuje pogajanje SOCKS. Storitev HTTP potrebuje konektor s podporo CONNECT za poljuben cilj TCP in lahko zavrne svoja vrata. Konektor izberite glede na storitev, ki se dejansko ponuja, namesto da spreminjate naslov in pustite napačen handshake.

Naj zamenjava ostane lokalna. Dodelitev razreda socket.socket lahko vpliva na nepovezane uvoze in knjižnice. Če ustvarjanje vtičnic upravlja druga knjižnica, uporabite njeno dokumentirano tovarno povezav ali možnost proxyja; slovar, ki ga nikoli ne prebere, te povezave ne more spremeniti.

Sorodni članki