Requests හි HTTPAdapter.proxy_headers සමඟ ප්රොක්සි ශීර්ෂ සැකසීම
ප්රොක්සිය විසින් නිර්වචනය කරන ක්ෂේත්රයක් සඳහා HTTPAdapter.proxy_headers දිගු කරන්න, Requests හි පවතින ප්රොක්සි-සත්යාපන ශීර්ෂ උත්පාදනය රැක ගනිමින්.
ප්රොක්සි ක්රියාකරු විසින් නිර්වචනය කරන ශීර්ෂයක් සඳහා, Requests HTTPAdapter.proxy_headers ප්රතිලේඛන ලක්ෂ්යයක් ලෙස ලබා දෙයි:
from urllib.parse import urlsplit
import requests
from requests.adapters import HTTPAdapter
class TaggedProxy(HTTPAdapter):
def proxy_headers(self, proxy):
headers = super().proxy_headers(proxy)
endpoint = urlsplit(proxy)
if (endpoint.scheme == 'http'
and endpoint.hostname == 'proxy.example'
and endpoint.port == 8080):
headers['X-Proxy-Account'] = 'department-a'
return headers
with requests.Session() as session:
adapter = TaggedProxy()
session.mount('http://', adapter)
session.mount('https://', adapter)
response = session.get(
'https://service.example/data',
proxies={'https': 'http://proxy.example:8080'},
timeout=15,
)
X-Proxy-Account යනු මෙම විශේෂිත ප්රොක්සිය තේරුම් ගන්නා ක්ෂේත්රයක උදාහරණයකි, සෑම මැදිහත්කරුවෙකු සමඟ සත්යාපනය කිරීමේ සම්මත ක්රමයක් නොවේ.
super().proxy_headers(proxy) සමඟ ආරම්භ කරන්න. URL එකක් Basic ගිණුමක් ලබා දෙන විට Requests එම ක්රමය භාවිතා කර Proxy-Authorization උත්පාදනය කරයි. සම්පූර්ණ ප්රතිඵලය ප්රතිස්ථාපනය කිරීමෙන් එම හැසිරීම අහිමි විය හැක.
ඇඩැප්ටරය මෙම අගයන් urllib3 හි ProxyManager වෙත යවයි. HTTPS උමං මාර්ගයක ඒවා CONNECT සමඟ යයි. සාමාන්ය ඉල්ලීම්-ශීර්ෂ සිතියම පසුව ගමනාන්ත ඉල්ලීම විස්තර කරයි.
ප්රොක්සි කළමනාකරුවන් ප්රොක්සි URL අනුව හැඹිලිගත කෙරේ. සෑම ඇමතුමකදීම වෙනස් විය යුතු අගයක් සඳහා මෙම කොක්ක හැඹිලි නොකළ එක් එක් ව්යාපාරික ඉල්ලීම් කොල්බෑක් ලෙස නොසලකන්න. ගිණුම් සලකුණ වෙනස් වන විට ඒ අනුව ප්රවාහන හිමිකම තෝරන්න.
සරල HTTP යැවීමේදී ප්රොක්සි ක්ෂේත්රවලට තවමත් මැදිහත්කරු අපේක්ෂිත පරිභෝජන ප්රතිපත්තිය අවශ්ය වේ. සේවාදායක API තුළ ශීර්ෂය ප්රොක්සි-විශේෂිත වීම රහස්යභාවයේ සහතිකයක් නොවේ, ප්රොක්සිය එය ඉදිරියට යවන්නේ නම්.