Kiunganishi kinachotambua SOCKS kwa soketi za TCP za Python
Chagua kiunganishi cha soketi kinachotambua proksi na weka wigo wake kando ya utekelezaji wa soketi wa Python unaotumika mchakato mzima.
Soketi ghafi ya Python haijadiliani proksi kwa sababu tu http_proxy ipo. Kwa programu inayozungumza itifaki yake ya TCP, tumia kiunganishi kinachoelewa huduma kwenye mwisho wa proksi.
PySocks ikiwa tayari inapatikana, tengeneza muunganisho kwa uwazi:
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.
Badilisha anwani ya hati na bandari lengwa. Kwa lengo la umma lililoruhusiwa, chagua mtahiniwa kutoka orodha ya proksi za SOCKS5 baada tu ya kuhakikisha kwamba inaruhusu bandari lengwa ya programu. Angalia kifurushi kilichosakinishwa, mbinu zinazotumika na mahitaji ya kiungo dhidi ya kiolesura cha PySocks.
Sehemu iliyobaki ya programu hubadilishana itifaki yake kupitia muunganisho huu ulioanzishwa. Ikiwa itifaki hiyo inatumia TLS, ianzishe baada ya majadiliano ya proksi na thibitisha jina halisi la mwenyeji lengwa. Uthibitishaji wa proksi huanzisha njia; hautoa kuingia kwa lengo au usimbaji fiche.
Msikilizaji wa SOCKS anahitaji majadiliano ya SOCKS. Huduma ya HTTP inahitaji kiunganishi kinachoweza CONNECT kwa lengo lolote la TCP na inaweza kukataa bandari yake. Chagua kiunganishi kutokana na huduma inayotolewa kweli, badala ya kubadilisha anwani na kuacha salamu isiyo sahihi.
Weka ubadilishaji ndani. Kukabidhi darasa kwa socket.socket kunaweza kuathiri uagizaji na maktaba zisizohusiana. Ikiwa maktaba nyingine inamiliki uundaji wa soketi, tumia kiwanda chake cha muunganisho kilichoandikwa au chaguo la proksi; kamusi ambayo haisomi kamwe haiwezi kubadilisha muunganisho huo.