使用启用2factor身份验证的python脚本从nextcloud下载文件

2024-06-16 11:45:03 发布

您现在位置: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”:“当前用户未登录”}

当我将上面的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,只是想看看我是否可以用它创建一个testfolder(它来自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请求库结合使用,也不知道如何获得使用它的双因素授权。有人这样做过吗

非常感谢您的帮助,非常感谢


Tags: 实例用户httpsimportcomauth身份验证index
1条回答
网友
1楼 · 发布于 2024-06-16 11:45:03

通过为单个应用程序生成安全密码,可以绕过双因素身份验证

在下一个云中,转到:设置->;个人->;安全性->;创建新的应用程序密码

密码将向您显示一次(并且仅显示一次),请使用它代替脚本中的常规密码

相关问题 更多 >