mwclient如何访问https后面的wiki?

时间:2012-05-28 19:26:08

标签: python mediawiki

我想使用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>)

2 个答案:

答案 0 :(得分:1)

好吧,mwclient不使用urllib2,因此安装urllib2 AuthHandler将无法执行任何操作。

它正在使用httplib,并且从快速查看源代码,似乎无法将自己的标头添加到库发送的请求中,因此添加自定义授权标头将无效修改库本身。

另一方面,

python-wikitools使用urllib2,但instantiates it's own opener,并且为了能够为其添加auth处理程序,您还需要修改库 -

所以,不幸的是,两个api都不允许您使用开箱即用的身份验证。

答案 1 :(得分:0)

我已经能够为python-wikitools添加HTTPS身份验证。我将看到如何将补丁上传到包的维护者。