Прокси операторын тодорхойлсон толгойн хувьд 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-ээр кэшлэгддэг. Дуудлага бүрт өөрчлөгдөх ёстой утгын хувьд энэ дэгээг кэшгүй, бизнес хүсэлт бүрийн callback гэж бүү үзээрэй. Бүртгэлийн тэмдэг өөрчлөгдөх үед тээврийн эзэмшлийг түүнд нийцүүлэн сонгоно.

Энгийн HTTP дамжуулалтад прокси талбаруудад зуучлагчийн зорьсон хэрэглээний бодлого орсоор хэрэгтэй. Толгой нь клиентийн API-д прокси-тусгай байх нь прокси түүнийг цааш дамжуулбал нууцлалын баталгаа биш.

Холбоотой нийтлэлүүд