កំណត់បឋមកថាប្រូកស៊ីដោយ 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 អតិថិជនមិនមែនជាការធានាភាពសម្ងាត់ទេ ប្រសិនបើប្រូកស៊ីបញ្ជូនវាបន្ត។