使用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。有没有遗漏必要的请求头或参数:很多网站会检查
Referer、Accept、Accept-Language这些看似无关的请求头,甚至有些页面需要带特定的查询参数或者csrf令牌。你把浏览器里正常访问该页面的请求头全部复制过来(除了敏感的Cookie内容),加到你的headers里再试试。确认Token本身是否有效:你可以打印一下拿到的
token值,看看是不是完整的字符串,有没有可能JSON解析的时候没拿到正确的值?另外,有些网站的登录凭证是存在Cookie里而不是返回的JSON数据里,你可以看看登录响应的Set-Cookie字段,有没有类似auth_token之类的内容,如果有的话,可能不需要手动加Authorization头,Session会自动带上这些Cookie。先排除权限问题:手动在浏览器登录后,能不能正常打开
/user/report页面?如果手动都打不开,那可能是你的账号没有访问该页面的权限,这就不是代码的问题了。
备注:内容来源于stack exchange,提问作者Rahit




