【问题标题】:How do I ask for an authenticated url directly with python如何直接使用 python 请求经过身份验证的 url
【发布时间】:2009-10-12 13:57:54
【问题描述】:

我想使用 urllib2 访问经过身份验证的页面。我希望有一个黑客可以直接做到这一点。类似:

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

如果没有,我该如何使用身份验证?

【问题讨论】:

    标签: python authentication urllib2


    【解决方案1】:

    这取决于所使用的身份验证类型。

    • 一个简单的例子是Http Authentication
    • 如果网站使用 cookie 进行身份验证,您需要添加 cookiejar 并通过 http 登录
    • 还有更多的身份验证方案,所以找出你需要的。

    【讨论】:

    • 我将使用 python 文档中的示例
    【解决方案2】:

    AFAIK,没有简单的方法可以做到这一点。基本上,您发出请求,服务器以所需的 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 对象,创建一个 opener 对象,最后使用 opener 获取 url。此处提供代码和教程:http://www.voidspace.org.uk/python/articles/urllib2.shtml#id5

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多