SOCKS-ին տեղյակ միակցիչ Python-ի TCP սոքեթների համար
Ընտրեք վստահված սերվերը հասկացող սոքեթի միակցիչ և նրա շրջանակը առանձին պահեք 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 ծառայությանը անհրաժեշտ է CONNECT-ին ընդունակ միակցիչ կամայական TCP նպատակակետի համար և կարող է մերժել իր նավահանգիստը։ Միակցիչն ընտրեք իրականում առաջարկվող ծառայության հիման վրա, փոխանակ փոխելու հասցեն և թողնելու սխալ ձեռքսեղմումը։
Փոխարինումը պահեք տեղական։ socket.socket-ին դաս վերագրելը կարող է ազդել անկապ ներմուծումների և գրադարանների վրա։ Եթե սոքեթի ստեղծումը պատկանում է այլ գրադարանի, օգտագործեք նրա փաստաթղթավորված կապի գործարանը կամ վստահված սերվերի ընտրանքը. բառարանը, որը նա երբեք չի կարդում, չի կարող փոխել այդ կապը։