Requests-HTML 0.10.0:为 render() 配置 Chromium 代理
当旧的 Requests-HTML 页面在 render() 之前成功、之后失败时,同时配置 Chromium 启动参数和 Requests。
在 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 连接变成浏览器的传输通道。