0

ここで受け取った回答の 1 つで、自分が登録ユーザーでアカウントを持っている Web サイトに自分の ID とパスワードを「Google App Engine」を介して自動的に渡す方法がわからないという問題に遭遇しました。「401 の HTTP ステータス コード、「承認が必要」を確認し、サイトが要求している種類の HTTP 承認 (基本、ダイジェストなど) を提供するようにという提案が私に与えられました。ステータスコードの確認方法がわかりません。どなたか、やり方を教えていただけないでしょうか。

+++++++++++++++++++++++++++++++++++

追加情報:

Google App Engine でこの方法を使用した場合 (eBay の概要ページの URL を取得):

from google.appengine.api import urlfetch
url = "http://my.ebay.com/ws/eBayISAPI.dll?MyEbay&gbh=1&CurrentPage=MyeBaySummary&ssPageName=STRK:ME:LNLK"
result = urlfetch.fetch(url)
if result.status_code == 200:
   print "content-type: text/plain"
   print
   print result.status_code

「401」ではなく「200」が常に表示されます

4

4 に答える 4

3

通常の Python コードでは、おそらく下位レベルのhttplibを使用します。たとえば、次のようになります。

import httplib

domains = 'google.com gmail.com appspot.com'.split()

for domain in domains:
  conn = httplib.HTTPConnection(domain)
  conn.request('GET', '/')
  resp = conn.getresponse()
  print 'Code %r from %r' % (resp.status, domain)

これにより、301 (恒久的に移動) や 302 (一時的に移動) などのコードが表示されます。urllib2これは便利ですが、簡単に制御するのが難しくなります (独自の「url オープナー」オブジェクトなどをインストールする必要があります) 。

App Engine では、属性を持つ応答オブジェクトを返すurlfetchを使用した方がよいでしょう。その属性が 401 の場合は、ヘッダーに適切な種類の認証情報を指定してフェッチ繰り返す必要があることを意味します。status_code

ただし、App Engine は urllib2 もサポートするようになったため、このより高いレベルの抽象化の使用に慣れている場合は、それに作業を委任できます。基本認証を urllib2 に委譲する方法に関するチュートリアルについては、こちらを参照してください。また、基本認証がどのように機能するかについてのより一般的なチュートリアルについては、こちらを参照してください(抽象化の下位層で何が起こっているかを理解することは、たとえ上位層を使用している場合でも役立つと思います)。層!-)。

于 2009-12-14T16:24:17.837 に答える
1

そのサイトは常に 401 ではなく 200 を返しているため、401 を取得していません。通常、ウェブサイトに対して行うコーディングのタイプは、「ログインしてください..何とか何とかしてください」というページで200を返すことです。サイトが200以外の何かを返した場合、ブラウザはファンキーなエラーメッセージを表示しません.

つまり、他の質問で述べたように、ログインページを調べて、ログイン= xxx、パスワード= yyyなどのパラメーターを使用し、そのページに投稿して、Cookieも管理する必要があることを確認する必要があります。ツイルなどのライブラリーが映えます。

于 2009-12-15T04:46:38.237 に答える
1

Unless I don't understand fully your question, you can grab the return code from the Response Object using the status_code property.

First, you'll have to issue a fetch() to the URL you want to test.

于 2009-12-14T15:54:58.957 に答える
1

ほとんどのユーザー指向のサイトは HTTP 認証を使用せず、代わりに Cookie ベースの認証を使用し、サインインに HTML フォームを使用します。これを独自のコードで複製したい場合は、問題のアプリケーションのログイン URL に対して HTTP POST リクエストを作成し、返された Cookie を取得する必要があります。これには、今後のすべてのリクエストで自分自身を認証するための Cookie も含まれます。認証しようとしている特定のサイトに関する詳細がなければ、より具体的にすることは困難です。

于 2009-12-14T23:14:42.263 に答える