2012-05-28 106 views
0

我想使用mwclient编辑HTTPS后面的内部wiki。 This page建议,你可以在一台主机的元组这样的传递:mwclient如何访问https后面的wiki?

网站= mwclient.Site(( 'https' 时, 'wiki.whatever.com'))

但是我不知道了解如何使用Apache进行身份验证。你是否需要使用身份验证设置urllib2开启者处理程序?

与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

实际上,我认为mwclient支持HTTPS,但不支持身份验证。 –

回答

1

好,mwclient不使用的urllib2,所以安装一个urllib2的AuthHandler不会做任何事情。

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

python-wikitools,另一方面采用urllib2,但instantiates it's own opener,并且能够成为auth处理程序添加到这一点,你想也需要修改库 -

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

+0

它在我看来'python-wikitools'使用'urllib2'。在你发送的链接中,导入'urllib2'而不是'httplib2'。 –

+0

是的,当然我修饰'urllib2',与所有的图书馆有点混淆:) – mata

0

我已经能够将HTTPS身份验证添加到python-wikitools。我会看到有关将修补程序上传到包的维护者的信息。