import mechanicalsoup
import requests

session = requests.Session()
session.trust_env = False
session.proxies.update({
    "http": "http://proxy.example.net:8080",
    "https": "http://proxy.example.net:8080",
})

browser = mechanicalsoup.StatefulBrowser(session=session)

在打开表单页之前先选好出口端点。对于允许使用公共代理的公开表单,可以从HTTP 代理列表中挑一个候选。按示例构建会话并传给 StatefulBrowser。用同一个浏览器完成 open、表单选择和 submit_selected;流程结束时用 browser.close() 关闭它。

这样代理策略和 Cookie 状态都留在贯穿整个交互的会话上。只在首次抓取时传入 proxies 参数,并不会自动为之后的提交配置代理。

trust_env = False 让本例的路由不受Requests 的环境代理设置影响。它同时关闭了基于环境的 CA 证书包选择和 .netrc 认证。如果流程需要这些,就显式提供;或者在选择其他策略时把环境因素考虑进去。

相关文章