你好,这里是虎绿林。
微信 SwimmingTiger(加好友备注hu60,否则不容易通过),手机 18502433620(仅短信,拒接来电),邮箱 hu60.cn@qq.com(不常看),QQ 905172616(较少上线)
@rkonfj,如果http.NewRequestWithContext(ctx, http.MethodGet, c.fullURL("/user.index.json")不传递IP,nginx显然不知道用户的IP是什么。
@rkonfj,这里达到了限速,所以没有人可以认证通过。顺便一提 udSySELORQDee6_Jxv-YPMEAsAAA 已经被我设为无效了,所以公开也没关系。
// 获取sid(跨域时禁用cookie)
sid := getRequestParam(r, "sid", noCookie)
if sid == "" || sid == "udSySELORQDee6_Jxv-YPMEAsAAA" {
m.responseUnauthenticated(ws)
logrus.Warn("authentication failed: sid not found")
return
}
// 这里达到了限速
res, err := m.hu60Client.GetProfile(context.Background(), sid)
if err != nil {
m.responseUnauthenticated(ws)
logrus.Warn("authentication failed: ", err.Error())
return
}
@rkonfj,因为现在的超速都算在127.0.0.1头上了,所以大家都连不上。把真实IP填充在头信息里,我就可以把限速算在具体用户头上了。
@rkonfj,我还有一个建议,你可以在HTTP请求中添加头信息,把速率限制转移给单个用户。
比如,把用户的真实IP填充在HTTP_CF_CONNECTING_IP里,然后我在hu60 api里添加真实IP判断。
这个头信息的名称要可自定义,因为我不想让别人猜到来伪造IP记录。
/**
* 特定IP判定范围
*/
$CC_IP_LIMIT = [
// 设置特定IP n秒最多能访问的次数
'127.0.0.1' => 100,
];
/**
* 真实IP
*/
// 无代理时使用
$CC_REAL_IP = $_SERVER['REMOTE_ADDR'];
// 采用CloudFlare或百度云加速代理时使用
#$CC_REAL_IP = $_SERVER['HTTP_CF_CONNECTING_IP'];
@rkonfj,达到速率上限之后,会返回这样的页面:
ERRO[2023-03-30T09:57:46+08:00] answerHu60 get chatroom err: error, status code: 503, message: <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>刷新不规范,虎友两行泪</title>
</head>
<body>
<h4>
虎绿林第三区交通委提醒您:<br/>
网址千万条,耐心第一条。<br/>
刷新不规范,虎友两行泪。
</h4>
虎绿林低速网络限速10秒内最多访问50次(每秒5次)。<br/>
您在20秒内访问了169次(每秒8.45次),您已超速。<br/>
作为惩罚,吊销您的虎绿林通行证14秒钟,在这段时间内您将不能访问虎绿林。<br/>
您的IP地址为122.9.147.96,违章记录已存档。
请勿反复刷新,否则违章记录将延续。<br/>
</body>
</html>
建议的解决方案:限制单个用户的最大连接数,比如限制为最大10个连接。注意:要按sid判断连接数,不能按uid判断,因为sid转uid要查询虎绿林API。
@晨曦,你想让我看什么记录
@TabKey9,hu60bot不慢吧
@TabKey9,你说的哪一个?
@hu60bot @ChatGPT @罐子2号 @靓仔 @QA @Chatbot @GPTbot
@无名啊,H265我就没必要用这张卡了,我可以用NVIDIA 3080Ti。
@rkonfj,更新了
@rkonfj,好
@值班电工,https://www.mthreads.com/product/S80
网页上写着4096个MUSA核心

@小兽,聊天框相关
@rkonfj,更新了
@残缘,content是一个JSON数组,只是@消息的数组恰好只有一个成员。
然后values被设计为通过数组或对象同时解析多条消息,所以如果只有一条消息要解析,就要在原有的数组外层再套一个数组。
@残缘,你是写错了啊,还要套一层数组。
{
"input": "json",
"output": "html",
"values": [
[{"type":"atMsg","uid":-50,"pos":"聊天室“ChatGPT”第734楼中","url":"addin.chat.ChatGPT.{$BID}?floor=734#734","msg":[{"type":"markdown"},{"type":"text","value":"\r\n"},{"type":"at","tag":"#9977","uid":"9977"},{"type":"text","value":",很抱歉,如果我没有完全理解您的问题并提供有用的解决方案。在某些情况下,"},{"type":"mdpre","data":"`cellWidthIncrement`"},{"type":"text","value":" 可能是调整表格布局的最佳方法,因为它可以快速地应用于所有单元格,而不需要太多的代码。但是,对于更复杂的布局需求,自定义单元格通常是更好的选择,因为它提供了更大的灵活性和自定义性。\r\n\r\n作为一名 AI,我会尽我所能提供有用的信息和建议,但有时候也会出现误解或不足之处。希望我的回答能够帮助您解决问题。"}]}]
]
}
@rkonfj,为了和之前的代码保持兼容,可以考虑使用服务访问点来区分订阅的消息。
比如,认为/ws/msg订阅了内信,/ws/msg,bot_online订阅了内信和机器人上下线,等等。
或者如果你更喜欢用?传递参数,也可以。
@rkonfj,最好把消息改为订阅制,只向订阅了特定类型消息的用户转发消息。
比如,有些连接可能对内信不感兴趣,另一些对机器人上下线不感兴趣。
@rkonfj,而且该功能并不安全,可以导致广播风暴
@rkonfj,我希望添加一个选项,让我从服务器层面禁用该功能。我不希望用户的上下线信息被广播给其他用户。
@rkonfj,我可以禁用上下线信息吗?这会让用户隐私泄露。
@rkonfj,@ChatGPT好像收到了一些它不应该收到的消息,包括不属于它的uid上下线事件,以及莫名其妙的ack(ping消息的回应应该是pong,不需要ack)。
