Як выкарыстоўваць проксі ў Python Requests (HTTP/HTTPS і пулінг сесій)
Updated:
Бібліятэка requests для Python прымае проксі VinaProxy з аўтэнтыфікацыяй праз слоўнік proxies, які супастаўляе схемы 'http' і 'https' з http://user:pass@ip:port. Падключэнне гэтага слоўніка да пастаяннага requests.Session() паўторна выкарыстоўвае базавыя TCP-сокеты для хуткага вэб-скрэйпінгу з мінімальнымі накладнымі выдаткамі.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP40 000 ₫
- Ад 5 IP35 000 ₫
- Ад 10 IP25 000 ₫
- Ад 20 IP25 000 ₫
- Ад 50 IP25 000 ₫
- Ад 100 IP25 000 ₫
- Ад 200 IP25 000 ₫
- Ад 500 IP25 000 ₫
- Ад 1000 IP22 000 ₫
- Ад 2000 IP20 000 ₫
- 1 IP40 000 ₫
- Ад 5 IP35 000 ₫
- Ад 10 IP25 000 ₫
- Ад 20 IP25 000 ₫
- Ад 50 IP25 000 ₫
- Ад 100 IP25 000 ₫
- Ад 200 IP25 000 ₫
- Ад 500 IP25 000 ₫
- Ад 1000 IP22 000 ₫
- Ад 2000 IP20 000 ₫
Фарматаванне слоўніка proxies і паўторнае выкарыстанне Sessions
Выклік requests.get() для кожнага URL штораз стварае новае TCP-злучэнне і TLS-рукапацісканне. Прывязка проксі да session = requests.Session() трымае проксі-тунэль адкрытым паміж паслядоўнымі запытамі.
| Параметр Requests | Рэкамендаваны сінтаксіс | Тэхнічнае прызначэнне |
|---|---|---|
Ключ 'http' | 'http://user:pass@ip:port' | Накіроўвае звычайныя запыты HTTP праз проксі |
Ключ 'https' | 'http://user:pass@ip:port' | Выкарыстоўвае схему http://, каб urllib3 ствараў тунэль HTTP CONNECT для TLS |
Картэж timeout | timeout=(5, 15) | Таймаўт злучэння 5 с і таймаўт чытання 15 с прадухіляюць завісанне працоўных патокаў |
| Ратацыя пула | itertools.cycle(proxy_list) | Раўнамерна пераключае проксі з вашага пула выдзеленых статычных IP |
Як пазбегнуць тыповых памылак з urllib3 і ProxyError
- Заўсёды выкарыстоўвайце
http://(а неhttps://) у якасці схемы URL проксі для абодвух ключоў слоўніка'http'і'https', калі толькі порт вашага проксі яўна не патрабуе TLS-over-TLS - Кадзіруйце спецыяльныя сімвалы ў паролях для URL з дапамогай
urllib.parse.quote(password, safe='') - Памылка
407 Proxy Authentication Requiredазначае, што імя карыстальніка або пароль у радку URL не супадаюць з уліковымі дадзенымі ў вашай панэлі кіравання - Працуе ідэнтычна з
httpx.Client(proxy='http://user:pass@ip:port')іsession.get(url, proxy=...)уaiohttp
Крок за крокам
- 1
Пераўтварыце ip:port:user:pass у сінтаксіс URL
Скарыстайцеся нашым Канвертарам фарматаў проксі, каб пераўтварыць спіс VinaProxy у радкі
http://user:pass@ip:port. - 2
Вызначце слоўнік proxies
Задайце
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}у сваім скрыпце Python. - 3
Падключыце да асобніка requests.Session()
Ініцыялізуйце
s = requests.Session()і выклічцеs.proxies.update(proxies)для пастаяннага пулінгуKeep-Alive. - 4
Праверце выходны IP тэставым запытам
Выканайце
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json()), каб пацвердзіць актыўны IP проксі.
Частыя пытанні
Чаму для ключа 'https' выкарыстоўваецца 'http://user:pass@ip:port'?
Прэфікс http:// паведамляе urllib3, як падключацца да самога проксі-сервера (з дапамогай стандартнага HTTP CONNECT), у той час як ваш скразны трафік да мэтавага сайта https:// застаецца цалкам зашыфраваным праз TLS.
Як ратаваць 25 статычных проксі паміж запытамі ў Python?
Загрузіце 25 URL проксі ў pool = itertools.cycle(PROXIES) і перадавайце proxies={'http': p, 'https': p} для кожнага запыту з умераным абмежаваннем частаты на кожны IP.
Ці абмяжоўвае VinaProxy трафік для скрыптоў скрэйпінгу на Python?
Не. Усе тарыфныя планы Dedicated IPv4 і Static ISP уключаюць неабмежаваны штомесячны трафік.
Стварыце неабмежаваны пул для скрэйпінгу на Python
Імгненныя проксі Dedicated IPv4 і Static ISP у 7 краінах.
Купіць проксі для Python