Python TCP сокеттеріне арналған SOCKS-ті түсінетін коннектор
Проксиді түсінетін сокет коннекторын таңдап, оның ауқымын Python-ның процестік сокет іске асыруынан бөлек ұстаңыз.
Қарапайым 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 қызметіне еркін TCP межелісі үшін CONNECT қабілеті бар коннектор қажет және ол өз портын қабылдамауы мүмкін. Қате қол алысуды қалдырып мекенжайды өзгертудің орнына, шын мәнінде ұсынылған қызметке сай коннекторды таңдаңыз.
Ауыстыруды жергілікті ұстаңыз. socket.socket-ке класс тағайындау байланыссыз импорттар мен кітапханаларға әсер етуі мүмкін. Егер сокет құруды басқа кітапхана иемденсе, оның құжатталған қосылым фабрикасын немесе прокси опциясын пайдаланыңыз; ол ешқашан оқымайтын сөздік бұл қосылымды өзгерте алмайды.