Skip to content
This repository has been archived by the owner on Apr 12, 2024. It is now read-only.

插个眼 #7

Open
bincooo opened this issue Feb 29, 2024 · 22 comments
Open

插个眼 #7

bincooo opened this issue Feb 29, 2024 · 22 comments

Comments

@bincooo
Copy link

bincooo commented Feb 29, 2024

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

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

@bincooo
Copy link
Author

bincooo commented Feb 29, 2024

我下载了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
Copy link
Contributor

我下载了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
Copy link
Contributor

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

@ChenYFan
Copy link
Contributor

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

@bincooo
Copy link
Author

bincooo commented Feb 29, 2024

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

@kaluluosi
Copy link

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

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

@bincooo
Copy link
Author

bincooo commented Feb 29, 2024

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

@weikecloud
Copy link

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

分享一下呗

@bincooo
Copy link
Author

bincooo commented Feb 29, 2024

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

分享一下呗

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

签名请求:

${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
Copy link

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

分享一下呗

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

签名请求:

${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
Copy link

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

@ChenYFan
Copy link
Contributor

ChenYFan commented Mar 1, 2024

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

分享一下呗

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

签名请求:

${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
Copy link

好可惜,这么好的项目~

@ChenYFan
Copy link
Contributor

ChenYFan commented Mar 1, 2024

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

分享一下呗

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

签名请求:

${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
Copy link

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

@ChenYFan
Copy link
Contributor

ChenYFan commented Mar 1, 2024

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

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

@weikecloud
Copy link

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

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

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

@bincooo
Copy link
Author

bincooo commented Mar 1, 2024

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

分享一下呗

避免被字节看到,不采取开源方式。 也不推荐别的大佬把代码发出来
签名请求:
${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
Copy link
Contributor

ChenYFan commented Mar 3, 2024

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

分享一下呗

避免被字节看到,不采取开源方式。 也不推荐别的大佬把代码发出来
签名请求:
${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
Copy link
Contributor

ChenYFan commented Mar 3, 2024

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

分享一下呗

避免被字节看到,不采取开源方式。 也不推荐别的大佬把代码发出来
签名请求:
${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
Copy link

签名是什么

@echoniuniu
Copy link

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

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants