Requests-тің HTTPAdapter.proxy_headers көмегімен прокси тақырыптарын орнату
Прокси анықтайтын өріс үшін 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)-ден бастаңыз. URL Basic тіркелгісін бергенде Requests осы әдіспен Proxy-Authorization жасайды. Бүкіл нәтижені ауыстыру бұл мінез-құлықтан айыруы мүмкін.
Адаптер бұл мәндерді urllib3-тің ProxyManager құрылымына береді. HTTPS туннелінде олар CONNECT-ке ілеседі. Кәдімгі сұрау тақырыптарының сәйкестендіруі кейінгі мақсат сұрауын сипаттайды.
Прокси менеджерлері прокси URL-і бойынша кэштеледі. Әр шақыруда өзгеруі тиіс мән үшін бұл ілгекті кэштелмеген, әр бизнес сұрауға арналған кері шақыру деп санамаңыз. Тіркелгі белгісі өзгергенде көлік иелігін соған сәйкес таңдаңыз.
Қарапайым HTTP қайта жіберу кезінде прокси өрістеріне әлі де делдалдың көздеген тұтыну саясаты қажет. Тақырыптың клиент API-інде проксиге тән болуы, прокси оны әрі қарай жіберсе, құпиялылық кепілі емес.