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=976419031http://www.amazon.in/electronics/b?ie=UTF8&node=976419031>>> lochttp://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响应)。



