http_proxy ఉన్నందున మాత్రమే ముడి Python సాకెట్ ప్రాక్సీతో సంప్రదింపులు జరపదు. తమ సొంత 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 కు తరగతిని కేటాయించడం సంబంధం లేని దిగుమతులు మరియు లైబ్రరీలను ప్రభావితం చేయవచ్చు. సాకెట్ సృష్టిని మరో లైబ్రరీ కలిగి ఉంటే, దాని డాక్యుమెంట్ చేసిన కనెక్షన్ ఫ్యాక్టరీ లేదా ప్రాక్సీ ఎంపికను ఉపయోగించండి; అది ఎప్పుడూ చదవని నిఘంటువు ఆ కనెక్షన్ను మార్చలేదు.

సంబంధిత వ్యాసాలు