Itakda ang mga header ng proxy gamit ang HTTPAdapter.proxy_headers ng Requests
Palawakin ang HTTPAdapter.proxy_headers para sa field na tinutukoy ng proxy habang pinapanatili ang umiiral na pagbuo ng proxy-authentication header ng Requests.
Para sa header na tinutukoy ng operator ng proxy, inilalantad ng Requests ang HTTPAdapter.proxy_headers bilang override point:
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,
)
Ang X-Proxy-Account ay halimbawa ng field na nauunawaan ng partikular na proxy na ito, hindi isang karaniwang paraan ng pag-authenticate sa bawat tagapamagitan.
Magsimula sa super().proxy_headers(proxy). Ginagamit ng Requests ang paraang iyon upang bumuo ng Proxy-Authorization kapag ang URL ay nagbibigay ng Basic account. Ang pagpapalit ng buong resulta ay maaaring mawala ang ganoong pag-uugali.
Ipinapasa ng adapter ang mga halagang ito sa ProxyManager ng urllib3. Sa isang HTTPS tunnel, sumasama sila sa CONNECT. Inilalarawan ng karaniwang pagmamapa ng request header ang susunod na kahilingan sa destinasyon.
Ang mga manager ng proxy ay naka-cache ayon sa URL ng proxy. Huwag ituring ang hook na ito bilang hindi naka-cache na callback kada kahilingang pangnegosyo para sa halagang dapat magbago sa bawat tawag. Piliin ang pagmamay-ari ng transport nang naaayon kapag nag-iiba ang marker ng account.
Sa simpleng HTTP forwarding, kailangan pa rin ng mga field ng proxy ang inilaan na patakaran sa paggamit ng tagapamagitan. Ang pagiging partikular sa proxy ng header sa client API ay hindi garantiya ng pagiging kompidensyal kung ipapasa ito ng proxy.