在 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) 把现有 HTML 交给浏览器,而不是导航到页面 URL。脚本和子资源仍然可以发起请求。当需要刻意渲染该响应时它很有用,但它不会把 Requests 连接变成浏览器的传输通道。

相关文章