【问题标题】:Sensing password protected sites when using urllib in python在 python 中使用 urllib 时检测受密码保护的站点
【发布时间】:2011-08-12 15:57:15
【问题描述】:

您好,我正在检索一长串图像的 url(例如site.com/pic.jpg),以便用于我的程序(在 Python v2.6 中)。我正在使用urllib.urlretreive()。有时 URL 会提示我输入用户名和密码。所以我把urllib.urlretreive()放在try/except中以避免这些url,但我仍然需要插入一个假的用户名和密码来提示触发try/except的错误以跳过该url。有没有一种方法可以在有密码请求时感知并自动跳过 url?这是一个很长的列表,我不想一直在这里等待偶尔推入...谢谢

【问题讨论】:

  • 在许多情况下,您可以从 HTTP 标头中获取此信息。

标签: python error-handling urllib


【解决方案1】:

如果站点具有 HTTP 身份验证,您需要在请求中添加一个标头以插入用户名和密码(假的或其他)。以下是使用urllib2 执行此操作的方法。

import base64
import urllib2

headers = {'Authorization': 'Basic ' + base64.encodestring('[username]:[password]')}
req = urllib2.Request(url, data, headers)
resp = urllib2.urlopen(req).read()

如果用户名/密码不正确,这将返回urllib2.HTTPError: HTTP Error 401: Unauthorized,但如果不需要,服务器将忽略身份验证。

【讨论】:

  • 啊,抱歉,这是您希望 POST 到服务器的任何数据(如果有)。如果没有,可以使用空字符串。
猜你喜欢
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
  • 2011-07-22
  • 2013-02-20
  • 1970-01-01
  • 2020-11-25
相关资源
最近更新 更多