Python 将请求 cookie 正确保存到 json

Python save request cookies into json properly

您好,我想将我的 python 请求 cookie 保存到一个文本文件中 json,如下所示:

{"Proxy": "Cookies"}

目前我正在使用:

with open('data.txt') as f:
    proxy_data = json.load(f)

r = requests.get(URL,proxies=proxies, cookies=proxy_data['127:000'])

proxy_data['127:000'] = dict(session.cookies)

with open('data.txt', 'w') as json_file:
    json.dump(proxy_data, json_file)

我的 data.txt 文件写入后看起来像这样:

{"127:000": "{\"__cf_bm\": \"628f4c77a5139148cf28961a73f4edffed52f8c1-1622925414-1800-AaLguAyS9Hfl8TXCaQYUjjZ5i3sDck15kn/vcPJCWZBxi+nM9xU0zd/GfyKJu6/3R+GQEFdk/DGHEV4mANvpG1UMvcsXA9G9l/AFNEnIknTv\", \"cf_clearance\": \"84bffd070fbafcb91edcfa82f8cc3ba5a60a618d-1622925414-0-150\", \"cf_chl_seq_b116a013f9e2c44\": \"d3ac4406fc56d30\"}"}

不过我运行这里犯了一些错误。我怎样才能正确地做?

更新

我得到的错误

Python\Python37\lib\site-packages\requests\cookies.py", line 524, in cookiejar_from_dict cookiejar.set_cookie(create_cookie(name, cookie_dict[name])) TypeError: string indices must be integers

目前,proxy_data["127:000"] 的值是您传递给 cookies 参数的字符串。

with open("data.txt") as f:
    proxy_data = json.load(f)

print(type(proxy_data["127:000"]))
# >> <class 'str'>

两个选项:

  1. 使用json.loads
  2. proxy_data["127:000"]的值解析为字典

r = requests.get(URL, proxies=proxies, cookies=json.loads(proxy_data['127:000']))

  1. 确保正确保存嵌套的字典。
proxy_data = {"127:000": {"cookie_test": "value_test"}}
with open("data.txt", "w") as f:
    f.write(json.dumps(proxy_data))

with open("data.txt", "r") as f:
    proxy_data = json.loads(f.read())

print(type(proxy_data["127:000"]))
# >> <class 'dict'>