PRAW 接受一个支持 SOCKS 的 Requests 会话
为 PRAW 的 requestor 提供一个已配置的 Requests 会话,当需要由 SOCKS 服务器解析 Reddit 的目标名称时使用 socks5h。
通过 requestor_kwargs 为 PRAW 8.0.3 提供一个支持 SOCKS 的 Requests 会话:
import praw
import requests
session = requests.Session()
session.proxies.update({
'http': 'socks5h://proxy.example:1080',
'https': 'socks5h://proxy.example:1080',
})
reddit = praw.Reddit(
client_id=client_id,
client_secret=client_secret,
user_agent=user_agent,
requestor_kwargs={'session': session},
)
使用应用的 Reddit 凭据和 user agent,然后通过这个 reddit 实例发起 API 调用。通过应用常规的清理流程管理它的 requestor 和会话。
Requests 需要自身的 SOCKS 支持。socks5h 会把目标名称的解析交给代理;socks5 则在本地解析。
SOCKS5 代理列表中的公共端点可以提供此映射中的地址。先创建 Session(),再按所示更新它的 proxies 属性。它的构造函数没有 proxies 关键字。
所提供的会话会保留 Requests 的环境集成,因此继承来的代理和绕过设置可能影响路由选择。若要让路由完全由应用掌控,请检查 trust_env。禁用它还需要提供此前来自该环境的任何信任和认证输入。