无法获取MediaWiki api的编辑令牌

时间:2012-01-10 09:18:07

标签: http mediawiki

我无法获取MediaWiki的编辑令牌:

请求

POST /w/api.php HTTP/1.1
Host: en.wikipedia.org
Accept: */*
User-agent: Sbose7890
Content-Length: 59
Content-Type: application/x-www-form-urlencoded

action=query&prop=info&intoken=edit&titles=Java&format=json 

响应

HTTP/1.0 200 OK
Date: Tue, 10 Jan 2012 09:14:03 GMT
Server: Apache
X-Content-Type-Options: nosniff
Cache-Control: private
Vary: Accept-Encoding
Content-Length: 209
Content-Type: application/json; charset=utf-8
X-Cache: MISS from sq34.wikimedia.org
X-Cache-Lookup: MISS from sq34.wikimedia.org:3128
X-Cache: MISS from sq59.wikimedia.org
X-Cache-Lookup: MISS from sq59.wikimedia.org:80
Connection: close

{
  "query": {
    "pages": {
      "69336": {
        "starttimestamp": "2012-01-10T09:14:03Z",
        "lastrevid": 469959190,
        "touched": "2012-01-07T11:38:04Z",
        "pageid": 69336,
        "title": "Java",
        "edittoken": "+\\",
        "ns": 0,
        "length": 37800,
        "counter": ""
      }
    }
  }
}

我使用hurl.it尝试了它。

我也登录了。

2 个答案:

答案 0 :(得分:4)

您正在获取编辑令牌:+\。这是anon用户的一个,并且始终是相同的。请参阅mw:Manual:Edit token,以及从那里链接的修订版。

问题在于,无论您的登录信息如何,都必须登录。例如,您必须发送有效的enwiki_session Cookie。但是不要发布你的,每个人都可以用它登录!

答案 1 :(得分:1)

简而言之,不使用原始MediaWiki API every conceivable language out there有客户端负责处理所有这些繁琐的事情。例如,如果您使用的是Ruby,那么您需要登录并编辑文章的所有MediaWiki::Gateway代码:

mw = MediaWiki::Gateway.new(your-wiki)
mw.login(user, pw)
mw.create("Article", "Hello world")