Requests-HTML 0.10.0: настройка прокси Chromium для render()
Настройте аргументы запуска Chromium и Requests, когда старая страница Requests-HTML успешно работает до render() и даёт сбой после него.
В Requests-HTML 0.10.0 session.get() использует Requests, а response.html.render() запускает Pyppeteer и обычно снова направляет Chromium на URL страницы. Успешный первый ответ не задаёт маршрут браузера.
Для существующего совместимого старого окружения с HTTP-прокси без аутентификации:
from requests_html import HTMLSession
proxy_url = 'http://proxy.example:8080'
session = HTMLSession(browser_args=[
'--proxy-server=' + proxy_url,
])
try:
response = session.get(
'https://www.example.org/',
proxies={'https': proxy_url},
timeout=20,
)
response.html.render(timeout=20)
rendered = response.html.html
finally:
session.close()
В примере публичной страницы список HTTP-прокси даёт кандидатов для proxy_url. browser_args — это публичный вход конструктора сеанса. Словарь proxies в Requests не заполняет эти аргументы Chromium.
Запись socks5h:// из Requests тоже нельзя просто скопировать в Chromium. Chromium принимает socks5://, разрешает имена назначения SOCKS5 через прокси и не поддерживает аутентификацию SOCKS5 по имени пользователя и паролю.
render(reload=False) передаёт существующий HTML браузеру вместо перехода на URL страницы. Скрипты и подресурсы по-прежнему могут отправлять запросы. Это полезно, когда такой ответ нужно намеренно отрисовать, но не превращает соединение Requests в транспорт браузера.