2012-02-23 7 views
3

自分自身にリダイレクトするURLをロードしようとしています。私はクッキーの読み込みを想定していますが、それを探していますが、決してそれを見ないので、この無限ループのリクエストがあります。urlfetchがpythonの無限ループにリダイレクトされる

私は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) 

これは、シェルではなく、Google App Engineの上で動作します。 UrlFetchのためのドキュメントで:follow_redirects下 http://code.google.com/appengine/docs/python/urlfetch/fetchfunction.html

、それは言う: 「クッキーはCookie処理が必要な場合は、リダイレクト時に取り扱わFalseにfollow_redirectsを設定し、両方のクッキーを処理し、手動でリダイレクトされていません。」

私はこれを行う方法はわかりませんし、ドキュメンテーションは手がかりを与えてくれないようです。

私はこの問題から地獄を捜したが、このような報告された問題はありませんが、私の問題のために働いています。

+0

[こちらをご覧ください] .co.in/search?ix = sea&sourceid = chrome&ie = UTF-8&q = add + cookie + urlfetch +)。 – RanRag

答えて

5

もう少し説明します。少なくともウェブサイトの動作は説明されています。クッキーが必要な場合、クッキーが設定されていない場合は、クッキー設定のヘッダーで自身にリダイレクトされます。おそらくクッキーの仕組みを読んでおくべきでしょう。ウェブサイトはSet-Cookieヘッダーを使用してCookieを送信し、ブラウザはCookieヘッダーにそれをいくつかのバリエーションとともにエコーバックする必要があります。 Pythonには、クッキーのコレクションを管理するためのライブラリ、cookielibがあります。

ネイティブurlfetch APIを使用することをお勧めします。その戻りオブジェクトは、全てのヘッダ(例えば、Set-Cookieヘッダ)を与える辞書であるヘッダオブジェクトを有する。特定のヘッダーを送信するには、urlfetch.fetch()関数のheaders引数を使用します。ここでは、Cookieヘッダを使用する(ただし、設定されたCookieヘッダのフォーマットはあなたが受け取るSet-Cookieヘッダーのと同じではないことを覚えているだろう - 。cookielibの出番それはだ

幸運を

PS。curl -vを使用すると、実際にサイトが3つの異なるSet-Cookieヘッダーを送信していることが簡単に分かります。