Konektor s podporou SOCKS pro pythoní TCP sockety
Vyberte konektor, který rozumí proxy, a udržte jeho rozsah oddělený od celoprocesové implementace socketů v Pythonu.
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í.