Python TCP സോക്കറ്റുകൾക്കുള്ള SOCKS-ബോധമുള്ള കണക്ടർ
പ്രോക്സി-ബോധമുള്ള സോക്കറ്റ് കണക്ടർ തിരഞ്ഞെടുക്കുക, അതിന്റെ പരിധി Python-ന്റെ പ്രോസസ്-വ്യാപക സോക്കറ്റ് നടപ്പാക്കലിൽ നിന്ന് വേർതിരിച്ച് നിർത്തുക.
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 എന്നതിന് ഒരു ക്ലാസ് അസൈൻ ചെയ്യുന്നത് ബന്ധമില്ലാത്ത ഇംപോർട്ടുകളെയും ലൈബ്രറികളെയും ബാധിച്ചേക്കാം. സോക്കറ്റ് സൃഷ്ടി മറ്റൊരു ലൈബ്രറി കൈവശം വയ്ക്കുന്നുവെങ്കിൽ, അതിന്റെ ഡോക്യുമെന്റ് ചെയ്ത കണക്ഷൻ ഫാക്ടറി അല്ലെങ്കിൽ പ്രോക്സി ഓപ്ഷൻ ഉപയോഗിക്കുക; അത് ഒരിക്കലും വായിക്കാത്ത ഒരു ഡിക്ഷണറിക്ക് ആ കണക്ഷൻ മാറ്റാൻ കഴിയില്ല.