SOCKS saprotošs savienotājs Python TCP ligzdām
Izvēlieties starpniekserveri saprotošu ligzdas savienotāju un turiet tā tvērumu atsevišķi no Python visa procesa ligzdas ieviešanas.
Vienkārša Python ligzda nesarunājas par starpniekserveri tikai tāpēc, ka pastāv http_proxy. Lietojumprogrammai, kas runā ar savu TCP protokolu, izmantojiet savienotāju, kas saprot pakalpojumu starpniekservera galā.
Ja PySocks jau ir pieejams, izveidojiet savienojumu skaidri:
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.
Aizstājiet dokumentācijas adresi un galamērķa portu. Atļautam publiskam galamērķim kandidātu no SOCKS5 starpniekserveru saraksta izvēlieties tikai pēc tam, kad pārbaudīts, vai tas atļauj lietojumprogrammas mērķa portu. Pārbaudiet instalēto pakotni, atbalstītās metodes un galapunkta prasības pret PySocks saskarni.
Pārējā lietojumprogrammas daļa apmainās ar savu protokolu pa šo izveidoto savienojumu. Ja šis protokols izmanto TLS, sāciet to pēc starpniekservera sarunām un pārbaudiet īsto galamērķa resursdatora nosaukumu. Starpniekservera autentifikācija nosaka maršrutu; tā nenodrošina galamērķa pieteikšanos vai šifrēšanu.
SOCKS klausītājam nepieciešamas SOCKS sarunas. HTTP pakalpojumam nepieciešams CONNECT spējīgs savienotājs patvaļīgam TCP galamērķim, un tas var atteikt savu portu. Izvēlieties savienotāju no faktiski piedāvātā pakalpojuma, nevis mainiet adresi, atstājot nepareizu rokasspiedienu.
Turiet aizstāšanu lokālu. Klases piešķiršana socket.socket var ietekmēt nesaistītus importus un bibliotēkas. Ja ligzdas izveidi pārvalda cita bibliotēka, izmantojiet tās dokumentēto savienojuma fabriku vai starpniekservera opciju; vārdnīca, ko tā nekad nelasa, nevar mainīt šo savienojumu.