如果我把 openai 或 deepseek 的 api key 写到 GUI 客户端里,然后把这个 GUI 客户端软件打包成 exe 软件分发给好多用户,我的 key 不会被用户使用网络抓包软件探测到而泄露呢? 我是为了提高响应速度所以才会这么做的,否则我也知道可以把这部分功能放到我的服务器上面,然后再转接给客户端。 除此之外不知道还有没有别的方法?
1
EgbertW 6 天前
这样肯定会泄露啊,我自己做类似的事情的笨办法是,搭个服务端,用到 key 的请求全放服务端上,然后自己的服务端跟客户端做一个自己的 api ,做个加密之类的机制防止别人抓包套用,这样套一层
|
3
yinmin 5 天前 via iPhone
@iMath https MITM 抓包 https://cloud.tencent.com/developer/article/1875746
|
4
iMath OP @yinmin 我参照这里的方法
https://www.cnblogs.com/yoyoketang/p/16984669.html 还是没有抓到,只是报错,错误码 V2EX 不准发,请看这里 https://q.cnblogs.com/q/151615 |
5
yinmin 4 天前
@iMath https MITM 抓包是要先将根证书导入到系统里的,你漏了这步。
防止 MITM 抓包的方法是做证书锁定(SSL Pinning),但是如果别人 crack 你的代码,去掉 SSL Pinning ,还是可以抓包的。 总之,你把 key 写在代码不安全,别人 crack 你的代码总能获得 key 的。 |
7
yinmin 4 天前
你加根证书的姿势不对。你在 python 对应的 Lib\site-packages 的嵌套子目录下找 cacert.pem ,你文本编辑器打开,将新的根证书添加在末尾。(如果还不行,就全盘找 cacert.pem 都加一下)
|
8
iMath OP @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----- ``` |