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

为何在iMac上使用Python Requests始终返回401状态码?

这种跨系统的Cookie兼容性问题我之前也踩过坑,大概率是Cookie的格式处理或者系统/浏览器间的细节差异导致的,咱们一步步来排查解决:

1. 先修正Cookie的格式转换(最可能的原因)

你现在的脚本里直接把Selenium返回的Cookie列表序列化存成了JSON,但requests.get()的cookies参数需要的是键值对形式的字典({cookie名称: cookie值}),而不是Selenium返回的那种包含name、value、domain等字段的列表。

虽然Windows上可能因为某种兼容巧合成功了,但iMac上的requests版本或环境对格式要求更严格。你需要把读取后的Cookie列表转换成正确的字典格式:

import json
import requests

# 读取Cookie文件
with open('cookies.json', 'r', encoding='utf-8') as f1:
    listCookies = json.load(f1)

# 转换成requests需要的键值对格式
cookies_dict = {cookie['name']: cookie['value'] for cookie in listCookies}

# 发起请求
response = requests.get(url, cookies=cookies_dict)
print(response.status_code)

2. 检查Cookie的属性差异

Windows和iMac上的浏览器(比如你可能Windows用Chrome,iMac用Safari)对Cookie的处理可能有差异,比如:

  • Domain属性:如果Cookie的domain字段是.your-site.com,但你请求的URL是your-site.com(不带前缀),iMac上的requests可能严格匹配域名,导致Cookie不生效。
  • SameSite属性:部分网站会设置SameSite=Strict,如果你的请求不是从同源页面发起,iMac上的浏览器或requests会拒绝携带Cookie。你可以尝试在转换Cookie时添加/修改SameSite字段为None(注意需要配合secure=True)。
  • Secure属性:如果Cookie标记了secure=True,那只有HTTPS请求才会携带它。检查你在iMac上的请求URL是否是HTTPS,有没有不小心用了HTTP。

3. 验证环境版本一致性

  • 对比Windows和iMac上的requests版本,不同版本对Cookie的处理逻辑可能有差异,建议两边都升级到最新版:pip install --upgrade requests。
  • 检查Selenium和浏览器版本,比如iMac上的SafariDriver是否和Safari版本匹配,这可能影响Cookie的获取完整性。

4. 手动验证Cookie有效性

如果上面的方法都不行,你可以在iMac上手动登录网站,从浏览器开发者工具的「Application」标签里复制完整的Cookie字符串,然后用headers方式发起请求:

headers = {
    'Cookie': '这里粘贴从浏览器复制的Cookie字符串'
}
response = requests.get(url, headers=headers)

如果这样能返回200,说明问题出在Selenium获取或转换Cookie的环节,再针对性调整脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:31:02