Holý socket v Pythone nevyjednáva proxy len preto, že existuje http_proxy. Pre aplikáciu, ktorá hovorí vlastným protokolom TCP, použite konektor, ktorý rozumie službe na proxy konci.

Ak je PySocks už k dispozícii, vytvorte spojenie explicitne:

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.

Nahraďte dokumentačnú adresu a cieľový port. Pre povolený verejný cieľ vyberte kandidáta zo zoznamu SOCKS5 proxy až po overení, že povoľuje cieľový port aplikácie. Overte nainštalovaný balík, podporované metódy a požiadavky na koncový bod podľa rozhrania PySocks.

Zvyšok aplikácie vymieňa svoj protokol cez toto vytvorené spojenie. Ak tento protokol používa TLS, spustite ho až po vyjednaní s proxy a overte skutočné meno cieľového hostiteľa. Overenie na proxy vytvára trasu; neposkytuje prihlásenie do cieľa ani šifrovanie.

SOCKS poslucháč potrebuje vyjednávanie SOCKS. Služba HTTP potrebuje konektor s podporou CONNECT pre ľubovoľný cieľ TCP a môže odmietnuť svoj port. Vyberte konektor podľa služby, ktorá sa skutočne ponúka, namiesto zmeny adresy so zlým handshake.

Nechajte náhradu lokálnu. Priradenie triedy socket.socket môže ovplyvniť nesúvisiace importy a knižnice. Ak vytváranie socketov vlastní iná knižnica, použite jej dokumentovanú továreň pripojení alebo možnosť proxy; slovník, ktorý nikdy nečíta, toto spojenie nezmení.

Súvisiace články