You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Python登录网站后访问后续页面跳转至授权页的问题求助

使用Python登录网站后访问后续页面跳转至授权页的问题求助

我成功登录网站,返回状态码200,但尝试访问下一个页面时却跳转到了授权页,这种情况该怎么办?

附上我的代码:

import requests
import fake_useragent
from bs4 import BeautifulSoup

session = requests.Session()

link_login = "https://gta5rp.com/api/V2/users/auth/login"

user = fake_useragent.UserAgent().random
headers = {
    'User-Agent': user,
    'Content-Type': 'application/json'
}

login = '...'
password = '...'
data_login = {
    'login': login,
    'password': password,
    'remember': '1'
}

response = session.post(link_login, json=data_login, headers=headers)

if response.status_code == 200:
    json_data = response.json()

    token = json_data.get("token")

    if token:
        headers['Authorization'] = f'Bearer {token}'

        profile_info = "https://gta5rp.com/user/report" 
        profile_response = session.get(profile_info, headers=headers)

        print(profile_response.text)
    else:
        print("Ошибка: Токен не получен.")
else:
    print(f"Ошибка авторизации: {response.status_code}, {response.text}")

看起来你已经闯过了登录这一关,但后续页面还是不认你的身份,我来帮你捋捋几个可能的问题和解决方向:

  • 先核对Token的传递方式对不对:有些网站并不是把Bearer Token放在Authorization请求头里,或者格式有细节错误(比如Bearer后面有没有漏空格?)。你可以打开浏览器开发者工具(按F12),切换到Network标签,手动登录后访问/user/report页面,看看浏览器发送的请求头里,身份凭证是怎么带的——是在Cookie里,还是Authorization头里,格式和你代码里写的一致吗?

  • 检查Session的状态有没有维护好:你用requests.Session是对的,它会自动保存登录后的Cookie,但要注意:你把Authorization加到headers字典后,后续的get请求是不是真的用了这个更新后的headers?另外,有些网站会同时依赖Cookie和Token双重验证,你可以在登录后打印session.cookies看看有没有关键的登录Cookie存在,别只盯着Token。

  • 有没有遗漏必要的请求头或参数:很多网站会检查RefererAcceptAccept-Language这些看似无关的请求头,甚至有些页面需要带特定的查询参数或者csrf令牌。你把浏览器里正常访问该页面的请求头全部复制过来(除了敏感的Cookie内容),加到你的headers里再试试。

  • 确认Token本身是否有效:你可以打印一下拿到的token值,看看是不是完整的字符串,有没有可能JSON解析的时候没拿到正确的值?另外,有些网站的登录凭证是存在Cookie里而不是返回的JSON数据里,你可以看看登录响应的Set-Cookie字段,有没有类似auth_token之类的内容,如果有的话,可能不需要手动加Authorization头,Session会自动带上这些Cookie。

  • 先排除权限问题:手动在浏览器登录后,能不能正常打开/user/report页面?如果手动都打不开,那可能是你的账号没有访问该页面的权限,这就不是代码的问题了。

备注:内容来源于stack exchange,提问作者Rahit

火山引擎 最新活动