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

已用Fernet加密数据,如何用Python发送x-www-form-urlencoded格式POST请求?

发送加密的x-www-form-urlencoded POST请求

你已经完成了数据的Fernet加密,接下来只需把加密后的字节数据转成字符串,再包装成表单格式,用requests库发送POST请求即可。以下是完整实现代码:

import json
import requests
from cryptography.fernet import Fernet

# 你的原始数据(替换成实际的dtop和mob值)
dtop = ["your_desktop_value"]
mob = ["your_mobile_value"]
message = {'Id':1,'Desktop':dtop[0],'Mobile':mob[0]}
message1 = json.dumps(message)

# 生成Fernet密钥(生产环境请固定密钥并妥善保管,不要每次生成新密钥)
key = Fernet.generate_key()
fernet = Fernet(key)

# 加密数据并转成字符串
encrypted = fernet.encrypt(message1.encode())
encrypted_str = encrypted.decode()

# 构造表单数据(字段名需和后端接口约定一致)
form_data = {
    'encrypted_data': encrypted_str
}

# 发送POST请求
try:
    response = requests.post(
        url="https://your-api-address.com/target-path",  # 替换成实际接口地址
        data=form_data  # requests会自动将字典编码为x-www-form-urlencoded格式
    )
    response.raise_for_status()  # 触发HTTP错误抛出
    print("请求发送成功,响应内容:", response.text)
except requests.exceptions.RequestException as e:
    print("请求失败:", str(e))

关键注意事项:

  • 密钥同步:后端必须使用同一个key才能解密数据,生产环境中密钥需安全存储,禁止每次请求生成新密钥。
  • 字段匹配:表单中的字段名(示例中为encrypted_data)要和后端接口要求的字段完全一致,否则后端无法正确读取加密内容。
  • 编码处理:Fernet加密结果是base64编码的字节,通过decode()转成字符串后才能作为表单值传递,避免编码异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:50:21