php实现请求限流人机验证真人验证代码
代码语言:php
所属分类:其他
代码描述:php实现请求限流人机验证真人验证代码,可检测是否机器爬虫操作进行验证,可手动触发验证机制,可设置频率。
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<?php
/**
* guard.php - PHP 5.6 单文件人机验证脚本
* 用法:在任意需要保护的 PHP 页顶引入:require __DIR__.'/guard.php';
* 提示:必须在任何输出前引入,否则 setcookie/header 可能失败。
*/
if (!defined('GUARD_LOADED')) {
define('GUARD_LOADED', 1);
// ========== 配置 ==========
$GUARD = array(
'secret' => 'CHANGE1_ME_TO_A_RANDOM_32_64_CHARS', // 必改
'cookie_name' => 'guard_clearance',
'cookie_ttl' => 10, // clearance 生效时长(秒)
'rate_limit_per_min' => 2, // 每分钟最大请求数(超过触发挑战)
'challenge_wait' => 3, // 挑战页等待秒数
'trust_proxy' => false, // 若站点在可信代理后,请根据实际开启并正确取源 IP
'force_param' => 'guard_verify', // 手动触发验证的 GET 参数
);
// ========== Polyfill ==========
if (!function_exists('hash_equals')) {
function hash_equals($a, $b) {
if (!is_string($a) || !is_string($b) || strlen($a) !== strlen($b)) return false;
$res = $a ^ $b;
$ret = 0;
for ($i = 0; $i < strlen($res); $i++) $ret |= ord($res[$i]);
return $ret === 0;
}
}
// ========== 工具函数 ==========
function guard_ip() {
global $GUARD;
$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0';
if ($GUARD['trust_proxy']) {
if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$ip = $_SERVER['HTTP_CF_CONNECTING_IP.........完整代码请登录后点击上方下载按钮下载查看















网友评论0