已用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
相关产品推荐
相关产品推荐

