我想使用mwclient编辑HTTPS后面的内部wiki。 This page表示您可以传递这样的主机元组:
site = mwclient.Site(('https','wiki.whatever.com'))
但是我没有看到如何使用Apache进行身份验证。您是否需要使用身份验证设置urllib2 opener处理程序?
可以使用与python-wikitools一起使用的解决方案,但也缺少https示例。
更新: 也许它使用与您用于登录Wiki时相同的用户ID和密码?在这种情况下,我仍然会收到错误:
Traceback (most recent call last): File "C:\ddc\DDC_Toolbox\python_root\apps\create_new_project\trunk\create_new_project.py", line 36, in <module> site = mwclient.Site(('https',url)) File "C:\bin\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\client.py", line 92, in __init__ self.site_init() File "C:\bin\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\client.py", line 100, in site_init siprop = 'general|namespaces', uiprop = 'groups|rights') File "C:\bin\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\client.py", line 165, in api info = self.raw_api(action, **kwargs) File "C:\bin\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\client.py", line 248, in raw_api json_data = self.raw_call('api', data).read() File "C:\bin\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\client.py", line 223, in raw_call url, data = data, headers = headers) File "C:\bin\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\http.py", line 226, in post path, headers, data) File "C:\bin\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\http.py", line 161, in post return self.request('POST', host, path, headers, data) File "C:\bin\Python27\lib\site-packages\mwclient-0.6.5-py2.7.egg\mwclient\http.py", line 152, in request raise errors.HTTPStatusError, (res.status, res) mwclient.errors.HTTPStatusError: (401, <httplib.HTTPResponse instance at 0x0241C0D0>)
答案 0 :(得分:1)
好吧,mwclient
不使用urllib2,因此安装urllib2 AuthHandler将无法执行任何操作。
它正在使用httplib
,并且从快速查看源代码,似乎无法将自己的标头添加到库发送的请求中,因此添加自定义授权标头将无效修改库本身。
python-wikitools
使用urllib2
,但instantiates it's own opener,并且为了能够为其添加auth处理程序,您还需要修改库 -
所以,不幸的是,两个api都不允许您使用开箱即用的身份验证。
答案 1 :(得分:0)
我已经能够为python-wikitools添加HTTPS身份验证。我将看到如何将补丁上传到包的维护者。