Një soket i papërpunuar i Python nuk negocion një përfaqësues vetëm sepse ekziston http_proxy. Për një aplikacion që flet protokollin e vet TCP, përdorni një lidhës që kupton shërbimin në skajin e përfaqësuesit.

Kur PySocks është tashmë i disponueshëm, krijoni lidhjen në mënyrë eksplicite:

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.

Zëvendësoni adresën e dokumentacionit dhe portën e destinacionit. Për një destinacion publik të lejuar, zgjidhni një kandidat nga lista e përfaqësuesve SOCKS5 vetëm pasi të kontrolloni se lejon portën e synuar të aplikacionit. Kontrolloni paketën e instaluar, metodat e mbështetura dhe kërkesat e pikës fundore kundrejt ndërfaqes PySocks.

Pjesa tjetër e aplikacionit shkëmben protokollin e vet përmes kësaj lidhjeje të vendosur. Nëse ai protokoll përdor TLS, fillojeni pas negocimit me përfaqësuesin dhe verifikoni emrin e vërtetë të hostit të destinacionit. Vërtetimi i përfaqësuesit vendos rrugën; ai nuk ofron hyrjen në destinacion ose kriptimin.

Një dëgjues SOCKS ka nevojë për negocim SOCKS. Një shërbim HTTP ka nevojë për një lidhës të aftë për CONNECT për një destinacion TCP arbitrar dhe mund të refuzojë portën e tij. Zgjidhni lidhësin sipas shërbimit që ofrohet realisht, në vend që të ndryshoni një adresë duke lënë shtrëngimin e gabuar të duarve.

Mbajeni zëvendësimin lokal. Caktimi i një klase socket.socket mund të ndikojë importet dhe bibliotekat e palidhura. Nëse një bibliotekë tjetër zotëron krijimin e soketave, përdorni fabrikën e saj të dokumentuar të lidhjeve ose opsionin e përfaqësuesit; një fjalor që nuk lexohet kurrë nuk mund ta ndryshojë atë lidhje.

Artikuj të ngjashëm