CrazyCreativeDream / Real-Coze-API

高性能的真·Coze API
GNU General Public License v3.0
133 stars 29 forks source link

插个眼 #7

Open bincooo opened 4 months ago

bincooo commented 4 months ago

太草了,我刚爬不久的api,第二天就签名了 https://github.com/bincooo/coze-api

混淆和浏览器环境搞得我焦头烂额,懒得搞观望别人的

bincooo commented 4 months ago

我下载了webmssdk.js, 并在本地补充了一些环境。 依旧无法获得X-Bogus的生成, 只能获取一个_signature

Screenshot 2024-02-29 at 09 12 38 Screenshot 2024-02-29 at 09 13 08 Screenshot 2024-02-29 at 09 13 45
ChenYFan commented 4 months ago

我下载了webmssdk.js, 并在本地补充了一些环境。 依旧无法获得X-Bogus的生成, 只能获取一个_signature Screenshot 2024-02-29 at 09 12 38 Screenshot 2024-02-29 at 09 13 08 Screenshot 2024-02-29 at 09 13 45

字节已经把X-Bogus暴露到windows对象了,我已经提取出来了。请问您的签名方法是怎么获得的?我解了快一天了都没解决

ChenYFan commented 4 months ago

哦,你直接把webmssdk丢进node里了,这也是一个解决思路

ChenYFan commented 4 months ago

感谢提醒,我这边也能获取到签名 image

bincooo commented 4 months ago

本地执行行不通的,补不全环境

kaluluosi commented 4 months ago

本地执行行不通的,补不全环境

我还想着靠这个直接调用 coze的api做企业微信机器人呢。悲报。

bincooo commented 4 months ago

签名问题已解决,观测一段时间看看

weikecloud commented 4 months ago

签名问题已解决,观测一段时间看看

分享一下呗

bincooo commented 4 months ago

签名问题已解决,观测一段时间看看

分享一下呗

避免被字节看到,不采取开源方式。 也不推荐别的大佬把代码发出来

签名请求:

${msToken} : 浏览器中cookie复制 ${body} : 需要被签名的请求体,coze.com 传什么就传什么,目前只有 /api/conversation/chat 需要签名 服务地址 : https://complete-mmx-coze-helper.hf.space request:

POST https://complete-mmx-coze-helper.hf.space?msToken=${msToken} HTTP/1.1
Accept: */*
Content-Type: application/json; charset=utf-8

${body}

response:

Content-Type: application/json; charset=utf-8
Content-Encoding: br

{
    "ok": true,
    "data":{
        "bogus": "DFSzKwVxxxx",
        "signature": "_02B4Z6wo000016oxxx"
    }
}
Screenshot 2024-03-01 at 00 12 21
weikecloud commented 4 months ago

签名问题已解决,观测一段时间看看

分享一下呗

避免被字节看到,不采取开源方式。 也不推荐别的大佬把代码发出来

签名请求:

${msToken} : 浏览器中cookie复制 ${body} : 需要被签名的请求体,coze.com 传什么就传什么,目前只有 /api/conversation/chat 需要签名 服务地址 : https://complete-mmx-coze-helper.hf.space request:

POST https://complete-mmx-coze-helper.hf.space?msToken=${msToken} HTTP/1.1
Accept: */*
Content-Type: application/json; charset=utf-8

${body}

response:

Content-Type: application/json; charset=utf-8
Content-Encoding: br

{
    "ok": true,
    "data":{
        "bogus": "DFSzKwVxxxx",
        "signature": "_02B4Z6wo000016oxxx"
    }
}
Screenshot 2024-03-01 at 00 12 21

来个交流群讨论一下呗

meglinge-fei commented 4 months ago

可能字节发现了这个项目,才更新了签名。这个接口我用了2个月都没什么问题。discord方案应该是字节没什么好的方案解决所以就没管。

ChenYFan commented 4 months ago

签名问题已解决,观测一段时间看看

分享一下呗

避免被字节看到,不采取开源方式。 也不推荐别的大佬把代码发出来

签名请求:

${msToken} : 浏览器中cookie复制 ${body} : 需要被签名的请求体,coze.com 传什么就传什么,目前只有 /api/conversation/chat 需要签名 服务地址 : https://complete-mmx-coze-helper.hf.space request:

POST https://complete-mmx-coze-helper.hf.space?msToken=${msToken} HTTP/1.1
Accept: */*
Content-Type: application/json; charset=utf-8

${body}

response:

Content-Type: application/json; charset=utf-8
Content-Encoding: br

{
    "ok": true,
    "data":{
        "bogus": "DFSzKwVxxxx",
        "signature": "_02B4Z6wo000016oxxx"
    }
}
Screenshot 2024-03-01 at 00 12 21

这个签名方式是有误的,实际提交上去仍会被字节拦截。X-Bogus应当是随机生成的,而msToken的刷新机制仍未知晓。对于思路的话基本正确,签名应当是这个函数,但是你传递的参数可能有问题,所以签名出错了。

此外,鉴于自己可能已经注意到该项目。为了避免影响到其他用户的正常使用,本项目将不再更新,仅留作记录。

weikecloud commented 4 months ago

好可惜,这么好的项目~

ChenYFan commented 4 months ago

签名问题已解决,观测一段时间看看

分享一下呗

避免被字节看到,不采取开源方式。 也不推荐别的大佬把代码发出来

签名请求:

${msToken} : 浏览器中cookie复制 ${body} : 需要被签名的请求体,coze.com 传什么就传什么,目前只有 /api/conversation/chat 需要签名 服务地址 : https://complete-mmx-coze-helper.hf.space request:

POST https://complete-mmx-coze-helper.hf.space?msToken=${msToken} HTTP/1.1
Accept: */*
Content-Type: application/json; charset=utf-8

