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 ને વર્ગ સોંપવાથી અસંબંધિત આયાત અને લાઇબ્રેરીઓ પર અસર થઈ શકે છે. જો બીજી લાઇબ્રેરી સૉકેટ બનાવવાનો માલિક હોય, તો તેની દસ્તાવેજીકૃત કનેક્શન ફેક્ટરી અથવા પ્રોક્સી વિકલ્પ વાપરો; જે શબ્દકોશ તે ક્યારેય વાંચતું નથી તે તે કનેક્શન બદલી શકતું નથી.