В 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 в транспорт браузера.

Похожие статьи