Sirovi Python soket ne pregovara proxy zato što postoji http_proxy. Za aplikaciju koja govori vlastiti TCP protokol upotrijebite spojnik koji razumije uslugu na proxy krajnjoj točki.

Kada je PySocks već dostupan, stvorite vezu izričito:

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.

Zamijenite dokumentacijsku adresu i odredišni port. Za dopušteno javno odredište odaberite kandidata s popisa SOCKS5 proxyja tek nakon što provjerite dopušta li ciljni port aplikacije. Provjerite instalirani paket, podržane metode i zahtjeve krajnje točke prema PySocks sučelju.

Ostatak aplikacije razmjenjuje svoj protokol preko ove uspostavljene veze. Ako taj protokol koristi TLS, pokrenite ga nakon pregovora proxyja i provjerite stvarno ime odredišnog hosta. Autentifikacija proxyja uspostavlja rutu; ona ne omogućuje prijavu na odredište ni šifriranje.

SOCKS slušatelj treba SOCKS pregovor. HTTP usluga treba spojnik koji podržava CONNECT za proizvoljno TCP odredište i može odbiti njegov port. Odaberite spojnik prema usluzi koja se stvarno nudi, umjesto da mijenjate adresu ostavljajući pogrešan handshake.

Zamjenu držite lokalnom. Dodjeljivanje klase socket.socket može utjecati na nepovezane uvoze i biblioteke. Ako druga biblioteka upravlja stvaranjem soketa, upotrijebite njezinu dokumentiranu tvornicu veza ili proxy opciju; rječnik koji nikada ne čita ne može promijeniti tu vezu.

Povezani članci