我试图绕过某个没有 API 的服务,并决定尝试 Mechanize(我通常使用 urllib)。
如何为一个open
呼叫添加特定标头?
或者有没有办法用自己的标头构造一个 Request 实例,然后让我的mechanize.Browser
实例处理它?
browser = mechanize.Browser()
headers = [
('Accept', 'text/javascript, text/html, application/xml, text/xml, */*'),
('Content-type', 'application/x-www-form-urlencoded; charset=UTF-8'),
('User-Agent', 'Foobar'),
]
browser.addheaders = headers
# log in, do stuff, etc.
# here, for this one browser request, I need to add an AJAX header
browser.open('/a_url_to_ajax_post/', urllib.urlencode({'foo': 'bar'}))
我的解决方法是临时修改 addheaders 列表,但哇,这很难看!
browser.addheaders.append(AJAX_HEADER)
browser.open('/admin/discounts', urllib.urlencode(pulled_params))
browser.addheaders.pop()