'n SOCKS-bewuste verbinding vir Python TCP-sokke
Kies 'n proxy-bewuste sokverbinding en hou sy omvang apart van Python se proseswye sokimplementasie.
'n Rou Python-sok onderhandel nie 'n proxy omdat http_proxy bestaan nie. Vir 'n toepassing wat sy eie TCP-protokol praat, gebruik 'n verbinding wat die diens by die proxy-eindpunt verstaan.
Met PySocks reeds beskikbaar, skep die verbinding eksplisiet:
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.
Vervang die dokumentasieadres en bestemmingspoort. Vir 'n toegelate publieke bestemming, kies 'n kandidaat uit die SOCKS5-proxylys eers nadat jy nagegaan het dat dit die toepassing se teikenpoort toelaat. Kontroleer die geïnstalleerde pakket, ondersteunde metodes en eindpuntvereistes teen die PySocks-koppelvlak.
Die res van die toepassing wissel sy protokol oor hierdie gevestigde verbinding. As daardie protokol TLS gebruik, begin dit ná proxy-onderhandeling en verifieer die werklike bestemmingshostname. Proxy-verifikasie vestig die roete; dit verskaf nie die bestemming se aanmelding of enkripsie nie.
'n SOCKS-luisteraar benodig SOCKS-onderhandeling. 'n HTTP-diens benodig 'n CONNECT-vermoënde verbinding vir 'n arbitrêre TCP-bestemming en kan sy poort weier. Kies die verbinding volgens die diens wat werklik aangebied word, eerder as om 'n adres te verander terwyl die verkeerde handdruk bly.
Hou die vervanging plaaslik. Om 'n klas aan socket.socket toe te wys, kan onverwante invoere en biblioteke raak. As 'n ander biblioteek sok-skepping besit, gebruik sy gedokumenteerde verbindingsfabriek of proxy-opsie; 'n woordeboek wat dit nooit lees nie, kan daardie verbinding nie verander nie.