urllib3 менен прокси IP колдонуу
HTTP прокси үчүн ProxyManager тандап, urllib3 жооп талааларын караңыз жана кайра аракеттер менен SOCKSтун өзүнчө башкаргычын эске алыңыз.
Чакан urllib3 прокси диагностикасы үчүн кайра аракеттери өчүрүлгөн ProxyManager колдонуңуз. Бул иштебей калган жазууну узак кайталоонун ордуна биринчи аракетти көрсөтөт. uv башкарган долбоордо:
uv add urllib3Документтеги акыркы чекитти кызматыңыздагы же HTTP проксилердин тизмесиндеги HTTP прокси менен алмаштырып, суроону ошол башкаргыч аркылуу аткарыңыз:
import urllib3
proxy = urllib3.ProxyManager(
"http://203.0.113.10:8080",
timeout=urllib3.Timeout(connect=5, read=10),
retries=False,
)
try:
response = proxy.request("GET", "https://example.com/")
print(response.status)
print(response.data.decode("utf-8", errors="replace")[:200])
finally:
proxy.clear()
Адегенде response.status окуп, анан response.data караңыз. Булар urllib3 талаалары; Requests стилиндеги status_code менен text аларды алмаштырбайт. Сайттын баш тартуусу иштеген прокси аркылуу келиши мүмкүн. Ал эми жоопко чейинки өзгөчөлүк суроо бүтпөгөнүн билдирет.
retries=False — диагностикалык тандоо, өндүрүш чөйрөсүнүн кайра аракет саясаты эмес. Туташуудагы 5 секунд жана окуудагы 10 секунд өз баскычтарын чектейт; алар кепилденген жалпы 15 секунддук мөөнөт бербейт. DNS жана жооптун жүрүшү жалпы күтүүгө таасир этет.
Мисал денени алдын ала жүктөп, аягында башкаргычтын байланыш топторун тазалайт. Ошол чекит аркылуу кайталанган суроолордо байланыш кайра колдонулушу үчүн башкаргычты иш бүткүчө сактаңыз. preload_content=False режимине өтүү жашоо циклин өзгөртөт: чакыруучу агымдык жоопту окуп, бошотушу керек.
Башкаргычты угуп турган кызматка ылайык тандаңыз. Кадимки PoolManager URL башка жерде сакталганы үчүн прокси колдонгон болуп калбайт; SOCKS urllib3.contrib.socks.SOCKSProxyManager жана анын кошумча көз карандылыктарын колдонот. Жогорудагы код HTTP ProxyManager жолу менен жүрөт.