日志升级与缓存修复最终版
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../WhitelistGate.php';
|
||||
require_once __DIR__ . '/../Page/FpPageRenderer.php';
|
||||
require_once __DIR__ . '/../Page/RiskPageRenderer.php';
|
||||
require_once __DIR__ . '/../FpUrlHelper.php';
|
||||
require_once __DIR__ . '/../RiskSecondaryGate.php';
|
||||
require_once __DIR__ . '/../RiskSecondaryCache.php';
|
||||
require_once __DIR__ . '/../RiskSecondarySession.php';
|
||||
require_once __DIR__ . '/../ClientIpResolver.php';
|
||||
|
||||
/**
|
||||
@@ -18,6 +20,12 @@ class RouteResolver
|
||||
{
|
||||
extract($ctx, EXTR_SKIP);
|
||||
|
||||
// 白名单优先于正品模式:跳过二次风控等,直达真实页
|
||||
if (!empty($_SESSION['cloak_whitelist_fast'])) {
|
||||
self::renderWhitelistFp($logs, $config_name ?? '');
|
||||
return;
|
||||
}
|
||||
|
||||
// 正品模式:始终走安全页逻辑
|
||||
if (SHOW_SITE_MODE_SWITCH == 'zp') {
|
||||
self::renderSafePage($logs, $v_info);
|
||||
@@ -28,13 +36,26 @@ class RouteResolver
|
||||
|| SHOW_SITE_MODE_SWITCH == 'fp';
|
||||
|
||||
if ($showFp) {
|
||||
self::renderFpOrRisk($logs, $v_info);
|
||||
self::renderFpOrRisk($logs, $v_info, $config_name ?? '');
|
||||
return;
|
||||
}
|
||||
|
||||
self::renderSafePage($logs, $v_info);
|
||||
}
|
||||
|
||||
/**
|
||||
* 白名单快速路径:写日志并输出真实页,不触发二次风控 / API
|
||||
*
|
||||
* @param array $logs
|
||||
* @param string $config_name
|
||||
*/
|
||||
private static function renderWhitelistFp(array $logs, $config_name = '')
|
||||
{
|
||||
$logs['result'] = 'true';
|
||||
$logs['reason'] = '';
|
||||
self::renderFpPage($logs, $config_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $logs
|
||||
*/
|
||||
@@ -69,7 +90,7 @@ class RouteResolver
|
||||
}
|
||||
}
|
||||
|
||||
private static function renderFpOrRisk(array $logs, $v_info)
|
||||
private static function renderFpOrRisk(array $logs, $v_info, $config_name = '')
|
||||
{
|
||||
if (AUTO_BLACK == 'ON') {
|
||||
$times = howmanytimesbyip($v_info->v_ip);
|
||||
@@ -81,21 +102,22 @@ class RouteResolver
|
||||
$_SESSION['visit_to_3'] = '1';
|
||||
}
|
||||
|
||||
if (RiskSecondaryGate::isEnabled()) {
|
||||
if (RiskSecondaryGate::isEnabledForRequest()) {
|
||||
$cached = RiskSecondaryCache::get(ClientIpResolver::resolve());
|
||||
if ($cached !== null) {
|
||||
self::renderFromRiskCache($logs, $v_info, $cached);
|
||||
self::renderFromRiskCache($logs, $v_info, $cached, $config_name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (($_SESSION['visit_to_3'] ?? '1') != '3'
|
||||
&& RiskSecondaryGate::isEnabled()) {
|
||||
&& RiskSecondaryGate::isEnabledForRequest()) {
|
||||
// 二次风控:先写 wait 状态,f_check 完成后再更新 result / fp_url(避免 true+空跳转)
|
||||
$logs['result'] = 'wait';
|
||||
$logs['reason'] = '二次风控检测中';
|
||||
$logs['fp_url'] = '';
|
||||
$log_id = write_log_db($logs);
|
||||
RiskSecondarySession::markWaitLog($log_id);
|
||||
$riskCtx = [
|
||||
'logs' => $logs,
|
||||
'v_info' => $v_info,
|
||||
@@ -111,22 +133,36 @@ class RouteResolver
|
||||
|
||||
$logs['result'] = 'true';
|
||||
$logs['reason'] = '';
|
||||
FpPageRenderer::render(['logs' => $logs]);
|
||||
self::renderFpPage($logs, $config_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $logs
|
||||
* @param string $config_name
|
||||
*/
|
||||
private static function renderFpPage(array $logs, $config_name = '')
|
||||
{
|
||||
FpPageRenderer::render([
|
||||
'logs' => $logs,
|
||||
'config_name' => $config_name,
|
||||
'skip_log' => RiskSecondarySession::shouldSkipFpPageLog(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 二次风控 Session 缓存命中:跳过 cloakjs / byApiRisk。
|
||||
*
|
||||
* @param array $logs
|
||||
* @param array $cached
|
||||
* @param array $logs
|
||||
* @param array $cached
|
||||
* @param string $config_name
|
||||
*/
|
||||
private static function renderFromRiskCache(array $logs, $v_info, array $cached)
|
||||
private static function renderFromRiskCache(array $logs, $v_info, array $cached, $config_name = '')
|
||||
{
|
||||
RiskSecondaryCache::applyToSession($cached);
|
||||
$apiResponse = RiskSecondaryCache::toApiResponse($cached);
|
||||
|
||||
$logs['result'] = $apiResponse['result'] ? 'true' : 'false';
|
||||
$logs['reason'] = $apiResponse['reason'];
|
||||
$logs['reason'] = cloak_cache_hit_log_reason($logs['result']);
|
||||
$logs['fp_url'] = trim((string) ($apiResponse['link'] ?? ''));
|
||||
if ($logs['fp_url'] === '') {
|
||||
$logs['fp_url'] = $logs['result'] === 'true'
|
||||
@@ -139,7 +175,7 @@ class RouteResolver
|
||||
return;
|
||||
}
|
||||
|
||||
FpPageRenderer::render(['logs' => $logs]);
|
||||
self::renderFpPage($logs, $config_name);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user