2024-09-29 21:45:34 发布
网友
在一些Python CGI脚本(在同一个域中,ofc)中使用mediawikikookie进行身份验证(尤其包括MW的OpenID),哪种方式是最简单的?在
从python访问MediaWiki数据库也是可能的。在
在mediawiki中使用Cookie的一种非常简单的方法如下:
from cookielib import CookieJar import urllib2 import urllib import json cj = CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
现在,可以使用opener提出请求。例如:
在上面的例子中,如果没有创建Cookiejar,登录将无法完全工作,请求另一个令牌。不过,建议使用已经创建的mediawiki包装器,如pywikipedia、mwhair、pytybot、simplemediawiki或{a5},以及python中数百个其他mediawiki包装器。在
您可以使用MySQLdb模块连接和修改SQL数据库,而不使用HTTP和cookies,但这通常是进行MediaWiki维护的错误解决方案。虽然只读访问不应该是个问题。在
使用脚本访问MediaWiki的最佳方法是使用api.php。在
最著名的基于Python的mediawikiapi机器人是Pywikibot(以前的Pywikipediabot)。在
在Python中保存cookies的最简单方法可能是使用http.cookiejar模块。 它的文档包含一些简单的示例。在
我从自己的MediaWiki机器人程序中提取了功能示例代码:
#!/usr/bin/python3 import http.cookiejar import urllib.request import urllib.parse import json s_login_name = 'example' s_login_password = 'secret' s_api_url = 'http://en.wikipedia.org/w/api.php' s_user_agent = 'StackOverflowExample/0.0.1.2012.09.26.1' def api_request(d_post_params): d_post_params['format'] = 'json' r_post_params = urllib.parse.urlencode(d_post_params).encode('utf-8') o_url_request = urllib.request.Request(s_api_url, r_post_params) o_url_request.add_header('User-Agent', s_user_agent) o_http_response = o_url_opener.open(o_url_request) s_reply = o_http_response.read().decode('utf-8') d_reply = json.loads(s_reply) return (o_http_response.code, d_reply) o_cookie_jar = http.cookiejar.CookieJar() o_http_cookie_processor = urllib.request.HTTPCookieProcessor(o_cookie_jar) o_url_opener = urllib.request.build_opener(o_http_cookie_processor) d_post_params = {'action': 'login', 'lgname': s_login_name} i_code, d_reply = api_request(d_post_params) print('http code: %d' % (i_code)) print('api reply: %s' % (d_reply)) s_login_token = d_reply['login']['token'] d_post_params = { 'action': 'login', 'lgname': s_login_name, 'lgpassword': s_login_password, 'lgtoken':s_login_token } i_code, d_reply = api_request(d_post_params) print('http code: %d' % (i_code)) print('api reply: %s' % (d_reply))
类、错误处理和子函数已被删除,以提高可读性。在
o_url_opener中保存的cookie也可以用于对index.php的请求。在
您也可以通过索引.php(假装浏览器请求)但这将包括对HTML输出的解析。在
变量名图例:
在mediawiki中使用Cookie的一种非常简单的方法如下:
现在,可以使用opener提出请求。例如:
^{pr2}$在上面的例子中,如果没有创建Cookiejar,登录将无法完全工作,请求另一个令牌。不过,建议使用已经创建的mediawiki包装器,如pywikipedia、mwhair、pytybot、simplemediawiki或{a5},以及python中数百个其他mediawiki包装器。在
您可以使用MySQLdb模块连接和修改SQL数据库,而不使用HTTP和cookies,但这通常是进行MediaWiki维护的错误解决方案。虽然只读访问不应该是个问题。在
使用脚本访问MediaWiki的最佳方法是使用api.php。在
最著名的基于Python的mediawikiapi机器人是Pywikibot(以前的Pywikipediabot)。在
在Python中保存cookies的最简单方法可能是使用http.cookiejar模块。 它的文档包含一些简单的示例。在
我从自己的MediaWiki机器人程序中提取了功能示例代码:
类、错误处理和子函数已被删除,以提高可读性。在
o_url_opener中保存的cookie也可以用于对index.php的请求。在
您也可以通过索引.php(假装浏览器请求)但这将包括对HTML输出的解析。在
变量名图例:
^{pr2}$相关问题 更多 >
编程相关推荐