首页 > 解决方案 > 如何在python中使用代理服务器和dokuwiki模块

问题描述

我正在尝试编写一个应用程序来简化我的 HP 磁盘更换过程。

我们使用 dokuwiki 来跟踪案例,我想用 python 实现它,以便在更换磁盘时自动完成。不幸的是,我们必须使用代理来访问 dokuwiki 链接,而我在 python 中找不到使用它的方法。

因此,当我尝试在 python IDE 中运行以下命令时,即使我也在 venv 中设置了 http/https_proxy,我总是会收到错误消息。

在[20]中:wiki = dokuwiki.DokuWiki(' https://172.xx.xx.xx/doku.php?id=xx:xx ', '用户名', '密码')

运行命令时我希望没有错误,但我得到以下信息:

----> 1 wiki = dokuwiki.DokuWiki(' https://172.xx.xx.xx/doku.php?id=xx:xx ', '用户名', '密码') ...... ......

......

SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:自签名证书 (_ssl.c:1056)

标签: pythonproxydokuwiki

解决方案


SSL certificates是针对FQDN(完全合格的域名)颁发和验证的,因此如果您https与 一起使用IP address,则无法验证证书。如果可以,请通过 wiki 访问您的 wiki,FQDN并确保证书有效。

否则,您可以禁用证书验证(这不是一个很好的安全实践)。由于额外的参数直接传递给xmlrpc.client.ServerProxy对象,这样的事情应该可以工作:

import dokuwiki
import ssl

wiki = dokuwiki.DokuWiki('https://172.xx.xx.xx', 'username', 'password', context=ssl._create_unverified_context())

注意:dokuwiki模块还附加了XMLRPC URI( /lib/exe/xmlrpc.php) 本身,因此该/doku.php?id=xx:xx部分不是必需的。


推荐阅读