Сирови Python сокет не преговара прокси зато што постоји http_proxy. За апликацију која говори сопствени TCP протокол, користите конектор који разуме услугу на прокси одредишту.

Када је PySocks већ доступан, креирајте везу експлицитно:

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.

Замените документациону адресу и одредишни порт. За дозвољено јавно одредиште изаберите кандидата са листе SOCKS5 проксија тек након провере да дозвољава циљни порт апликације. Проверите инсталирани пакет, подржане методе и захтеве одредишта према PySocks интерфејсу.

Остатак апликације размењује свој протокол преко ове успостављене везе. Ако тај протокол користи TLS, покрените га након преговора са проксијем и проверите стварно име одредишног хоста. Прокси аутентификација успоставља руту; она не даје пријаву на одредиште ни енкрипцију.

SOCKS слушалац треба SOCKS преговор. HTTP услуга треба конектор који подржава CONNECT за произвољно TCP одредиште и може одбити његов порт. Изаберите конектор према услузи која се стварно нуди, уместо да мењате адресу остављајући погрешан handshake.

Нека замена остане локална. Додељивање класе socket.socket може утицати на неповезане увозе и библиотеке. Ако стварањем сокета управља друга библиотека, користите њену документовану фабрику веза или прокси опцију; речник који никада не чита не може променити ту везу.

Повезани чланци