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

Python新手求助:如何用账号密码及Token爬取登录保护网站?

解决登录爬虫失败的问题

以下是针对性的排查方向和修正方案:

1. 核心问题:Session未复用

你之前用独立的requests.get()获取token,再用requests.session()发起登录请求,这会导致两次请求的Cookie不共享,网站的CSRF验证直接失败。必须在同一个Session内完成「获取登录页→提取token→提交登录」的完整流程。

2. 严格匹配表单参数名

从页面源码的登录表单中,每个input标签的name属性必须和payload的键完全对应:

  • 你提取的token来自name="_token"的输入框,所以payload里的键必须是'_token',而非'token'
  • 用户名、密码的键名也要和页面里的name值完全一致,比如页面里用户名输入框是name="username",就用'username';如果是name="name"就用'name'

3. 确认登录请求的目标URL

检查登录表单的action属性,确认POST请求的URL是否正确(可能和登录页URL一致,也可能是其他接口地址)。

修正后的代码示例

from bs4 import BeautifulSoup
import requests

login_page_url = 'https://aff.ven-door.com/login'
target_url = 'https://aff.ven-door.com/products'

with requests.session() as s:
    # 1. 在同一个Session内获取登录页,保存必要的Cookie和Token
    response = s.get(login_page_url)
    soup = BeautifulSoup(response.content, 'html.parser')
    token = soup.find('input', {'name':'_token'})['value']

    # 2. 构造完全匹配表单的Payload
    payload = {
        '_token': token,  # 键名与页面input的name严格一致
        'username': '你的实际用户名',  # 替换为真实用户名,键名对应页面的name值
        'password': '你的实际密码'   # 替换为真实密码,键名对应页面的name值
    }

    # 3. 提交登录请求(URL需与表单action一致)
    login_response = s.post(login_page_url, data=payload)
    # 调试用:打印响应状态码和部分内容,查看登录反馈
    print(login_response.status_code)
    print(login_response.text[:500])

    # 4. 访问目标页面
    logged_in_response = s.get(target_url)
    soup = BeautifulSoup(logged_in_response.content, 'html.parser')
    # 验证登录结果:打印页面标题
    print(soup.title.text)

额外调试技巧

  • 打开浏览器开发者工具(F12),切换到「网络」标签,手动登录一次,观察登录请求的「表单数据」,对比你的payload是否完全一致(包括键名、大小写)
  • 部分网站需要特定请求头,可在Session中添加:
    s.headers.update({
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
    })
    
  • 如果登录失败,直接查看响应内容里的提示(比如用户名密码错误、Token无效),针对性调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:32:22