ຕັ້ງຫົວຂໍ້ພຣັອກຊີດ້ວຍ HTTPAdapter.proxy_headers ຂອງ Requests
ຂະຫຍາຍ 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). Requests ໃຊ້ວິທີນັ້ນເພື່ອສ້າງ Proxy-Authorization ເມື່ອ URL ໃຫ້ບັນຊີ Basic. ການປ່ຽນຜົນລວມທັງໝົດອາດເຮັດໃຫ້ພຶດຕິກຳນັ້ນຫາຍໄປ.
ອາດາປເຕີສົ່ງຄ່າເຫຼົ່ານີ້ໄປຍັງ ProxyManager ຂອງ urllib3. ໃນອຸໂມງ HTTPS ພວກມັນໄປກັບ CONNECT. ການແມັບຫົວຂໍ້ຄຳຂໍປົກກະຕິອະທິບາຍຄຳຂໍປາຍທາງທີ່ມາຫຼັງ.
ຜູ້ຈັດການພຣັອກຊີຖືກເກັບໄວ້ຕາມ URL ພຣັອກຊີ. ຢ່າຖືວ່າຕະຂໍ້ນີ້ເປັນການເອີ້ນກັບທີ່ບໍ່ເກັບໄວ້ສຳລັບແຕ່ລະຄຳຂໍທຸລະກິດສຳລັບຄ່າທີ່ຕ້ອງປ່ຽນທຸກຄັ້ງທີ່ເອີ້ນ. ເລືອກຄວາມເປັນເຈົ້າຂອງການຂົນສົ່ງໃຫ້ສອດຄ່ອງເມື່ອເຄື່ອງໝາຍບັນຊີປ່ຽນ.
ໃນການສົ່ງຕໍ່ HTTP ທຳມະດາ, ຟິວພຣັອກຊີຍັງຕ້ອງການນະໂຍບາຍການໃຊ້ທີ່ຕົວກາງຕັ້ງໃຈໄວ້. ການທີ່ຫົວຂໍ້ເປັນສະເພາະພຣັອກຊີໃນ API ຂອງລູກຄ້າບໍ່ແມ່ນການຮັບປະກັນຄວາມລັບຖ້າພຣັອກຊີສົ່ງມັນຕໍ່.