${body}

response:

Content-Type: application/json; charset=utf-8
Content-Encoding: br

{
    "ok": true,
    "data":{
        "bogus": "DFSzKwVxxxx",
        "signature": "_02B4Z6wo000016oxxx"
    }
}
Screenshot 2024-03-01 at 00 12 21

一个很明显的特征,完全一样的参数提交上去,再次获取签名的时候签名就会变。

weikecloud commented 4 months ago

我找到了一个是用go写的,方式是调用已发布的机器人

ChenYFan commented 4 months ago

我找到了一个是用go写的,方式是调用已发布的机器人

没法伪造整个聊天记录,无法实现用户隔离,只能自己用用。

weikecloud commented 4 months ago

我找到了一个是用go写的,方式是调用已发布的机器人

没法伪造整个聊天记录,无法实现用户隔离,只能自己用用。

我看代码里写的适配了openai接口,我用的时候可以按照openai的key方式去调用,只可惜不能定义system

bincooo commented 4 months ago

签名问题已解决,观测一段时间看看

分享一下呗

避免被字节看到,不采取开源方式。 也不推荐别的大佬把代码发出来 签名请求: ${msToken} : 浏览器中cookie复制 ${body} : 需要被签名的请求体,coze.com 传什么就传什么,目前只有 /api/conversation/chat 需要签名 服务地址 : https://complete-mmx-coze-helper.hf.space request:

POST https://complete-mmx-coze-helper.hf.space?msToken=${msToken} HTTP/1.1
Accept: */*
Content-Type: application/json; charset=utf-8

${body}

response:

Content-Type: application/json; charset=utf-8
Content-Encoding: br

{
    "ok": true,
    "data":{
        "bogus": "DFSzKwVxxxx",
        "signature": "_02B4Z6wo000016oxxx"
    }
}
Screenshot 2024-03-01 at 00 12 21

一个很明显的特征,完全一样的参数提交上去,再次获取签名的时候签名就会变。

我知道,bogus 也有函数生成,至于被拦截不一定是签名失败,可留意一下头信息,ip等...

目前来看,msToken 有效性还挺长,一周内还没有失效,官方估计是忘记把旧的处理掉

Screenshot 2024-03-02 at 00 42 56
ChenYFan commented 4 months ago

签名问题已解决,观测一段时间看看

分享一下呗

避免被字节看到,不采取开源方式。 也不推荐别的大佬把代码发出来 签名请求: ${msToken} : 浏览器中cookie复制 ${body} : 需要被签名的请求体,coze.com 传什么就传什么,目前只有 /api/conversation/chat 需要签名 服务地址 : https://complete-mmx-coze-helper.hf.space request:

POST https://complete-mmx-coze-helper.hf.space?msToken=${msToken} HTTP/1.1
Accept: */*
Content-Type: application/json; charset=utf-8

${body}

response:

Content-Type: application/json; charset=utf-8
Content-Encoding: br

{
    "ok": true,
    "data":{
        "bogus": "DFSzKwVxxxx",
        "signature": "_02B4Z6wo000016oxxx"
    }
}
Screenshot 2024-03-01 at 00 12 21

一个很明显的特征,完全一样的参数提交上去,再次获取签名的时候签名就会变。

我知道,bogus 也有函数生成,至于被拦截不一定是签名失败,可留意一下头信息,ip等...

目前来看,msToken 有效性还挺长,一周内还没有失效,官方估计是忘记把旧的处理掉 Screenshot 2024-03-02 at 00 42 56

开学了,最近在做竞赛项目,可能比较忙。

刚刚hook了一下签名函数,在浏览器环境下发现这是对的:

image

image

image

而且重复两次签名均是没有变化的同一个:

image

但是这在Nodejs中工作不正常:

image

可能还有一部分环境我没有考虑到,但我现在已经无力研究了

ChenYFan commented 4 months ago

签名问题已解决,观测一段时间看看

分享一下呗

避免被字节看到,不采取开源方式。 也不推荐别的大佬把代码发出来 签名请求: ${msToken} : 浏览器中cookie复制 ${body} : 需要被签名的请求体,coze.com 传什么就传什么,目前只有 /api/conversation/chat 需要签名 服务地址 : https://complete-mmx-coze-helper.hf.space request:

POST https://complete-mmx-coze-helper.hf.space?msToken=${msToken} HTTP/1.1
Accept: */*
Content-Type: application/json; charset=utf-8

${body}

response:

Content-Type: application/json; charset=utf-8
Content-Encoding: br

{
    "ok": true,
    "data":{
        "bogus": "DFSzKwVxxxx",
        "signature": "_02B4Z6wo000016oxxx"
    }
}
Screenshot 2024-03-01 at 00 12 21

一个很明显的特征,完全一样的参数提交上去,再次获取签名的时候签名就会变。

我知道,bogus 也有函数生成,至于被拦截不一定是签名失败,可留意一下头信息,ip等...

目前来看,msToken 有效性还挺长,一周内还没有失效,官方估计是忘记把旧的处理掉 Screenshot 2024-03-02 at 00 42 56

此外,将函数暴露出来也会导致签名不正确: image

14790897 commented 3 months ago

签名是什么

echoniuniu commented 3 months ago

终于找到这个 解决签名问题的讨论,大佬们有群吗