【发布时间】:2014-12-21 05:06:15
【问题描述】:
我正在编写一个使用请求自动访问特定网站的 Python 2.7 脚本。出于“安全原因”,该网站要求提供与请求 URL 匹配的Referer 标头。 URL 由 params dict 中的多个项目构成,并传递给 requests.post()。
有没有办法在发出请求之前确定 Requests 将使用的 URL 是什么,以便可以将 Referer 标头设置为这个正确的值?假设我有很多参数:
params = { 'param1' : value1, 'param2' : value2, # ... etc
}
base_url = "http://example.com"
headers = { 'Referer' : url } # but what is 'url' to be?
requests.post(base_url, params=params, headers=headers) # fails as Referer does not match final url
我想一种解决方法是在事后发出请求并查看 URL 是什么。然而,这有两个问题 - 1. 它增加了脚本执行时间的大量开销,因为会有很多这样的请求,以及 2. 它实际上不是一个有用的解决方法,因为服务器实际上将请求重定向到另一个URL,因此之后阅读它不会给出正确的 Referer 值。
我想指出,我有这个脚本与 urllib/urllib2 一起工作,我正在尝试用 Requests 来编写它,看看它是否可能并且可能更简单。这不是脚本必须遵循的复杂过程,但可能稍微超出了请求的范围。没关系,我只是想确认一下。
【问题讨论】:
标签: python python-requests http-referer referer