使用启用了 2 因素身份验证的 python 脚本从 nextcloud 下载文件
Downloading files from nextcloud with python script with 2-factor authentication enabled
我设置了一个 nextcloud 实例,我想使用 python 脚本从那里下载文件。我的 nextcloud 实例对所有用户强制执行双因素身份验证,我希望它保持这种状态。
我梦想的场景是使用 requests
库,所以按照这里的文档 https://docs.nextcloud.com/server/15/developer_manual/client_apis/WebDAV/basic.html ,我尝试做这样的事情:
from requests.auth import HTTPBasicAuth
r = requests.request(
method='get',
url='https://mycloudinstance/index.php/apps/files/?dir=/Test&fileid=431',
auth=('username', 'pass')
)
print(r.status_code)
print(r.text)
这给了我一个 401 错误,说 {"message":"Current user is not logged in"}。
当我将上面的 URL 更改为 https://remote.php/dav/myinstance/index.php/apps/files/?dir=/Test&fileid=431 我得到
ConnectionError(': Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known'))
作为替代方案,我尝试尝试使用这个库 https://github.com/owncloud/pyocclient 只是为了看看我是否可以用它创建一个测试文件夹(它来自 owncloud 但也应该与 nextcloud 一起工作):
import owncloud
oc = owncloud.Client('https://mycloudinstance')
oc.login('username', 'pass')
oc.mkdir('cooldir')
这会引发 owncloud.owncloud.HTTPResponseError: HTTP error: 401
错误。我认为这可能是因为我使用不当或因为 2 因素身份验证。
我不确定如何将 webdav 协议与 python 请求库结合使用,而且我也不确定如何获得双重授权才能使用它。有人做过吗?
非常感谢您的帮助,在此先致谢。
您可以通过为单个应用程序生成安全密码来绕过双因素身份验证。
在下一个云中,转到:设置 -> 个人 -> 安全 -> 创建新的应用程序密码
密码将显示给您一次(且仅显示一次),请在您的脚本中使用它代替您的普通密码。
我设置了一个 nextcloud 实例,我想使用 python 脚本从那里下载文件。我的 nextcloud 实例对所有用户强制执行双因素身份验证,我希望它保持这种状态。
我梦想的场景是使用 requests
库,所以按照这里的文档 https://docs.nextcloud.com/server/15/developer_manual/client_apis/WebDAV/basic.html ,我尝试做这样的事情:
from requests.auth import HTTPBasicAuth
r = requests.request(
method='get',
url='https://mycloudinstance/index.php/apps/files/?dir=/Test&fileid=431',
auth=('username', 'pass')
)
print(r.status_code)
print(r.text)
这给了我一个 401 错误,说 {"message":"Current user is not logged in"}。
当我将上面的 URL 更改为 https://remote.php/dav/myinstance/index.php/apps/files/?dir=/Test&fileid=431 我得到
ConnectionError(': Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known'))
作为替代方案,我尝试尝试使用这个库 https://github.com/owncloud/pyocclient 只是为了看看我是否可以用它创建一个测试文件夹(它来自 owncloud 但也应该与 nextcloud 一起工作):
import owncloud
oc = owncloud.Client('https://mycloudinstance')
oc.login('username', 'pass')
oc.mkdir('cooldir')
这会引发 owncloud.owncloud.HTTPResponseError: HTTP error: 401
错误。我认为这可能是因为我使用不当或因为 2 因素身份验证。
我不确定如何将 webdav 协议与 python 请求库结合使用,而且我也不确定如何获得双重授权才能使用它。有人做过吗?
非常感谢您的帮助,在此先致谢。
您可以通过为单个应用程序生成安全密码来绕过双因素身份验证。
在下一个云中,转到:设置 -> 个人 -> 安全 -> 创建新的应用程序密码
密码将显示给您一次(且仅显示一次),请在您的脚本中使用它代替您的普通密码。