在某些 Python CGI 脚本(在同一域,ofc)中使用 MediaWiki cookie 进行身份验证(尤其是 MW 的 OpenID)的最简单方法是什么?
也可以从 python 访问 MediaWiki 数据库。
最佳答案
将 Cookies 与 mediawiki 一起使用的一种非常简单的方法如下:
from cookielib import CookieJar
import urllib2
import urllib
import json
cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
现在,可以使用 opener 发出请求。例如:
login_data = {
'action': 'login',
'lgname': 'Example',
'lgpassword': 'Foobar',
'format': 'json'
}
data = urllib.urlencode(login_data)
request = opener.open('http://en.wikipedia.org/w/api.php',data)
content = json.load(request)
login_data['token'] = content['login']['token']
data_2 = urllib.urlencode(login_data)
request_2 = opener.open('http://en.wikipedia.org/w/api.php',data_2)
content_2 = json.load(request_2)
print content_2['login']['result']
在上面的示例中,如果未创建 Cookiejar,则登录将无法完全正常工作,需要另一个 token 。不过,建议使用已经创建的 mediawiki 包装器,例如 pywikipedia , mwhair , pytybot , simplemediawiki或 wikitools , 以及数百个其他 mediawiki 包装器在 python 中。
关于python - 来自 cookie 的 Python MediaWiki 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642313/