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

Python Requests实现Mangadex.cc登录失败问题排查求助

排查Mangadex登录爬虫的问题

我帮你梳理下代码里的几个关键问题,以及对应的修复方案:

1. 登录URL的转义字符错误

你代码里的登录URL包含&,这是HTML对&的转义字符,直接使用会导致请求参数解析错误。需要把&替换成&,正确的URL应该是:

url = "https://mangadex.cc/login/ajax/actions.ajax.php?function=login&nojs=1"

2. 缺少CSRF令牌验证

Mangadex的登录接口需要验证CSRF令牌,否则会直接拒绝请求。你需要先访问登录页面,从页面HTML中提取csrf_token,再把它加到登录请求的payload里。

3. 未设置模拟浏览器的请求头

很多网站会拦截没有合理请求头的爬虫请求,你需要添加User-Agent等头信息,让请求看起来更像正常的浏览器访问。

4. 未验证登录请求的结果

你当前的代码没有检查登录是否成功,建议解析登录接口的JSON响应,确认登录状态,避免后续用未登录的session去访问需要权限的页面。


修正后的完整代码

import requests
from bs4 import BeautifulSoup

def login(username: str, password: str):
    session = requests.Session()
    # 设置模拟浏览器的请求头
    session.headers.update({
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    })
    
    # 先访问登录页面获取CSRF令牌
    login_page = session.get("https://mangadex.cc/login")
    soup = BeautifulSoup(login_page.text, "html.parser")
    csrf_token = soup.find("input", {"name": "csrf_token"})["value"]
    
    # 正确的登录URL
    login_url = "https://mangadex.cc/login/ajax/actions.ajax.php?function=login&nojs=1"
    payload = {
        "login_username": username,
        "login_password": password,
        "csrf_token": csrf_token,
        "remember_me": "1"  # 可选,是否保持登录状态
    }
    
    # 发送登录请求并解析响应
    login_response = session.post(login_url, data=payload)
    login_result = login_response.json()
    
    if login_result.get("success"):
        print("登录成功!")
        return session
    else:
        print(f"登录失败:{login_result.get('error')}")
        return None

def search(session, title):
    if not session:
        return "未登录,无法访问搜索页面"
    resp = session.get("https://mangadex.cc/search", params={"title": title})
    # 检查响应状态码确认是否成功
    if resp.status_code == 200:
        return resp.text
    else:
        return f"请求失败,状态码:{resp.status_code}"

# 替换成你的账号信息
session = login("VALIDUSERNAME", "VALIDPASSWORD")
if session:
    search_result = search(session, "foo")
    # 可在这里处理搜索结果,比如保存到文件或解析内容
    print("搜索请求完成")

额外说明

  • 我用了BeautifulSoup来解析HTML获取CSRF令牌,你需要先安装它:pip install beautifulsoup4
  • 注意遵守Mangadex的服务条款,爬虫行为不要违反网站规定,避免IP被封禁
  • 如果后续仍有问题,可以检查session中的cookies是否正确携带,或者确认网站接口是否有更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 07:47:38