Surový Python socket nevyjednává proxy jen proto, že existuje http_proxy. Pro aplikaci, která mluví vlastním TCP protokolem, použijte konektor, který rozumí službě na proxy konci.

Když je PySocks k dispozici, vytvořte spojení explicitně:

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 cílový port. Pro povolený veřejný cíl vyberte kandidáta ze seznamu SOCKS5 proxy až poté, co ověříte, že povoluje cílový port aplikace. Ověřte nainstalovaný balíček, podporované metody a požadavky na koncový bod podle rozhraní PySocks.

Zbytek aplikace vyměňuje svůj protokol přes toto navázané spojení. Pokud tento protokol používá TLS, spusťte ho po vyjednání proxy a ověřte skutečné jméno cílového hostitele. Autentizace proxy vytváří trasu; neposkytuje přihlášení k cíli ani šifrování.

SOCKS naslouchač potřebuje SOCKS vyjednávání. HTTP služba potřebuje konektor s podporou CONNECT pro libovolný TCP cíl a může svůj port odmítnout. Vyberte konektor podle skutečně nabízené služby, místo abyste měnili adresu a ponechali špatný handshake.

Nahrazení udržte lokální. Přiřazení třídy socket.socket může ovlivnit nesouvisející importy a knihovny. Pokud vytváření socketů vlastní jiná knihovna, použijte její dokumentovanou továrnu spojení nebo proxy volbu; slovník, který nikdy nečte, toto spojení nezmění.

Související články