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

使用Python requests登录网站返回403 forbidden错误如何解决

问题排查与修复

现有代码错误点

  • 语法错误:r=requests.get(url,proxies=proxies),headers=headers) 存在括号匹配错误,headers参数位置错误
  • 会话未复用:未使用Session对象维持登录态,登录请求产生的身份凭证cookie不会被后续请求携带,相当于登录后直接丢失凭证
  • 登录逻辑错误:多数站点登录请求不会发送到首页,需指定正确的登录接口地址;部分站点要求先获取CSRF令牌再提交登录请求,否则会被拦截
  • 403错误常见诱因:请求头缺失浏览器标识User-Agent、缺少Referer字段、Basic Authorization格式错误
  • 文件写入逻辑错误:调用r.write属于方法调用错误,应使用文件对象调用write方法写入响应内容

修复后可用代码

import requests

# 配置参数,需替换为实际站点对应地址
base_url = 'https://example.com'
login_url = 'https://example.com/login'  # 实际登录接口地址
csv_download_url = 'https://example.com/abc.csv'  # 实际csv文件下载地址
username = '实际用户名'
password = '实际密码'
proxies= {"https":"http://10.10.10.10:8080"}  # 不需要代理可删除该配置

# 配置和浏览器一致的请求头,避免被站点拦截
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
    'Referer': base_url
}

# 初始化Session维持会话,自动管理cookie
session = requests.Session()
session.headers.update(headers)
if proxies:
    session.proxies.update(proxies)

try:
    # 先请求首页获取初始cookie、CSRF令牌等必要参数
    session.get(base_url)
    
    # 提交登录请求
    login_resp = session.post(
        login_url,
        data={
            "username": username,
            "password": password
            # 抓包发现其他必填参数(如csrf_token)可在此补充
        }
    )
    login_resp.raise_for_status()
    
    # 登录成功后下载csv文件
    csv_resp = session.get(csv_download_url)
    csv_resp.raise_for_status()
    
    # 保存文件到本地
    with open("abc.csv", 'wb') as f:
        f.write(csv_resp.content)
    print("abc.csv下载完成")
except Exception as e:
    print(f"操作失败:{str(e)}")

补充排查方案

  • 可通过浏览器F12开发者工具抓取正常登录的请求包,确认登录接口地址、提交参数名,若存在CSRF、token类隐藏参数,需补充到post请求的data中
  • 可将浏览器请求头全部复制到代码的headers配置中,完全模拟浏览器请求可解决绝大多数403拦截问题
  • 若站点使用Basic Auth认证,直接在请求中添加auth=(用户名, 密码)参数即可,无需单独发送POST登录请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:45:03