0

urllib2 を使用して認証済みのページにアクセスしたい。直接行うためのハックがあることを願っています。何かのようなもの:

urllib2.urlopen('http://username:pwd@server/page')

そうでない場合、認証を使用するにはどうすればよいですか?

4

2 に答える 2

2

使用する認証の種類によって異なります。

  • 簡単な例はHttp 認証です。
  • サイトが認証に Cookie を使用している場合は、cookiejarを追加して http 経由でログインする必要があります。
  • 他にも多くの認証スキームがあるため、必要なものを見つけてください。
于 2009-10-12T14:07:20.987 に答える
1

私の知る限り、これを行う簡単な方法はありません。基本的に、リクエストを行うと、サーバーは必要な 401 認証で応答し、urllib2 はこれを例外に変換します。

  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python25\lib\urllib2.py", line 124, in urlopen
    return _opener.open(url, data)
  File "C:\Python25\lib\urllib2.py", line 387, in open
    response = meth(req, response)
  File "C:\Python25\lib\urllib2.py", line 498, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python25\lib\urllib2.py", line 425, in error
    return self._call_chain(*args)
  File "C:\Python25\lib\urllib2.py", line 360, in _call_chain
    result = func(*args)
  File "C:\Python25\lib\urllib2.py", line 506, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
  urllib2.HTTPError: HTTP Error 401: Authorization Required 

この例外をキャッチし、urllib2.HTTPPasswordManager オブジェクトを作成し、ユーザー名とパスワードを HTTPPasswordManager に追加し、urllib2.HTTPBasicAuthHandler オブジェクトを作成し、オープナー オブジェクトを作成し、最後にオープナーを使用して URL をフェッチする必要があります。コードとチュートリアルはこちらから入手できます: http://www.voidspace.org.uk/python/articles/urllib2.shtml#id5

于 2009-10-12T14:14:58.520 に答える