Amazon会将您的请求http://www.amazon.in/b?ie=UTF8&node=976419031
重定向到http://www.amazon.in/electronics/b?ie=UTF8&node=976419031
,然后将其重定向到,之后您进入一个循环:
>>> loc = url
>>> seen = set()
>>> while True:
... r = requests.get(loc, allow_redirects=False)
... loc = r.headers['location']
... if loc in seen: break
... seen.add(loc)
... print loc
...
http://www.amazon.in/b?ie=UTF8&node=976419031
http://www.amazon.in/electronics/b?ie=UTF8&node=976419031
>>> loc
http://www.amazon.in/b?ie=UTF8&node=976419031
因此,您的原始URL A不会重定向任何新的URL B,后者会重定向到C,它会重定向到B,依此类推。
显然,Amazon基于User-Agent标头执行此操作,此时,它设置了一个cookie,随后的请求应将其发送回去。以下作品:
>>> s = requests.Session()
>>> s.headers['User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36'
>>> r = s.get(url)
>>> r
<Response [200]>
这创建了一个会话(为了易于重用和cookie持久性),以及一个Chrome用户代理字符串的副本。请求成功(返回200响应)。