bingo
                                
                                 bingo copied to clipboard
                                
                                    bingo copied to clipboard
                            
                            
                            
                        New Bing 封锁原理探讨
经过一段时间的观察及网友们的探索,目前已知 New Bing 的封锁等级为以下几种,程度依次递增,不同强度的解决办法也不一样:
| 封锁程度 | 现象 | 解决办法 | 
|---|---|---|
| 1 | 偶发性中断 | 重试 | 
| 2 | 出现人机校验 | 1. 录入身份信息 2. 更换 MUID 3. 通过人机校验 | 
| 3 | 接口 404/wss 200/unexpected end of JSON input | 1. 增加 x-forwarded-for 模拟正常美国地址 2. 换机器 | 
| 4 | 接口 5xx 或域名无法解析 | 1. 换机器 2. 配置 ENDPOINT 转发 | 
| 5 | 跳 cn.bing.com | 1. 换机器 2. 配置 ENDPOINT 转发 | 
除第5级封锁外,其它级别的过段时间会自动解除,但是很容易再次出现,所以比较好的办法是直接换机器
@weaigc 大佬,你更新的muid()采用随机数现在基本上不可行的,官方已经用muid全面取代终端机器验证了,对muid的生成有自己的规则,一般生成的都会出错。 目前我测试出来的是可以用已知可行的muid,随便更换最后2位字符,大概率是可用的。所以,让ai生成的一段代码:
const MUID_ADDRESSES: string[] = [
    "074AD7F106536BC6392FC4C907CA6AEA",
    // 添加更多的IP地址
];
function getRandomMUID(): string {
    const timestamp = Date.now();
    const randomIndex = Math.floor(Math.random() * MUID_ADDRESSES.length * timestamp);
    const IPSTR = MUID_ADDRESSES[randomIndex % MUID_ADDRESSES.length];
    const trimmedIPStr = IPSTR.slice(0, IPSTR.length - 2);
    const randomString = generateRandomString(2);
    const USER_MUID = trimmedIPStr + randomString;
    return USER_MUID;
}
export function muid() {
//  return md5(new imei().random()).toUpperCase()
    return getRandomMUID()
}
@weaigc 大佬,你更新的muid()采用随机数现在基本上不可行的,官方已经用muid全面取代终端机器验证了,对muid的生成有自己的规则,一般生成的都会出错。 目前我测试出来的是可以用已知可行的muid,随便更换最后2位字符,大概率是可用的。所以,让ai生成的一段代码:
const MUID_ADDRESSES: string[] = [ "074AD7F106536BC6392FC4C907CA6AEA", // 添加更多的IP地址 ]; function getRandomMUID(): string { const timestamp = Date.now(); const randomIndex = Math.floor(Math.random() * MUID_ADDRESSES.length * timestamp); const IPSTR = MUID_ADDRESSES[randomIndex % MUID_ADDRESSES.length]; const trimmedIPStr = IPSTR.slice(0, IPSTR.length - 2); const randomString = generateRandomString(2); const USER_MUID = trimmedIPStr + randomString; return USER_MUID; } export function muid() { // return md5(new imei().random()).toUpperCase() return getRandomMUID() }
@SokWith MUID 我不想硬编码,按照标准的 MUID 生成规则又很容易跟真实的用户冲突,所以故意写了一个错误的。不过确实更容易被封禁。我有办法生成真实的 MUID ,只不过速度还不太快,如果你这个可行,我后面专门做一个服务来生成 MUID。谢谢反馈!
vercel上面部署的1.0.0,无I内置ID,可以说很简单的几个字符,比如 “hi”,但也足以说明vercel没有被官方封禁。
官方10月更新API后,似乎原来的许多限制都解除了,几乎没有IP锁和MUID锁了(随便32个16进制字符串都可以),目前还剩下的只有根据连接网络属性来是否进行账户验证,我的部署测试表明,目前云服务器中抱脸、render、vercel都不需要验证匿名账户,replit、cf需要验证账户。
官方10月更新API后,似乎原来的许多限制都解除了,几乎没有IP锁和MUID锁了(随便32个16进制字符串都可以),目前还剩下的只有根据连接网络属性来是否进行账户验证,我的部署测试表明,目前云服务器中抱脸、render、vercel都不需要验证匿名账户,replit、cf需要验证账户。
@SokWith 你说的那种方案试过了,流量一大了就不行,自用确实没啥问题。
netlify也复活了
netlify也复活了 netlify 一般只能复活一天,不能持续,https://effulgent-bubblegum-e2f5df.netlify.app/ 你可以用用看
netlify也复活了 netlify 一般只能复活一天,不能持续,https://effulgent-bubblegum-e2f5df.netlify.app/ 你可以用用看
试了下,确实不稳定,今天我这一条都不能用了。。。
@weaigc 大佬,你更新的muid()采用随机数现在基本上不可行的,官方已经用muid全面取代终端机器验证了,对muid的生成有自己的规则,一般生成的都会出错。 目前我测试出来的是可以用已知可行的muid,随便更换最后2位字符,大概率是可用的。所以,让ai生成的一段代码:
const MUID_ADDRESSES: string[] = [ "074AD7F106536BC6392FC4C907CA6AEA", // 添加更多的IP地址 ]; function getRandomMUID(): string { const timestamp = Date.now(); const randomIndex = Math.floor(Math.random() * MUID_ADDRESSES.length * timestamp); const IPSTR = MUID_ADDRESSES[randomIndex % MUID_ADDRESSES.length]; const trimmedIPStr = IPSTR.slice(0, IPSTR.length - 2); const randomString = generateRandomString(2); const USER_MUID = trimmedIPStr + randomString; return USER_MUID; } export function muid() { // return md5(new imei().random()).toUpperCase() return getRandomMUID() }
这段代码在部署的时候应该放在哪里?
@weaigc 大佬,你更新的muid()采用随机数现在基本上不可行的,官方已经用muid全面取代终端机器验证了,对muid的生成有自己的规则,一般生成的都会出错。 目前我测试出来的是可以用已知可行的muid,随便更换最后2位字符,大概率是可用的。所以,让ai生成的一段代码:
const MUID_ADDRESSES: string[] = [ "074AD7F106536BC6392FC4C907CA6AEA", // 添加更多的IP地址 ]; function getRandomMUID(): string { const timestamp = Date.now(); const randomIndex = Math.floor(Math.random() * MUID_ADDRESSES.length * timestamp); const IPSTR = MUID_ADDRESSES[randomIndex % MUID_ADDRESSES.length]; const trimmedIPStr = IPSTR.slice(0, IPSTR.length - 2); const randomString = generateRandomString(2); const USER_MUID = trimmedIPStr + randomString; return USER_MUID; } export function muid() { // return md5(new imei().random()).toUpperCase() return getRandomMUID() }这段代码在部署的时候应该放在哪里?
现在几乎没有MUID锁了,这段代码基本不需要了,有了由于MUID被频繁使用,反而容易上锁。
确实跟muid没什么关系了,但是目前这些免费平台每次解禁都活不过一天。
确实跟muid没什么关系了,但是目前这些免费平台每次解禁都活不过一天。
不是吧,vercel、render都一直活起的哟。
确实跟muid没什么关系了,但是目前这些免费平台每次解禁都活不过一天。
不是吧,vercel、render都一直活起的哟。


render能用是因为很多人会被封账号,我也被封了。vercel目前有10秒限制,也不支持websocket,所以没法正常使用,你试试让它写诗,就能看出问题
确实跟muid没什么关系了,但是目前这些免费平台每次解禁都活不过一天。
不是吧,vercel、render都一直活起的哟。


render能用是因为很多人会被封账号,我也被封了。vercel目前有10秒限制,也不支持websocket,所以没法正常使用,你试试让它写诗,就能看出问题
确实,render会封账号,特别是部署隔壁go-proxy时,秒封,但却不封重写核心的这个项目和NewBingGoGo。 vercel也确实限制了时间,只能问很短的问题。go-proxy在vercel上的部署本质还是用的cf的wss,所以没有时长限制。但是因为实质是cf,而和cf沾边的网络几乎都要验证账户不能匿名使用。但使用vercel来获得id,是能够匿名的,就不知道可否与cf结合起来,使用cf来连接wss。只是,你那个cf-proxy的代码似乎不能直接路由,会跳转cn。
确实跟muid没什么关系了,但是目前这些免费平台每次解禁都活不过一天。
不是吧,vercel、render都一直活起的哟。


render能用是因为很多人会被封账号,我也被封了。vercel目前有10秒限制,也不支持websocket,所以没法正常使用,你试试让它写诗,就能看出问题
我今天申请render新账号部署bingo,结果被告知在进行suspicious actions,然后账号被suspended...
确实跟muid没什么关系了,但是目前这些免费平台每次解禁都活不过一天。
不是吧,vercel、render都一直活起的哟。


render能用是因为很多人会被封账号,我也被封了。vercel目前有10秒限制,也不支持websocket,所以没法正常使用,你试试让它写诗,就能看出问题
我今天申请render新账号部署bingo,结果被告知在进行suspicious actions,然后账号被suspended...
不好意思哈。也幸好你用的新号。看来我也得把我的部署停了换新号了。
ps: 果然,新部署直接秒封。
确实跟muid没什么关系了,但是目前这些免费平台每次解禁都活不过一天。
不是吧,vercel、render都一直活起的哟。


render能用是因为很多人会被封账号,我也被封了。vercel目前有10秒限制,也不支持websocket,所以没法正常使用,你试试让它写诗,就能看出问题
确实,render会封账号,特别是部署隔壁go-proxy时,秒封,但却不封重写核心的这个项目和NewBingGoGo。 vercel也确实限制了时间,只能问很短的问题。go-proxy在vercel上的部署本质还是用的cf的wss,所以没有时长限制。但是因为实质是cf,而和cf沾边的网络几乎都要验证账户不能匿名使用。但使用vercel来获得id,是能够匿名的,就不知道可否与cf结合起来,使用cf来连接wss。只是,你那个cf-proxy的代码似乎不能直接路由,会跳转cn。
cf没可能了,它的流量自带特征,只要访问过去就会被 new bing 检测到
确实跟muid没什么关系了,但是目前这些免费平台每次解禁都活不过一天。
不是吧,vercel、render都一直活起的哟。


render能用是因为很多人会被封账号,我也被封了。vercel目前有10秒限制,也不支持websocket,所以没法正常使用,你试试让它写诗,就能看出问题
确实,render会封账号,特别是部署隔壁go-proxy时,秒封,但却不封重写核心的这个项目和NewBingGoGo。 vercel也确实限制了时间,只能问很短的问题。go-proxy在vercel上的部署本质还是用的cf的wss,所以没有时长限制。但是因为实质是cf,而和cf沾边的网络几乎都要验证账户不能匿名使用。但使用vercel来获得id,是能够匿名的,就不知道可否与cf结合起来,使用cf来连接wss。只是,你那个cf-proxy的代码似乎不能直接路由,会跳转cn。
cf没可能了,它的流量自带特征,只要访问过去就会被 new bing 检测到
不是吧,隔壁go-proxy就可以纯js部署在cf上,只是不能匿名访问bing而已。只是不清楚决定是否要进行账户验证是在create时决定的还是在wss握手时决定的。如果是在create时决定的,就可以使用vercel来获取无需验证的连接id,如果是在wss握手时那就没办法了。目前看上去是在create时决定的,因为go-proxy部署在vercel上时,是使用的vercel的代理网络获得的连接id,然后路由的cf的wss,刚才测试表明也可以匿名访问。
确实跟muid没什么关系了,但是目前这些免费平台每次解禁都活不过一天。
不是吧,vercel、render都一直活起的哟。


render能用是因为很多人会被封账号,我也被封了。vercel目前有10秒限制,也不支持websocket,所以没法正常使用,你试试让它写诗,就能看出问题
确实,render会封账号,特别是部署隔壁go-proxy时,秒封,但却不封重写核心的这个项目和NewBingGoGo。 vercel也确实限制了时间,只能问很短的问题。go-proxy在vercel上的部署本质还是用的cf的wss,所以没有时长限制。但是因为实质是cf,而和cf沾边的网络几乎都要验证账户不能匿名使用。但使用vercel来获得id,是能够匿名的,就不知道可否与cf结合起来,使用cf来连接wss。只是,你那个cf-proxy的代码似乎不能直接路由,会跳转cn。
cf没可能了,它的流量自带特征,只要访问过去就会被 new bing 检测到
不是吧,隔壁go-proxy就可以纯js部署在cf上,只是不能匿名访问bing而已。只是不清楚决定是否要进行账户验证是在create时决定的还是在wss握手时决定的。如果是在create时决定的,就可以使用vercel来获取无需验证的连接id,如果是在wss握手时那就没办法了。目前看上去是在create时决定的,因为go-proxy部署在vercel上时,是使用的vercel的代理网络获得的连接id,然后路由的cf的wss,刚才测试表明也可以匿名访问。
不匿名部署cf bingo一直可以的呀,不过不能匿名就不能不限量使用了
解决方案里不是说了吗,要么账号没被封,要么vps没被封
你那个cf不是部署,包括replit里面的,都只是反代。这个项目本来就是纯js,是可以直接部署的,只是需要把next编译一下吧?。
你那个cf不是部署,包括replit里面的,都只是反代。这个项目本来就是纯js,是可以直接部署的,只是需要把next编译一下吧?。 @SokWith cf部署的代码没有开放了(因为没有解决根本问题),实际上bingo可以把 ENDPOING 设置为其他项目的代理,包括 cf,你可以试试
你那个cf不是部署,包括replit里面的,都只是反代。这个项目本来就是纯js,是可以直接部署的,只是需要把next编译一下吧?。 @SokWith cf部署的代码没有开放了(因为没有解决根本问题),实际上bingo可以把 ENDPOING 设置为其他项目的代理,包括 cf,你可以试试
ENDPOINT是指的WS_ENDPOINT的环境变量吗?这个变量是wss服务器的地址吧,换成cf的代理服务器并没有改善vercel的连接时长限制,主要还是vercel与wss服务器之间的数据交换时间。 所以,有没有可能,将create获取连接id的实现放在vercel上,就是原本访问 www.bing.com/turing/conversation/create换成访问 vercel.nbing.eu,org/turing.conversation/create,这样获得连接id,而客户端界面实现在cf worlers上? 这样折腾的意义主要是抱脸的反应实在太慢了,给项目部署留一条后路。
你那个cf不是部署,包括replit里面的,都只是反代。这个项目本来就是纯js,是可以直接部署的,只是需要把next编译一下吧?。 @SokWith cf部署的代码没有开放了(因为没有解决根本问题),实际上bingo可以把 ENDPOING 设置为其他项目的代理,包括 cf,你可以试试
ENDPOINT是指的WS_ENDPOINT的环境变量吗?这个变量是wss服务器的地址吧,换成cf的代理服务器并没有改善vercel的连接时长限制,主要还是vercel与wss服务器之间的数据交换时间。 所以,有没有可能,将create获取连接id的实现放在vercel上,就是原本访问 www.bing.com/turing/conversation/create换成访问 vercel.nbing.eu,org/turing.conversation/create,这样获得连接id,而客户端界面实现在cf worlers上? 这样折腾的意义主要是抱脸的反应实在太慢了,给项目部署留一条后路。
ENDPOINT和WS_ENDPOINT是两个,WS封杀力度不大,不用管
@SokWith v1不推荐用hf了呀,文档都改了,v2在用是因为v2版本对配置要求比较高,只有hf能给这么好的配置
@SokWith v1不推荐用hf了呀,文档都改了,v2在用是因为v2版本对配置要求比较高,只有hf能给这么好的配置
v2版给出的部署都是反代,和直接用你的部署是一样的,属于单点配置。
刚才我按上面的思路,对go-proxy项目对replit部署路由vercel的create,是可以匿名了。 但对这个项目采用类似处理,总是用户无效。
@SokWith v1不推荐用hf了呀,文档都改了,v2在用是因为v2版本对配置要求比较高,只有hf能给这么好的配置
v2版给出的部署都是反代,和直接用你的部署是一样的,属于单点配置。
刚才我按上面的思路,对go-proxy项目对replit部署路由vercel的create,是可以匿名了。 但对这个项目采用类似处理,总是用户无效。
v2不是反代,反代是v1的
你那个cf不是部署,包括replit里面的,都只是反代。这个项目本来就是纯js,是可以直接部署的,只是需要把next编译一下吧?。 @SokWith cf部署的代码没有开放了(因为没有解决根本问题),实际上bingo可以把 ENDPOING 设置为其他项目的代理,包括 cf,你可以试试
ENDPOINT是指的WS_ENDPOINT的环境变量吗?这个变量是wss服务器的地址吧,换成cf的代理服务器并没有改善vercel的连接时长限制,主要还是vercel与wss服务器之间的数据交换时间。 所以,有没有可能,将create获取连接id的实现放在vercel上,就是原本访问 www.bing.com/turing/conversation/create换成访问 vercel.nbing.eu,org/turing.conversation/create,这样获得连接id,而客户端界面实现在cf worlers上? 这样折腾的意义主要是抱脸的反应实在太慢了,给项目部署留一条后路。
ENDPOINT和WS_ENDPOINT是两个,WS封杀力度不大,不用管
与WS连接的网络(ip)很重要,所以,薅了一下render的羊毛:replit的前端+render的ws: https://rpbingo.nbing.eu.org
唉,帅不过3秒,测试5次后似乎ip上锁了
目前封锁升级了: 1、对ENDPOINT,大面积的ip锁,目前只有少数几个云商还能够阵发性连接官网ENDPOINT,大多数的VLESS机场都受到限制了; 2、对WS_ENDPOINT,目前是行为封控,能够匿名访问的云商就更少了,迫切需要单独建立WSS代理服务器。 @weaigc 大佬,能抽空出一个单独建立WSS代理服务器的代码吗? ps:我在cf上大致按proxy.js建的服务器,是可以工作的(WS_ENDPOINT = "https://prosydney.nbing.eu.org“ ,限于登录用户可连接),但采用CLI部署到render、replit和huggingface都不可以,完全就是本地网络上一样。
@weaigc 另外,大佬,现在的登录逻辑是什么样的? 1、在前端网页界面,填写了url后,要去掉尝试选项才能登录;不去掉选项就一直是匿名? 2、在后端环境变量中,是设置一个BING_HEADER变量还是必须docker命令行?我在replit上设置这个环境变量没有作用;在后端环境变量设置后,前端网页该如何配置? 3、BING_COOKIE这个参数只是用于cf worker部署吗?
@weaigc 另外,大佬,现在的登录逻辑是什么样的? 1、在前端网页界面,填写了url后,要去掉尝试选项才能登录;不去掉选项就一直是匿名? 2、在后端环境变量中,是设置一个BING_HEADER变量还是必须docker命令行?我在replit上设置这个环境变量没有作用;在后端环境变量设置后,前端网页该如何配置? 3、BING_COOKIE这个参数只是用于cf worker部署吗?
因为很多人的账号只能用来画图,并不能聊天
