Python Requests-ൽ പ്രോക്സി IP ഉപയോഗിക്കുക
Requests-ൽ ഓരോ അഭ്യർഥനയ്ക്കും പ്രോക്സി റൂട്ടുകൾ വ്യക്തമായി നൽകുക, ശരിയായ എൻഡ്പോയിന്റ് സ്കീം തിരഞ്ഞെടുക്കുക, ടൈംഔട്ടുകളും HTTPS ടണൽ പരാജയങ്ങളും കൈകാര്യം ചെയ്യുക.
പ്രോജക്ടിൽ Requests ലഭ്യമാണെങ്കിൽ കോളിലേക്ക് പ്രോക്സി മാപ്പിങ് നൽകുക:
import requests
proxies = {
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}
response = requests.get(
"https://example.com/",
proxies=proxies,
timeout=(5, 15),
)
response.raise_for_status()
print(response.status_code)
ലൂപ്പ്ബാക്ക് എൻഡ്പോയിന്റിനു പകരം നിങ്ങളുടെ പ്രവർത്തിക്കുന്ന പ്രോക്സിയോ ഈ അഭ്യർഥനയിലൂടെ പരിശോധിക്കേണ്ട HTTP പ്രോക്സി പട്ടികയിലെ സ്ഥാനാർഥിയോ നൽകുക. കീകൾ ലക്ഷ്യസ്ഥാനത്തിന്റെ സ്കീമുകളെയാണ് വിവരിക്കുന്നത്: HTTP URL-കൾക്കായി http, HTTPS URL-കൾക്കായി https. മൂല്യങ്ങൾ പ്രോക്സി ലിസണറെ വിവരിക്കുന്നു. നെറ്റ്വർക്കിന് വേർതിരിച്ച റൂട്ടുകൾ വേണമെങ്കിൽ വ്യത്യസ്ത എൻഡ്പോയിന്റുകളാകാം.
http:// പ്രോക്സി മൂല്യം https കീയ്ക്കു കീഴിൽ നൽകുന്നത് മനപ്പൂർവമാണ്. Requests HTTP ലിസണറിനോട് CONNECT ടണൽ ആവശ്യപ്പെടുകയും അതിലൂടെ ലക്ഷ്യസ്ഥാനവുമായി TLS സ്ഥാപിക്കുകയും ചെയ്യുന്നു; പ്രോക്സിയുടെ ലക്ഷ്യസ്ഥാന-പോർട്ട് നയം ബാധകമാണ്. മൂല്യം https:// ആക്കുന്നത് പ്രോക്സിയിലേക്കുതന്നെ TLS ആവശ്യപ്പെടുന്നു; ലിസണർ എൻക്രിപ്റ്റ് ചെയ്യാത്ത HTTP പ്രതീക്ഷിച്ചാൽ പരാജയപ്പെടാം.
ടൈംഔട്ടിലെ രണ്ടു സംഖ്യകളുടെ അർഥം
timeout=(5, 15) കണക്ഷൻ, വായന ടൈംഔട്ടുകൾ സജ്ജമാക്കുന്നു. ഇത് മൊത്തം പതിനഞ്ച് സെക്കൻഡിന്റെ അവസാനപരിധി ഏർപ്പെടുത്തുന്നില്ല. ഇടയ്ക്കിടെ വരുന്ന ഡാറ്റ, ഒന്നിലധികം വിലാസങ്ങൾ, കണക്ഷൻ ശ്രമങ്ങൾ എന്നിവ സമയം നീട്ടാം. ഈ ക്രമീകരണം ഒഴിവാക്കിയാൽ Requests പൊതുവായ ടൈംഔട്ട് നൽകുന്നില്ല. പ്രതികരണത്തിന് അനുയോജ്യമായ പരിധികൾ തിരഞ്ഞെടുക്കുകയും ജോലിക്ക് കർശനമായ മൊത്തസമയപരിധി വേണമെങ്കിൽ ആപ്ലിക്കേഷൻ തലത്തിൽ അവസാനസമയം ചേർക്കുകയും ചെയ്യുക.
പരാജയം സംഭവിക്കുന്ന ഘട്ടത്തിൽ തന്നെ കൈകാര്യം ചെയ്യുക
try:
response = requests.get(
"https://example.com/",
proxies=proxies,
timeout=(5, 15),
)
response.raise_for_status()
except requests.exceptions.ProxyError as error:
print("Proxy setup failed:", type(error).__name__)
except requests.exceptions.Timeout:
print("A configured timeout expired")
except requests.exceptions.HTTPError as error:
print("HTTP status:", error.response.status_code)
CONNECT നിരസിക്കപ്പെട്ടാൽ ലക്ഷ്യസ്ഥാനത്തിന്റെ പ്രതികരണം ഉണ്ടാകുന്നതിനുമുമ്പ് ProxyError ഉയരാം. HTTPError ശാഖ പിശക് നിലയുള്ള ലഭിച്ച പ്രതികരണത്തെത്തുടർന്നാണ്; Timeout ക്രമീകരിച്ച പരിധി കഴിഞ്ഞുവെന്ന് അർഥം. കണക്ഷൻ സ്ഥാപിക്കുന്നതിലെ എക്സെപ്ഷൻ ശൃംഖലകൾ പ്രാദേശികമായി പരിശോധിക്കുക; പങ്കിടുന്നതിനുമുമ്പ് രഹസ്യ പ്രവേശനവിവരങ്ങളുള്ള എൻഡ്പോയിന്റുകളും സ്വകാര്യ URL-കളും നീക്കുക.
സർട്ടിഫിക്കറ്റ് പരിശോധന പ്രവർത്തനക്ഷമമായി നിലനിർത്തുക. അംഗീകൃത നെറ്റ്വർക്ക് സ്വകാര്യ CA അല്ലെങ്കിൽ നിയന്ത്രിത ഇന്റർസെപ്ഷൻ ഉപയോഗിക്കുന്നുവെങ്കിൽ പരിശോധന ഒഴിവാക്കാതെ പ്രതീക്ഷിക്കുന്ന വിശ്വാസ സാമഗ്രി നൽകുക.
ഓരോ അഭ്യർഥനയിലെയും വ്യക്തമായ എൻട്രികൾ ഇവിടെ നൽകിയ റൂട്ടുകൾ നിയന്ത്രിക്കുന്നു; എന്നാൽ ഒഴിവാക്കിയ സ്കീമുകൾ പരിസ്ഥിതിയിൽനിന്നുള്ള പ്രോക്സി കണ്ടെത്തലാൽ തുടർന്നും സ്വാധീനിക്കപ്പെടാം. കോൾ വീണ്ടും ഉപയോഗിക്കാവുന്ന Session-ലേക്ക് മാറ്റുമ്പോൾ പരിസ്ഥിതി വേരിയബിളുകൾ, Session ഡിഫോൾട്ടുകൾ, അഭ്യർഥനതോറുമുള്ള ഓവർറൈഡുകൾ എന്നിവ എങ്ങനെ ഇടപെടണം എന്നു തീരുമാനിക്കുക; കണക്ഷൻ പുനരുപയോഗവും റൂട്ടിങ് നയവും വേറിട്ട തിരഞ്ഞെടുപ്പുകളാണ്.