把 openai 或 deepseek 的 api key 写到 GUI 客户端里会被网络抓包软件嗅探到吗?

250 天前
 iMath

如果我把 openai 或 deepseek 的 api key 写到 GUI 客户端里,然后把这个 GUI 客户端软件打包成 exe 软件分发给好多用户,我的 key 不会被用户使用网络抓包软件探测到而泄露呢? 我是为了提高响应速度所以才会这么做的,否则我也知道可以把这部分功能放到我的服务器上面,然后再转接给客户端。 除此之外不知道还有没有别的方法?

845 次点击
所在节点    问与答
8 条回复
EgbertW
249 天前
这样肯定会泄露啊,我自己做类似的事情的笨办法是,搭个服务端,用到 key 的请求全放服务端上,然后自己的服务端跟客户端做一个自己的 api ,做个加密之类的机制防止别人抓包套用,这样套一层
iMath
249 天前
@EgbertW 奇怪的是我用网络抓包软件没有抓到,不知道是什么原因
yinmin
248 天前
iMath
247 天前
@yinmin 我参照这里的方法
https://www.cnblogs.com/yoyoketang/p/16984669.html
还是没有抓到,只是报错,错误码 V2EX 不准发,请看这里 https://q.cnblogs.com/q/151615
yinmin
247 天前
@iMath https MITM 抓包是要先将根证书导入到系统里的,你漏了这步。

防止 MITM 抓包的方法是做证书锁定(SSL Pinning),但是如果别人 crack 你的代码,去掉 SSL Pinning ,还是可以抓包的。

总之,你把 key 写在代码不安全,别人 crack 你的代码总能获得 key 的。
iMath
247 天前
@yinmin 我按照博文里的“抓取 https 请求”部分安装了证书了呀
yinmin
247 天前
你加根证书的姿势不对。你在 python 对应的 Lib\site-packages 的嵌套子目录下找 cacert.pem ,你文本编辑器打开,将新的根证书添加在末尾。(如果还不行,就全盘找 cacert.pem 都加一下)
iMath
246 天前
@yinmin
你说这个我搜了一下找到这个粗略的方法
https://www.redelijkheid.com/blog/2023/8/22/add-ca-certificates-to-python
说是要转成 base64 ,我用这个代码转了

```
import base64

# Read the binary content of the .p12 file
with open('mitmproxy-ca-cert.p12', 'rb') as file:
binary_content = file.read()

# Encode the binary content to base64
base64_encoded_content = base64.b64encode(binary_content).decode('utf-8')

# Print the base64 encoded content
print(base64_encoded_content)
```
mitmproxy-ca-cert.p12 在这里 https://drive.google.com/file/d/1Ctuk6G-NSHlOCH30jP_uNhKzw-wRslGB/view?usp=sharing

然后把 Python312\Lib\site-packages\certifi\cacert.pem 里最后的信息复制了一份,转出来的 base64 信息贴进去,但是肉眼可见格式不一致,实在不会弄了,没进行下去

```
# Issuer: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH
# Subject: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH
# Label: "Telekom Security TLS RSA Root 2023"
# Serial: 44676229530606711399881795178081572759
# MD5 Fingerprint: bf:5b:eb:54:40:cd:48:71:c4:20:8d:7d:de:0a:42:f2
# SHA1 Fingerprint: 54:d3:ac:b3:bd:57:56:f6:85:9d:ce:e5:c3:21:e2:d4:ad:83:d0:93
# SHA256 Fingerprint: ef:c6:5c:ad:bb:59:ad:b6:ef:e8:4d:a2:23:11:b3:56:24:b7:1b:3b:1e:a0:da:8b:66:55:17:4e:c8:97:86:46
-----BEGIN CERTIFICATE-----
转出来的 base64 信息贴在了这里,
-----END CERTIFICATE-----
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1104262

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX