Python Requests තුළ proxy IP එකක් භාවිත කිරීම
Requests හි එක් එක් ඉල්ලීමට proxy මාර්ග පැහැදිලිව නියම කර, නිවැරදි endpoint scheme තෝරා, timeout හා HTTPS tunnel අසාර්ථක වීම් හසුරුවන්න.
ඔබේ ව්යාපෘතියෙහි Requests තිබේ නම්, ඇමතුමට proxy mapping එකක් ලබා දෙන්න:
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)
loopback endpoint වෙනුවට ඔබේ ක්රියාත්මක proxy එක හෝ මේ ඉල්ලීමෙන් පරීක්ෂා කිරීමට නියමිත HTTP proxy ලැයිස්තුවේ අපේක්ෂකයක් යොදන්න. key මඟින් ගමනාන්තයේ scheme දක්වයි: HTTP URL සඳහා http ද HTTPS URL සඳහා https ද යොදයි. value මඟින් proxy listener දක්වයි. ජාලයට වෙන්වූ මාර්ග අවශ්ය නම් ඒවා වෙනස් endpoint විය හැකිය.
proxy value ලෙස http:// යන්න https key යටතේ තැබීම හිතාමතා කළ දෙයකි. Requests HTTP listener වෙතින් CONNECT tunnel ඉල්ලා, එය හරහා ගමනාන්තයට TLS සම්බන්ධතාවක් පිහිටුවයි. මෙය proxy හි ගමනාන්ත හා port ප්රතිපත්තියට යටත්ය. value එක https:// ලෙස වෙනස් කිරීමෙන් proxy එකටම TLS සම්බන්ධතාවක් ඉල්ලයි; listener සංකේතනය නොකළ HTTP බලාපොරොත්තු වේ නම් එය අසාර්ථක විය හැකිය.
timeout අංක දෙකෙන් අදහස් වන්නේ කුමක්ද
timeout=(5, 15) සම්බන්ධ වීමේ හා කියවීමේ timeout නියම කරයි. එය මුළු කාලය තත්පර පහළොවකට සීමා නොකරයි. වරින්වර ලැබෙන දත්ත, ලිපින කිහිපයක් හා සම්බන්ධ වීමට කරන උත්සාහ හේතුවෙන් ගත වන කාලය වැඩි විය හැකිය. මෙම සැකසුම නොදුන් විට Requests පොදු timeout සපයන්නේ නැත. එබැවින් ප්රතිචාරයට ගැළපෙන සීමා තෝරා, කාර්යයට දැඩි මුළු කාල සීමාවක් අවශ්ය නම් යෙදුම් මට්ටමේ අවසන් කාලයක් එක් කරන්න.
අසාර්ථක වීම සිදු වන අදියරේදී එය හසුරුවන්න
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 යනු නියම කළ සීමාවක් ඉක්මවා යාමයි. සම්බන්ධතාව පිහිටුවීමේ exception chain දේශීයව පරීක්ෂා කර, බෙදා ගැනීමට පෙර පිවිසුම් තොරතුරු සහිත endpoint හා පෞද්ගලික URL ඉවත් කරන්න.
සහතික සත්යාපනය සක්රියව තබන්න. අවසරලත් ජාලය පෞද්ගලික CA හෝ කළමනාකරණය කරන ලද interception භාවිත කරන්නේ නම්, සත්යාපනය අක්රිය කිරීම වෙනුවට අපේක්ෂිත විශ්වාස ද්රව්ය සපයන්න.
එක් එක් ඉල්ලීම සඳහා පැහැදිලිව දුන් entry මඟින් මෙහි සඳහන් මාර්ග පාලනය කරයි. එහෙත් සඳහන් නොකළ scheme වලට පරිසරයෙන් proxy සෙවීමේ බලපෑම තවමත් තිබිය හැකිය. ඇමතුම නැවත භාවිත කළ හැකි Session එකකට ගෙන යන විට, environment variable, Session පෙරනිමි හා එක් එක් ඉල්ලීමේ override එකිනෙක සමඟ ක්රියා කළ යුතු ආකාරය තීරණය කරන්න; සම්බන්ධතා නැවත භාවිතය හා මාර්ග ප්රතිපත්තිය වෙන්වූ තේරීම් වේ.