让 MechanicalSoup 的表单提交走同一条代理路由
把配置好的 Requests 会话挂到 StatefulBrowser 上,使打开页面与提交表单共用同一条路由和 Cookie。
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 认证。如果流程需要这些,就显式提供;或者在选择其他策略时把环境因素考虑进去。