Isang connector na may kamalayan sa SOCKS para sa TCP sockets ng Python
Pumili ng connector ng socket na nakakaalam ng proxy at panatilihing hiwalay ang saklaw nito sa implementasyon ng socket sa buong proseso ng Python.
Ang hilaw na socket ng Python ay hindi nakikipag-usap sa isang proxy dahil lang may http_proxy. Para sa application na nagsasalita ng sarili nitong TCP protocol, gumamit ng connector na nakakaunawa sa serbisyo sa dulo ng proxy.
Kung available na ang PySocks, gawin nang tahasan ang koneksyon:
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.
Palitan ang address sa dokumentasyon at ang target na port. Para sa pinapayagang pampublikong destinasyon, pumili ng kandidato mula sa listahan ng SOCKS5 proxy pagkatapos lamang matingnan na pinapayagan nito ang target na port ng application. Suriin ang naka-install na package, mga sinusuportahang paraan at mga pangangailangan ng endpoint laban sa interface ng PySocks.
Ipinagpapalitan ng natitirang bahagi ng application ang protocol nito sa itinatag na koneksyong ito. Kung gumagamit ang protocol na iyon ng TLS, simulan ito pagkatapos ng negosasyon sa proxy at i-verify ang tunay na hostname ng destinasyon. Itinatag ng authentication sa proxy ang ruta; hindi ito nagbibigay ng login sa destinasyon o encryption.
Ang isang SOCKS listener ay nangangailangan ng negosasyon ng SOCKS. Ang isang serbisyong HTTP ay nangangailangan ng connector na may kakayahang CONNECT para sa arbitraryong TCP na destinasyon at maaaring tanggihan ang port nito. Piliin ang connector batay sa serbisyong aktwal na inaalok, sa halip na palitan ang address habang iniiwan ang maling handshake.
Panatilihing lokal ang pagpapalit. Ang pagtatalaga ng isang class sa socket.socket ay maaaring makaapekto sa walang kaugnayang mga import at library. Kung ibang library ang nagmamay-ari ng paglikha ng socket, gamitin ang dokumentadong connection factory o proxy option nito; ang isang dictionary na hindi nito binabasa ay hindi mababago ang koneksyong iyon.