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

如何将EditThisCookie导出的Cookie用于requests库实现登录?

问题描述

我用EditThisCookie导出Cookie保存到cookie.json,想通过它发送GET请求获取Steam账号物品,但始终无法成功登录。

Cookie示例(cookies.json)

[{
    "domain": ".github.com",
    "expirationDate": 12401290312391203012,
    "hostOnly": false,
    "httpOnly": false,
    "name": "_octo",
    "path": "/",
    "sameSite": "lax",
    "secure": true,
    "session": false,
    "storeId": "0",
    "value": "MIGHT_BE_SMTH_PERSONAL :(",
    "id": 1
}]

注:expirationDate和value已隐藏,避免隐私泄露。

我的代码

import requests
import json
url = 'https://steamcommunity.com/inventory/steamid/730/2?&count=5000'

with open('cookies.json', 'r') as f:
    json_data = f.read()
    parsed_data = json.loads(json_data)
    if isinstance(parsed_data, list) and all(isinstance(item, dict) for item in parsed_data):  
        cookies = parsed_data
    else:
        cookies = []

r = requests.Session()

for cookie in cookies:
    r.cookies.update(cookie)

headers = {
    'User-Agent' : 'my_user_agent'
}


r.get(url, headers=headers)

问题排查与解决方法

1. EditThisCookie格式与requests的兼容性问题

EditThisCookie导出的Cookie包含大量requests不需要的字段(如hostOnly、sameSite、storeId、id等),直接用update方法会导致解析异常。requests仅需要**name、value、domain、path、expires(注意字段名是expires而非expirationDate)、secure、httpOnly**这些核心字段,且expirationDate是毫秒级时间戳,需要转成秒级才能被requests识别。

处理方法:过滤Cookie字段,只保留必要内容:

# 替换原有解析Cookie的代码
with open('cookies.json', 'r') as f:
    parsed_data = json.load(f)
    cookies = []
    for item in parsed_data:
        filtered_cookie = {
            'name': item.get('name'),
            'value': item.get('value'),
            'domain': item.get('domain'),
            'path': item.get('path'),
            'expires': int(item.get('expirationDate', 0) / 1000) if not item.get('session') else None,
            'secure': item.get('secure'),
            'httpOnly': item.get('httpOnly')
        }
        # 过滤空值字段
        filtered_cookie = {k: v for k, v in filtered_cookie.items() if v is not None}
        cookies.append(filtered_cookie)

2. Steam库存请求的核心要求

  • 替换真实SteamID:URL中的steamid是占位符,必须替换为目标账号的64位SteamID。
  • 核心认证Cookie缺失:访问Steam库存必须包含steamLogin、steamLoginSecure这类关键认证Cookie,确认你的导出文件里有这些Steam相关Cookie(示例中的Cookie是GitHub的,和Steam完全无关,这是直接失败的原因之一)。
  • 使用真实User-Agent:不要用my_user_agent占位符,直接复制浏览器的真实User-Agent,比如Chrome的:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36。

3. 正确的Session Cookie添加方式

建议用session.cookies.set()方法添加过滤后的Cookie,比update更可靠:

session = requests.Session()
for cookie in cookies:
    session.cookies.set(**cookie)

完整修正后的代码示例

import requests
import json

# 替换为真实的64位SteamID
url = 'https://steamcommunity.com/inventory/12345678901234567/730/2?count=5000'

# 处理Cookie
with open('cookies.json', 'r') as f:
    parsed_data = json.load(f)
    cookies = []
    for item in parsed_data:
        filtered = {
            'name': item['name'],
            'value': item['value'],
            'domain': item['domain'],
            'path': item['path'],
            'expires': int(item['expirationDate'] / 1000) if not item['session'] else None,
            'secure': item['secure'],
            'httpOnly': item['httpOnly']
        }
        cookies.append({k: v for k, v in filtered.items() if v is not None})

session = requests.Session()
# 添加Cookie到Session
for cookie in cookies:
    session.cookies.set(**cookie)

# 使用真实的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'
}

response = session.get(url, headers=headers)
# 检查响应状态和内容
print(response.status_code)
print(response.text[:500])  # 打印前500字符验证是否成功

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:45:00