Python 如何使用 Cyber​​duck 凭据访问 WebDAV

How to use Cyberduck Credentials to Access WebDAV with Python

我以前从未使用过 WebDav,但我下载了 Cyber​​duck 并用它连接到内部工作驱动器并下载了一个整个目录到我的桌面。但是,由于我还无法确定的原因,我 运行 遇到一些文件无法下载的随机错误。我相信这与网络有关,而不是 Cyber​​duck.

我遇到的问题是 Cyber​​duck 没有记录错误,而且似乎没有非常强大的错误和异常处理。

我想通过 python 程序 运行 相同的过程,这样我就可以记录错误。

但是,我尝试过的库无法连接。我确定问题是用户错误。

我试过 easywebdav and webdavclient3,但我似乎无法复制连接。

对于 easywebdav 我试图模仿我为 Cyber​​duck 输入的信息(见下图),如下所示:

import easywebdav

webdav = easywebdav.connect(host='drive.corp.amazon.com', 
                            username='username', 
                            port=443, 
                            protocol='https', 
                            password='password')

print(webdav.ls())

但这不起作用。

我试过将 host 参数更改为 https://username@drive.corp.amazon.com/mnt/... 但也没有成功。知道我做错了什么吗?

似乎 Cyber​​duck 配置为使用 NTLM 身份验证,但默认情况下请求使用基本身份验证。

要使用 NTLM 身份验证连接到 WebDAV 服务器,您可以使用实现它的第 3 方库,例如 requests-ntlm:

from webdav3.client import Client
from requests_ntlm import HttpNtlmAuth

options = {
 'webdav_hostname': "https://webdav.server.ru"
}

client = Client(options)
# Configure authentication method 
client.session.auth = HttpNtlmAuth('domain\username','password')