You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MediaWiki API登录失败,请求排查问题及调试方法

问题原因及解决方法

你的代码核心问题是没有复用同一个会话对象进行登录请求:获取登录token时用了session.get(),但发送登录POST请求时直接用了requests.post(),这会导致两次请求属于不同的会话,MediaWiki无法识别会话关联,从而返回会话超时的错误。

修复后的代码

import requests

def login(base_url: str):
    session = requests.Session()

    url = base_url + "/api.php"

    # 获取登录token
    print("Get login token...")
    response = session.get(url=url, params={
        'action':"query",
        'meta':"tokens",
        'type':"login",
        'format':"json"
    })
    data = response.json()
    login_token = data['query']['tokens']['logintoken']
    print(f"login_token={login_token}")

    # 复用同一个session发送登录请求
    print("Login...")
    response = session.post(url, data={
        'action': 'login',
        'lgname': 'admin',
        'lgpassword': 'admin_password',
        'lgtoken': login_token,
        'format': 'json',
    })
    login_data = response.json()
    print(login_data)

额外调试建议

  • 检查是否开启了MediaWiki的$wgEnableAPI配置,确保API功能正常启用
  • 登录后可以通过调用query+userinfo接口验证登录状态:
    # 登录成功后添加这段代码
    response = session.get(url, params={
        'action': 'query',
        'meta': 'userinfo',
        'format': 'json'
    })
    print(response.json())
    
  • 如果是本地MediaWiki,确认base_url格式正确(比如http://localhost/wiki),避免路径错误

内容的提问来源于stack exchange,提问作者doberkofler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:42:09