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

Python Requests从TXT文件加载Cookies报错,求排查原因

问题:从TXT加载Cookie到requests报错的解决方法

你尝试从TXT文件加载Cookie内容,而非直接在变量中声明,但运行报错TypeError: string indices must be integers。相关信息如下:

cookies.txt内容:

{"PHPSESSID": "ibd1biktq4tfm3k4j790juf19d", "security": "impossible"}

你的Python脚本:

file = open("cookies.txt", "r")
file = file.readlines()
str1 = " "
cookies = str1.join(file)     # 用于将列表转为字符串
requests.get("http://localhost/dvwa", cookies=cookies)

执行print(cookies)输出的内容看起来和直接赋值的字典一致,但直接赋值能正常运行,读文件就报错。


错误原因

requests.get()的cookies参数要求传入Python字典类型,但你从文件读取并拼接后得到的是字符串类型——哪怕这个字符串格式和字典完全一样,它本质还是字符串,无法被requests识别为Cookie字典,因此抛出类型错误。

而直接把{"PHPSESSID": "...", "security": "..."}赋值给变量时,Python会自动将其解析为字典类型,所以能正常运行。


解决方法

使用Python内置的json模块,将读取到的字符串解析为字典:

修正后的代码:

import json
import requests

# 读取文件内容(用with语句自动管理文件资源)
with open("cookies.txt", "r") as f:
    cookies_str = f.read().strip()  # 读取全部内容并去除首尾空白(如换行符、空格)

# 将JSON格式的字符串转为Python字典
cookies = json.loads(cookies_str)

# 发起请求
requests.get("http://localhost/dvwa", cookies=cookies)

补充说明:

  • with语句是Python中处理文件的规范写法,能自动关闭文件,避免资源泄漏
  • strip()方法可去除字符串首尾的换行符、空格等无关字符,防止因多余字符导致JSON解析失败
  • json.loads()专门用于将JSON格式的字符串转换为Python字典,是处理这类场景的标准方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:55:22