Python TCP soketləri üçün SOCKS-dan xəbərdar birləşdirici
Proksidən xəbərdar soket birləşdiricisi seçin və onun əhatəsini Python-un proses üzrə soket tətbiqindən ayrı saxlayın.
Xam Python soketi yalnız http_proxy olduğu üçün proksi ilə danışıq aparmır. Öz TCP protokolunu danışan tətbiq üçün proksi son nöqtəsindəki xidməti anlayan birləşdiricidən istifadə edin.
PySocks artıq mövcuddursa, bağlantını açıq şəkildə yaradın:
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.
Sənəddəki ünvanı və təyinat portunu dəyişdirin. İcazə verilən ictimai təyinat üçün SOCKS5 proksi siyahısından namizədi yalnız tətbiqin hədəf portuna icazə verdiyini yoxladıqdan sonra seçin. Quraşdırılmış paketi, dəstəklənən üsulları və son nöqtə tələblərini PySocks interfeysi ilə tutuşdurun.
Tətbiqin qalan hissəsi protokolunu bu qurulmuş bağlantı üzərində mübadilə edir. Əgər həmin protokol TLS istifadə edirsə, onu proksi danışığından sonra başladın və həqiqi təyinat host adını yoxlayın. Proksi autentifikasiyası marşrutu qurur; təyinat girişini və ya şifrələməni təmin etmir.
SOCKS dinləyicisi SOCKS danışığı tələb edir. HTTP xidməti ixtiyari TCP təyinatı üçün CONNECT qabiliyyətli birləşdirici tələb edir və portunu rədd edə bilər. Ünvanı dəyişib səhv əl sıxışmasını saxlamaq əvəzinə birləşdiricini həqiqətən təklif olunan xidmətə görə seçin.
Əvəzləməni yerli saxlayın. socket.socket-ə sinif təyin etmək əlaqəsiz importlara və kitabxanalara təsir edə bilər. Əgər soket yaradılması başqa kitabxanaya aiddirsə, onun sənədləşdirilmiş bağlantı fabrikindən və ya proksi seçimindən istifadə edin; heç vaxt oxumadığı lüğət o bağlantını dəyişə bilməz.