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 はセッションの公開コンストラクタ入力です。Requests の proxies 辞書はそれらの Chromium 引数を埋めません。

Requests の socks5h:// という表記もそのまま Chromium にコピーできるわけではありません。Chromium は socks5:// を受け付け、SOCKS5 の宛先名をプロキシ経由で解決し、SOCKS5 のユーザー名とパスワードによる認証はサポートしません。

render(reload=False) はページの URL へ移動する代わりに既存の HTML をブラウザに渡します。スクリプトやサブリソースは引き続きリクエストを送れます。その応答を意図的に描画したい場合に有用ですが、Requests の接続をブラウザの通信経路に変えるものではありません。

関連記事