【问题标题】:Python requests failed with authorizationPython 请求因授权而失败
【发布时间】:2021-09-02 19:04:26
【问题描述】:

我正在尝试从该网站下载一些视频。所以当我在浏览器中输入网址时,网页会弹出一个小窗口,要求我输入用户名和密码。在我在那里输入它们后,文件会自动开始下载。但是当我尝试使用 requests.get 和 auth 参数来做同样的事情时,我得到了 404。

代码:

url = video_links[0]
print("url: ", url)

filename = os.path.basename(urlparse(url).path)
print('filename: ', filename)

r = requests.get(url, auth=(username, password))
print(r.status_code)

输出:

url:  http://datasets.d2.mpi-inf.mpg.de/movieDescription/protected/avi/0001_American_Beauty/0001_American_Beauty_00.00.51.926-00.00.54.129.avi

filename:  0001_American_Beauty_00.00.51.926-00.00.54.129.avi

404

popped window

我已尝试传递用户代理。仍然无法正常工作。

代码版本 2:

headers = {
    'User-Agent': 'Mozilla/something more',
}
with requests.Session() as s:
    r = s.get(url, headers=headers)
    print(r.content)

输出:

b'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n<html><head>\n<title>401 Unauthorized</title>\n</head><body>\n<h1>Unauthorized</h1>\n<p>This server could not verify that you\nare authorized to access the document\nrequested.  Either you supplied the wrong\ncredentials (e.g., bad password), or your\nbrowser doesn\'t understand how to supply\nthe credentials required.</p>\n<hr>\n<address>Apache/2.4.38 (Debian) Server at datasets.d2.mpi-inf.mpg.de Port 443</address>\n</body></html>\n'

【问题讨论】:

  • 嗨,HTTPBasicAuth 失败了吗?或许也可以将您的 user agent 设置为已知浏览器
  • 请将您的代码发布为文本。 Stack Overflow 不接受代码截图。
  • 显示此页面的真实 URL。你如何发送登录名和密码?也许浏览器以不同的方式发送它。或者浏览器可能使用一些 JavaScript 进行重定向 - 但 requests 无法运行 JavaScript。

标签: python python-requests download


【解决方案1】:

正如 jspcal 所说,现在一切正常。谢谢

r = requests.get(url, headers=headers, auth=HTTPBasicAuth('username', 'password'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    相关资源
    最近更新 更多