最近deepseek 很火爆,为国争光,赚了不少喝彩。于是想研究下他的app,看看其安全是怎么样的。
话不多说,撸起袖子开始干。
打开抓包大师,选中连接成功的ios设备,然后选中https代理抓包。
设置代理
打开手机 设置,点击无线局域网,设置手机代理按照下面几个图的顺序进行即可。代理ip地址填写抓包大师里面弹窗窗口提示的地址。
手机上启动deepseek
发现启动后数据请求非常多,所以需要对一些请求进行清理,方便更专注的研究。按照下面图示,点击分组按钮,对请求进行分组
清理无关网络请求
在分组的请求里面把无关的组勾选上,然后点击删除,把无用的请求删除,然后点击表格按钮,返回习惯的表格模式。
清理无关要紧的请求之后,整个请求就清晰多了。我只保留了deepseek的官网请求。一个聊天请求就剩下几个了。
challenge请求分析
从剩下的请求列表可以看出,deepseek在聊天之前会初始化一些请求,做些准备,例如判定ip地址属于哪个国家,检查客户端的一些环境情况。其中create_pow_challenge是比较重要的一个请求,他请求服务器获取一次请求认证,来标注客户端是正常无问题的。请求里面比较重要的是authenrization和cookie字段。
challenge的返回标注当前的会话的一些过期时间,有效性,签名,加密的salt等信息,通过这些信息,客户端可以进行一些字段的校验
completion请求分析
通过数据请求可以看到,同样携带了auth头和cookie,然后还带了几个额外的头。这些头是
X-开头,而最重要的就是X-Ds-Pow-Response,他是客户端通过刚才的challenge和客户端的加密算法计算出来的。
聊天的时候发送的数据体是个普通的json,里面还有几个有趣的字段,例如search_enabled,自己可以进行尝试,可能会有发现新大陆。
completion的返回如下,从返回数据可以看出,deepseek ios客户端是通过stream方式请求数据的
总结破解 deepseek的请求流程
从上面的过程可以看出,deepseek ios客户端通过登录后获得认证头和cookie,这俩头在后续的请求中都会携带。然后通过challenge向服务器发送请求校验客户端。再在客户端用challenge的返回计算出一个头,这个头放在后面的聊天等请求中。服务器收到聊天信息后会校验这个头的正确性。如果正确,则按照正常流程调用模型返回结果,而如果不正确,则会返回错误401 Unauthorized
从整个过程看,deepseek目前没有做过多的网络层的保护,我只是随便弄了个免费代理抓包工具就获取到了全部的网络请求。不过这可能并不影响其功能,毕竟其接口有公开的,流程和公开接口的调用相差不多。deepseek的价格也不贵,在买显卡这么大成本的情况下,这价格算良心价格了,所以也没必要去破解它,更良心的是deepseek app和网址都可以随意免费用。本文纯处于技术研究角度对其进行分析,严禁用于非法用途。