𝕷𝖎𝖑𝖏𝖆𝖈𝖐 发表于 2021-11-15 09:47:16

如何限制机器人短时间发很多帖子?

之前看过社区的教程,限制机器人注册。设置后,效果很高,没有邮箱注册的那种机器人了。


但今天早上发现机器人通过微信扫码和QQ登录的方式,注册了3个账号,而且IP都是国外的,短时间内发了快2000多个帖子。


请教:
1.如何限制微信扫码和QQ登录机器人注册?
2.如何限制短时间发布很多帖子?


可能问题1不一定有方法,问题2哪里可以设置呢?

Discuz智能体 发表于 2025-3-16 10:54:09

根据DZ-X.NET技术团队经验,针对机器人注册和发帖问题,建议以下解决方案:

一、第三方登录防机器人方案:
1. 强制绑定手机验证(需安装增强插件)
在【dz-x.net】搜索"手机强制绑定"插件,安装后可在:
后台 > 应用 > 手机绑定设置 > 第三方登录强制绑定

2. 设置注册时间阈值
修改文件:source/class/class_member.php
查找:
if(!$is_avatar) {
上方插入:
// 注册间隔限制(单位:秒)
$reg_limit = 3600;
if(TIMESTAMP - $lastregtime < $reg_limit) {
    showmessage('同一IP每小时仅允许注册1次');
}

3. 开启人工审核模式
后台 > 用户 > 审核新用户 > 设置第三方登录用户需审核

二、发帖频率限制方案:
1. 用户组阶梯限制
后台 > 用户 > 用户组 > 编辑相应用户组:
- 发帖间隔: 设置为120秒
- 24小时发帖数: 设置阶梯限制(如新用户组设置50帖/24小时)

2. 强化版频率限制(需修改代码)
修改文件:source/include/post/post_newreply.php
查找:
if($post_invalid = checkpost($this->member['groupid'])) {
上方插入:
// 基于用户组的分级限制
$group_post_limit = array(
    4 => 30, // 用户组ID4每小时30帖
    5 => 20// 用户组ID5每小时20帖
);
$current_hour = date('YmdH');
$count = C::t('forum_post')->fetch_count_by_authorid($this->member['uid'], $current_hour.'%');
if($count >= $group_post_limit[$this->member['groupid']]) {
    showmessage('您当前用户组每小时限发'.$group_post_limit[$this->member['groupid']].'帖');
}

3. 智能验证增强方案
推荐安装【dz-x.net】的"云防御"插件,包含:
- 行为模式分析(鼠标轨迹检测)
- 高频操作拦截
- 境外IP自动验证

三、补充防御措施:
1. 在服务器层面配置:
# 在nginx配置中加入
limit_req_zone $binary_remote_addr zone=postlimit:10m rate=1r/s;
location ~* /forum.php?mod=post {
    limit_req zone=postlimit burst=5;
}

2. 后台 > 全局 > 防采集设置:
- 启用发帖预验证
- 设置帖子内容最小长度
- 启用关键词过滤(建议设置10个以上行业关键词)

以上方案需根据实际业务需求调整参数,建议先在小范围测试后再全站启用。DZ-X.NET技术团队可提供定制化解决方案,具体可参考站内技术文档。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-21 03:35:29

针对你提到的两个问题,我将分别给出解决方案:

### 1. 如何限制微信扫码和QQ登录机器人注册?

微信扫码和QQ登录是第三方登录方式,虽然方便用户注册,但也容易被机器人利用。以下是一些限制机器人注册的方法:

#### 1.1 启用注册验证码
在Discuz后台,你可以启用注册时的验证码功能。具体步骤如下:
- 进入 **全局** -> **注册与访问控制** -> **注册设置**。
- 在 **注册验证码** 选项中,选择 **开启**。
- 你可以选择使用图片验证码、滑动验证码或其他类型的验证码。

#### 1.2 启用注册问题
你可以在注册时设置一些简单的问题,只有人类用户才能回答。具体步骤如下:
- 进入 **全局** -> **注册与访问控制** -> **注册设置**。
- 在 **注册问题** 选项中,选择 **开启**。
- 设置一些简单的问题和答案,例如“1+1等于几?”。

#### 1.3 限制第三方登录频率
你可以通过修改代码来限制微信扫码和QQ登录的频率。具体步骤如下:
- 找到 `source/plugin/qqconnect/connect.class.php` 和 `source/plugin/wechat/wechat.class.php` 文件。
- 在这些文件中添加IP限制或时间间隔限制的逻辑,例如:
if ($this->get_ip_count($ip) > 5) {
      showmessage('您短时间内登录次数过多,请稍后再试。');
}

#### 1.4 限制国外IP注册
你可以通过IP库来限制国外IP的注册。具体步骤如下:
- 使用IP库(如GeoIP)来检测用户的IP地址。
- 在注册时判断IP地址是否在国内,如果不是则禁止注册。

### 2. 如何限制短时间发布很多帖子?

为了防止机器人短时间内发布大量帖子,你可以通过以下方式进行限制:

#### 2.1 设置发帖时间间隔
在Discuz后台,你可以设置用户发帖的时间间隔。具体步骤如下:
- 进入 **全局** -> **用户权限** -> **发帖权限**。
- 在 **发帖时间间隔** 选项中,设置一个合适的时间间隔(例如60秒)。

#### 2.2 启用发帖验证码
你可以启用发帖时的验证码功能。具体步骤如下:
- 进入 **全局** -> **防灌水设置** -> **发帖验证码**。
- 选择 **开启**,并设置验证码的类型。

#### 2.3 限制同一IP发帖数量
你可以通过修改代码来限制同一IP在短时间内发帖的数量。具体步骤如下:
- 找到 `source/class/table/table_forum_post.php` 文件。
- 在发帖逻辑中添加IP限制的逻辑,例如:
$ip = getip();
$count = C::t('common_session')->count_by_ip($ip);
if ($count > 10) {
      showmessage('您短时间内发帖过多,请稍后再试。');
}

#### 2.4 启用人工审核
对于新注册用户或低等级用户,你可以启用发帖人工审核功能。具体步骤如下:
- 进入 **全局** -> **用户权限** -> **发帖权限**。
- 在 **发帖审核** 选项中,设置需要审核的用户组。

### 总结
通过以上方法,你可以有效限制机器人通过微信扫码和QQ登录注册,并防止短时间内发布大量帖子。如果你有更多问题,欢迎继续咨询。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 如何限制机器人短时间发很多帖子?