Python urllib: ഒരു opener-നു മാത്രം പ്രോക്സികൾ ഒഴിവാക്കുക
മറ്റു ക്ലയന്റുകളെയോ പ്രോസസിന്റെ പരിസ്ഥിതിയെയോ മാറ്റാതെ ProxyHandler({}) ഉപയോഗിച്ച് നേരിട്ട് ബന്ധപ്പെടുന്ന urllib opener സൃഷ്ടിക്കുക.
ഒരു urllib opener നേരിട്ട് ബന്ധപ്പെടേണ്ടപ്പോൾ ProxyHandler-ന് ശൂന്യമായ മാപ്പിങ് നൽകുക:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
with direct.open("https://example.com/", timeout=10) as response:
print(response.status)
ശൂന്യമായ ഡിക്ഷണറി പ്രോക്സി വഴികളൊന്നും നൽകുന്നില്ല. മാപ്പിങ് നൽകാതിരുന്നാൽ ഹാൻഡ്ലർ പരിസ്ഥിതിയിൽനിന്നും പ്ലാറ്റ്ഫോം ക്രമീകരണങ്ങളിൽനിന്നും പ്രോക്സികളെ കണ്ടെത്തും. ഈ രണ്ടു നിർമ്മാണരീതികൾ വ്യത്യസ്ത നയങ്ങളാണ് വ്യക്തമാക്കുന്നത്.
ഉദാഹരണം Python-ന്റെ സ്റ്റാൻഡേർഡ് ലൈബ്രറി ഉപയോഗിക്കുകയും സാധാരണ HTTPS പരിശോധന നിലനിർത്തുകയും ചെയ്യുന്നു. with ബ്ലോക്ക് പ്രതികരണം അടയ്ക്കുന്നു; എക്സെപ്ഷൻ കാരണം ബ്ലോക്കിൽനിന്ന് പുറത്തുകടക്കുമ്പോഴും ഇത് സംഭവിക്കും.
ഒരേ ആപ്ലിക്കേഷനിൽ നേരിട്ടും പ്രോക്സി വഴിയും അഭ്യർത്ഥനകൾ
കോളുകൾക്കിടയിൽ പരിസ്ഥിതി വേരിയബിളുകൾ മാറ്റാതെ രണ്ട് opener-കൾക്ക് രണ്ട് നയങ്ങൾ കൈകാര്യം ചെയ്യാം:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}))
with proxied.open("https://example.com/", timeout=10) as response:
print(response.status)
ലൂപ്പ്ബാക്ക് വിലാസം നിങ്ങളുടെ HTTP പ്രോക്സി ഉപയോഗിച്ച് മാറ്റുക, അല്ലെങ്കിൽ പ്രോക്സി വഴിയുള്ള താരതമ്യത്തിനായി HTTP പ്രോക്സി പട്ടികയിൽനിന്ന് ഒന്ന് തിരഞ്ഞെടുക്കുക. സേവനം അനുവദിക്കുമ്പോൾ HTTPS ലക്ഷ്യത്തിലേക്കുള്ള കണക്ഷൻ CONNECT വഴി കൊണ്ടുപോകാൻ അതിനാകും. ലിസണറിന്റെ പ്രോട്ടോക്കോളും പ്രാമാണീകരണ പിന്തുണയും ഹാൻഡ്ലറുമായി പൊരുത്തപ്പെടണം.
ഡീഫോൾട്ട് opener മാറ്റരുത്
വഴിക്ക് ഉത്തരവാദിയായ ഒബ്ജക്റ്റിലൂടെ direct.open അല്ലെങ്കിൽ proxied.open വിളിക്കുക. install_opener urllib-ന്റെ സൗകര്യ ഫങ്ഷനുകൾ ഉപയോഗിക്കുന്ന പ്രോസസ് മുഴുവനുമുള്ള ഡീഫോൾട്ട് മാറ്റുന്നു; അതുപയോഗിക്കുന്ന ലൈബ്രറി ബന്ധമില്ലാത്ത കോഡിനെ ബാധിക്കാം. മുകളിലെ ഒറ്റപ്പെട്ട opener-ന് അത് ആവശ്യമില്ല.
timeout ആർഗ്യുമെന്റ് ഒരു പ്രവർത്തനത്തിന്റെ ക്രമീകരണമാണ്; ഓരോ കൈമാറ്റത്തിന്റെയും മുഴുവൻ യഥാർത്ഥ സമയത്തിനുള്ള പരിധിയല്ല. ജോലിക്കാവശ്യമായ ഡാറ്റ മാത്രം വായിക്കുക; കർശനമായ മൊത്തം സമയപരിധിയുണ്ടെങ്കിൽ ഉയർന്ന തലത്തിലുള്ള അവസാനസമയം ഉപയോഗിക്കുക.
ഈ opener ഒബ്ജക്റ്റുകൾ മറ്റൊരു ലൈബ്രറിയുടെ ക്ലയന്റിനെയോ നിലവിലുള്ള പ്രോസസിനെയോ ബ്രൗസറിന്റെ പ്രോക്സി ക്രമീകരണങ്ങളെയോ മാറ്റുന്നില്ല.