Paprastas „Python“ lizdas nesidera dėl tarpinio serverio vien todėl, kad egzistuoja http_proxy. Programai, kuri kalba savo TCP protokolu, naudokite jungtį, kuri supranta paslaugą tarpinio serverio gale.

Jei „PySocks“ jau prieinama, sukurkite ryšį aiškiai:

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.

Pakeiskite dokumentacijos adresą ir paskirties prievadą. Leidžiamai viešai paskirčiai kandidatą iš SOCKS5 tarpinių serverių sąrašo rinkitės tik patikrinę, ar jis leidžia programos tikslinį prievadą. Patikrinkite įdiegtą paketą, palaikomus metodus ir galinio taško reikalavimus pagal „PySocks“ sąsają.

Likusi programos dalis keičiasi savo protokolu per šį nustatytą ryšį. Jei tas protokolas naudoja TLS, pradėkite jį po tarpinio serverio derybų ir patikrinkite tikrąjį paskirties pagrindinio kompiuterio vardą. Tarpinio serverio autentifikavimas nustato maršrutą; jis nesuteikia paskirties prisijungimo ar šifravimo.

SOCKS klausytojui reikia SOCKS derybų. HTTP paslaugai reikia CONNECT galinčios jungties savavališkai TCP paskirčiai, ir ji gali atmesti savo prievadą. Rinkitės jungtį pagal faktiškai siūlomą paslaugą, o ne keiskite adresą palikdami neteisingą rankos paspaudimą.

Keitimą laikykite vietiniu. Klasės priskyrimas socket.socket gali paveikti nesusijusius importus ir bibliotekas. Jei lizdo kūrimą valdo kita biblioteka, naudokite jos dokumentuotą ryšio fabriką arba tarpinio serverio parinktį; žodynas, kurio ji niekada neskaito, negali pakeisti to ryšio.

Susiję straipsniai