使用Python Requests登录icarus.flights失败,提示账号或密码错误
登录https://app.icarus.flights/失败排查方案
确认API端点正确性
你当前调用的是https://api.icarus.flights/login,但实际网页登录的后端接口可能并非这个地址。打开浏览器开发者工具(F12)切换到「网络」标签,手动完成一次登录操作,查看实际发送登录请求的URL,替换代码中的url值。检查请求数据格式
部分网站登录接口不接受JSON格式请求体,而是采用application/x-www-form-urlencoded格式。可以尝试修改请求方式:import requests url = '实际登录接口URL' payload = { "email": "some@email.com", "password": "123456" } # 使用data参数提交,requests会自动设置正确的Content-Type r = requests.post(url, data=payload) print(r.text)添加浏览器模拟请求头
服务器可能会拦截非浏览器发起的请求,需要添加User-Agent等头信息模拟浏览器:headers_ = { "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" } r = requests.post(url, data=payload, headers=headers_)获取并携带CSRF令牌
多数网站登录会要求携带CSRF令牌,需先访问登录页面获取令牌再提交:import requests import re # 使用Session保持会话 session = requests.Session() # 访问登录页面获取CSRF令牌 login_page = session.get('https://app.icarus.flights/') # 从页面源码中提取CSRF令牌(示例:匹配meta标签中的令牌) csrf_token = re.search(r'<meta name="csrf-token" content="(.*?)">', login_page.text).group(1) # 构造登录请求,携带令牌 payload = { "email": "some@email.com", "password": "123456", "csrf_token": csrf_token # 字段名需根据实际页面调整,比如可能是_csrf } headers_ = { "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" } r = session.post(url, data=payload, headers=headers_) print(r.text)检查密码是否需要加密
部分网站会在前端对密码进行哈希或加密后再提交,查看浏览器登录时的请求 payload,确认密码是否为明文。如果是加密后的,需在代码中实现相同的加密逻辑。
内容的提问来源于stack exchange,提问作者Myky
相关产品推荐
相关产品推荐

