Raaka Python-soketti ei neuvottele välityspalvelinta siksi, että http_proxy on olemassa. Sovellukselle, joka puhuu omaa TCP-protokollaansa, käytä liitintä, joka ymmärtää palvelun välityspalvelimen päätepisteessä.

Kun PySocks on jo saatavilla, luo yhteys eksplisiittisesti:

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.

Korvaa dokumentaation osoite ja kohdeportti. Sallitulle julkiselle kohteelle valitse ehdokas SOCKS5-välityspalvelinluettelosta vasta kun olet tarkistanut, että se sallii sovelluksen kohdeportin. Tarkista asennettu paketti, tuetut menetelmät ja päätepisteen vaatimukset PySocks-rajapinnasta.

Sovelluksen loppuosa vaihtaa protokollaansa tämän muodostetun yhteyden yli. Jos tämä protokolla käyttää TLS:ää, käynnistä se välityspalvelinneuvottelun jälkeen ja varmista todellinen kohdeisäntänimi. Välityspalvelimen todennus muodostaa reitin; se ei tarjoa kohteen kirjautumista eikä salausta.

SOCKS-kuuntelija tarvitsee SOCKS-neuvottelun. HTTP-palvelu tarvitsee CONNECT-kykyisen liittimen mielivaltaiselle TCP-kohteelle ja voi kieltää porttinsa. Valitse liitin todella tarjotun palvelun mukaan sen sijaan, että muuttaisit osoitetta ja jättäisit väärän kättelyn.

Pidä korvaus paikallisena. Luokan liittäminen socket.socket-kohtaan voi vaikuttaa riippumattomiin tuonteihin ja kirjastoihin. Jos toinen kirjasto omistaa sokettien luonnin, käytä sen dokumentoitua yhteystehtaan tai välityspalvelinvalintaa; sanakirja, jota se ei koskaan lue, ei voi muuttaa sitä yhteyttä.

Aiheeseen liittyvät artikkelit