urlfetch重定向到python中的无限循环
作者:互联网
我正在尝试加载重定向到自己的URL.我假设它加载一个cookie并且它正在寻找它,但它从未看到它所以有这种无限循环的请求.
我试过urllib2,urlfetch和httplib2.没有工作.
我试过这个:
url = "http://www.cafebonappetit.com/menu/your-cafe/collins-cmc/cafes/details/50/collins-bistro"
thing = urllib2.HTTPRedirectHandler()
thing2 = urllib2.HTTPCookieProcessor()
opener = urllib2.build_opener(thing, thing2)
url = 'http://www.nytimes.com/2005/10/26/business/26fed.html?pagewanted=print'
page = opener.open(url)
这适用于shell,但不适用于Google App Engine.在urlfetch的文档中:
http://code.google.com/appengine/docs/python/urlfetch/fetchfunction.html
在follow_redirects下,它说:
“重定向时不处理Cookie.如果需要cookie处理,请将follow_redirects设置为False并手动处理Cookie和重定向.”
我不知道如何做到这一点,文档似乎也没有提供任何线索.
我搜索了这个问题的地狱,并没有报告这样的问题适用于我的问题.
解决方法:
多一点解释.很高兴至少解释了网站的行为:它想要一些cookie,如果没有设置cookie,它会使用cookie设置头重定向到自己.您应该了解Cookie的工作原理;网站使用Set-Cookie标头发送cookie,浏览器必须在Cookie标头中回显(带有一些变化). Python有一个用于管理cookie集合的库,cookielib可以帮助你解决这个问题.
最好使用本机urlfetch API;它的返回对象有一个头对象,它是一个给出所有头的dict(例如Set-Cookie头).要发送特定标头,请使用urlfetch.fetch()函数的headers参数.在这里,您将使用Cookie标头(但请记住,您设置的Cookie标头的格式与您收到的Set-Cookie标头的格式不同 – 这就是cookielib的用武之地.
祝好运!
PS.使用curl -v很容易看出该网站实际上发送了三个不同的Set-Cookie标头.你可能不得不处理这三个问题.
标签:urlfetch,python,google-app-engine,redirect,infinite-loop 来源: https://codeday.me/bug/20190902/1790935.html