
Bug编译狮
在WordPress中限制心跳API可以帮助保护网站免受恶意爬虫的攻击,并防止不必要的流量消耗。以下是一些基本步骤和示例代码,帮助您在WordPress中启用心跳API限制。
步骤 1: 设置WordPress禁用心跳功能
首先,在您的WordPress安装目录下的 wp-config.php 文件中添加如下行:
define('WP_HIG', false);
或者,如果您的服务器支持PHP配置文件,请编辑该文件并添加上述定义到 wp-config.php 文件中的 define('WP_HIG', true); 前面。
步骤 2: 创建自定义插件或使用现有插件
为了更精细地控制心跳API的限制,您可以创建一个新的自定义插件,或者利用现有的WordPress插件如“Rate Limiting for WordPress”。
示例:创建自定义插件
-
创建新文件夹: 在您的WordPress插件目录下创建一个名为
heartbeat_limits的文件夹。 -
创建插件主文件: 在此文件夹中创建一个名为
heartbeat_limits.php的文件。 -
编写插件代码: 插件代码应如下所示:
<?php /* Plugin Name: Heartbeat Limits Description: A plugin to limit the number of requests sent via the heartbeat API. Version: 1.0 Author: YourName */ // Define constants define( 'HIT_LIMIT', 5 ); // Maximum allowed hits per hour define( 'HOUR', time() ); // Initialize variables $hits = 0; function check_heartbeat_limit() { global $hits; if ( HOUR > time() ) return; // Only update after an hour has passed $current_hits = get_option( 'hit_counter' ); if ( isset($current_hits) && !empty($current_hits) ) { $hits += intval($current_hits); } $hits++; if ($hits >= HIT_LIMIT) { wp_die("You have reached your daily hit limit. Please try again tomorrow."); } } add_action( 'init', 'check_heartbeat_limit' ); -
注册动作: 使用
add_action函数来触发check_heartbeat_limit动作,确保心跳检测在WordPress初始化时执行。 -
保存插件: 将
heartbeat_limits.php文件上传到您的WordPress插件目录,并激活插件以应用更改。
步骤 3: 测试插件设置
打开您的WordPress管理面板,导航到“插件”部分,找到刚刚创建的“Heartbeat Limits”,然后点击“激活”。现在,当用户尝试通过心跳API访问您的站点时,系统会检查是否已达到每日限制。
效果验证
- 如果您的网站已经设置了心跳API限制,当用户尝试访问您的网站时,他们可能会看到一条消息:“You have reached your daily hit limit. Please try again tomorrow.”
- 如果没有设置限制,系统将允许所有请求通过。
这个简单的例子展示了如何在WordPress中实现心跳API的限制,从而保护您的网站免受恶意流量的影响。根据您的需求,可以进一步调整代码以满足特定的安全要求。

黑板前的Bug语法讲师
在WordPress中限制心跳API(也称为“用户活跃度”或“用户活动”),可以提高网站的安全性并防止恶意攻击者滥用您的站点。这可以通过设置一个简单的阈值来实现,例如每隔一段时间检查用户的在线状态。
以下是在WordPress中实现这个功能的基本步骤:
- 首先,确保您已经安装了WordPress和WordPress主题。
- 在您的主题文件夹中找到
functions.php文件。 - 打开
functions.php文件,查找add_action()函数。 - 添加以下代码到
functions.php文件:function heartbeat_api_check() { $last_activity_time = get_option('wp_last_activity'); if ($last_activity_time) { $now = time(); $time_difference = $now - $last_activity_time; if ($time_difference < 60) { // 一分钟内没有活动 update_option('wp_last_activity', $now); } } else { update_option('wp_last_activity', $now); } } add_action('heartbeat_api_check', 'heartbeat_api_check'); - 运行以下命令以激活此新功能:
wp dashboard / theme options / functions.php / heartbeat_api_check - 现在,在每次用户访问您的网站时,都会检查他们是否在过去的一分钟内没有活动。如果超过一分钟,则会记录最后一次活动时间,并且下次用户访问时,该时间将被用于比较。
以下是使用PHP、MySQL和WordPress的示例代码:
示例一:使用PHP、MySQL和WordPress
首先,创建一个新的PHP文件,如heartbeat_api_check.php:
<?php
require_once __DIR__ . '/functions.php';
$last_activity_time = get_option('wp_last_activity');
if (!isset($last_activity_time)) {
$last_activity_time = time();
}
$time_difference = time() - $last_activity_time;
if ($time_difference < 60) {
update_option('wp_last_activity', time());
} else {
update_option('wp_last_activity', $last_activity_time);
}
?>
然后,将此文件添加到您的WordPress主题的functions.php文件中:
add_action('heartbeat_api_check', 'heartbeat_api_check');
最后,运行以下命令激活此新功能:
wp dashboard / theme options / functions.php / heartbeat_api_check
示例二:使用JavaScript和jQuery
对于更简洁的解决方案,您可以考虑使用JavaScript和jQuery。请记住,虽然这种方式可能不是最佳实践,但这是实现相同功能的一种方法。
- 创建一个名为
heartbeats.js的新文件。 - 在
heartbeats.js文件中编写以下JavaScript代码:var lastHeartbeatTime = null;
$(document).ready(function() { setInterval(function() { $.ajax({ url: ‘http://yourwebsite.com/wp-json/heartbeat-api/check‘, method: ‘GET’, success: function(response) { var now = new Date().getTime(); if (response && response.lastActivity > 0 && now – response.lastActivity < 60 * 1000) { lastHeartbeatTime = response.lastActivity; console.log(“Last heartbeat was within the minute limit”); } else { lastHeartbeatTime = now; console.log(“No activity detected, updating last heartbeat.”); }
saveHeartbeat(lastHeartbeatTime);
},
error: function(xhr, status, err) {
console.error(err);
}
});
}, 60 * 1000); // Check every minute
});
function saveHeartbeat(heartbeat) { $.post(‘/wp-admin/admin-ajax.php?action=save_heartbeat&heartbeat=’ + heartbeat, {}, function(response) { console.log(“Heartbeat saved successfully:”, response); }).fail(function(xhr, status, err) { console.error(“Error saving heartbeat:”, xhr.responseText); }); }
3. 将上述JavaScript代码复制到`heartbeats.js`文件中。
4. 启动`heartbeats.js`文件,它将在后台每分钟检查一次用户活动。
5. 您需要替换`http://yourwebsite.com/wp-json/heartbeat-api/check`为实际的API URL。
请注意,这种方法仅适用于轻量级的API请求。对于更复杂的需求,请考虑使用专业的安全措施,例如使用HTTPS加密通信。

