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

អត្ថបទពាក់ព័ន្ធ