我已经阅读了几个类似的主题,但还没有成功。我觉得我错过或误解了一些基本的东西,这就是我失败的原因。
我有一个用 python 编写的“应用程序”,我想在标准 setup.py 的帮助下进行部署。由于功能复杂,它由不同的 python 模块组成。但是单独发布这些模块是没有意义的,因为它们太具体了。
预期结果是将软件包安装在系统中,pip install并且可以通过简单app命令从操作系统命令行获得。
将长篇故事简化为可重现的示例 - 我有以下目录结构:
<root>
?? app
| ?? aaa
| | ??? module_a.py
| ?? bbb
| | ??? module_b.py
| ??? app.py
?? docs
| ??? .....
?? tests
| ??? .....
?? setup.py
Run Code Online (Sandbox Code Playgroud)
下面是模块代码:
app.py
#!/usr/bin/python
from aaa.module_a import method1
from bbb.module_b import method2
def main():
print("APP main executed")
method1()
method2()
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
模块_a.py
def method1():
print("A1 executed")
Run Code Online (Sandbox Code Playgroud)
模块_b.py
def method2(): …Run Code Online (Sandbox Code Playgroud) 首先,我用谷歌搜索了这个问题,但发现了一些通用的解释,这些解释并没有让我很好地理解如何做事情。
其次 - 我是有效的系统用户(不是管理员)并且有权访问数据。即,我拥有有效的用户凭据,并且可以手动下载文件,但对于小型自动化,我希望通过 python 脚本从我的 PC 下载文件。
下载本身很简单,唯一的事情是 - 我需要在请求中提供有效的会话 ID cookie。即最后我需要通过最简单的方式获取这个cookie。
如果我对 SAML 的理解是正确的,我是一个用户代理,想要从服务提供商下载一个文件,该文件需要通过身份提供商(Microsoft)对我进行身份验证。通常我通过浏览器执行此操作,现在我可以在 PySide6 (QWebEngineView) 的帮助下模拟它。我首先在 QWebEngineView 中加载目标 URL。实际上,它是一个小型嵌入式 Web 浏览器,它将我重定向到 login.microsoft.com,询问凭据,然后将我重定向回服务提供商站点并设置会话 ID cookie。然后我就可以在我的请求中使用这个 cookie。它有效,但如果可能的话我想摆脱 GUI (PySide)。
我决定复制浏览器的流程,但几乎一开始就失败了。会发生什么:
我知道当我再次使用 302 响应的“位置”标头中提供的 URL 时,我应该添加更多标头/cookie。但是...我不知道login.microsoft.com 在这里期望什么。所以我的问题是 - 是否有任何描述此消息流的来源?或者也许有人已经这样做了,可以给我如何继续的建议?
我发现了一些与 SAML 相关的 python 库,但我发现 x509 证书和更多内容的配置非常复杂 - …