python - 如何在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)
解决方案
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
部分不是必需的。
推荐阅读
- ruby-on-rails - 我如何在 Rails 中使用子域将用户重定向到他们的域
- html - 如何将内容包装在 div 中?
- spring-integration - 缩放文件轮询器 | 弹簧集成
- c# - 如何在 Pivot Control UWP 上启用拖放
- vue.js - Vuejs多个文件上传一次只上传1个文件
- javascript - React API 错误(未处理的拒绝(TypeError):无法读取未定义的属性“0”)
- node.js - Node.js + Sequelize + SQL Server
- python - AttributeError:“numpy.float64”对象没有属性“值”
- c# - 为什么 typeA == typeB 比 typeA == typeof(TypeB) 慢?
- javascript - JavaScript:在 AWS Lambda 节点应用程序中将 RSS 转换为 JSON