当前位置:首页>python>纯技术干货|Python全自动网站巡检工具|分块代码精讲+落地教程

纯技术干货|Python全自动网站巡检工具|分块代码精讲+落地教程

  • 2026-07-02 16:39:39
纯技术干货|Python全自动网站巡检工具|分块代码精讲+落地教程

适用场景:业务系统、企业官网日常自动化巡检台账归档

工具优势:全新重构无冗余BUG、整页无损截图、防篡改水印、钉钉加密推送、邮件永久备份、高容错无人值守运行

一、工具整体概述

本脚本为运维生产级全新纯净版,摒弃老旧冗余逻辑,模块化拆分所有功能。每一段代码独立可控、各司其职,支持按需增删功能、自定义参数,新手可直接复制运行,老手可快速二次开发,完美适配机构官网、企业业务系统常态化自动化巡检工作。

二、环境依赖导入模块(基础核心)

模块作用

统一导入脚本运行所需全部第三方库与内置库,为后续截图、浏览器驱动、消息推送、邮件归档、日志记录等所有功能提供底层支撑。

分块代码

# -*- coding: utf-8 -*-# 内置基础库import osimport timeimport loggingimport socketimport tracebackimport smtplib# 加密与网络请求库import requestsimport hmacimport hashlibimport base64# 图片处理库from PIL import Image, ImageDraw, ImageFontfrom io import BytesIO# 浏览器自动化库from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import By

代码精讲

编码声明:强制UTF-8编码,彻底解决中文乱码问题

基础工具库:负责文件路径处理、时间获取、异常捕获、邮件发送基础能力

网络加密库:支撑钉钉加密签名、POST接口推送请求

图片处理库:实现截图合成、水印绘制、图片格式转换

 selenium核心库:驱动浏览器、等待页面加载、模拟访问网页

三、全局日志+自定义配置模块(运维标准化)

模块作用

搭建标准化日志输出体系,替代原生print打印;集中管理所有可修改参数,无需通读全文,开箱即用、快速配置,适配不同运行环境。

分块代码

# ===================== 全局日志配置(运维标准化) =====================logging.basicConfig(    level=logging.INFO,    format="%(asctime)s - %(levelname)s - %(message)s",    handlers=[logging.StreamHandler()])logger = logging.getLogger(__name__)# ===================== 自定义核心配置区(直接修改此处) =====================# 浏览器驱动路径CHROME_PATH = r"C:\Program Files\Google\Chrome\Application\chrome.exe"CHROME_DRIVER_PATH = r"C:\Program Files (x86)\Google\chromedriver.exe"# 截图保存目录(自动创建,无需手动新建)LOCAL_SCREENSHOT_DIR = r"D:\网站巡检截图"os.makedirs(LOCAL_SCREENSHOT_DIR, exist_ok=True)# 待巡检网站列表(支持无限增删)WEBSITES = [    {"name""网易""url""https://www.163.com/#/"},    {"name""百度""url""https://www.baidu.com/"},    {"name""网站2""url""https://ynmuseum.org/index.html"},]# 钉钉机器人推送配置DINGTALK_WEBHOOK = "https://oapi.dingtalk.com/robot/send?access_token=xxx"DINGTALK_SECRET = "SECxxx"# 截图参数配置RETRY_TIMES = 2            # 访问失败重试次数SCREEN_WIDTH = 1920        # 截图宽度(高清大屏)IMAGE_QUALITY = 95         # 截图清晰度MIN_SCREEN_HEIGHT = 800    # 最小页面高度MAX_SCREEN_HEIGHT = 10000  # 最大页面高度,防止超长异常# 邮件归档配置QQ_EMAIL_USER = "你的QQ邮箱"QQ_EMAIL_PWD = "邮箱授权码"TO_EMAIL = "接收邮箱"QQ_SMTP_SERVER = "smtp.qq.com"QQ_SMTP_PORT = 465

代码精讲

日志系统:自带时间戳、日志级别,运行记录可追溯,故障排查更高效

自动建目录:无需手动创建文件夹,路径不存在自动生成,避免路径报错

站点列表模块化:新增/删除巡检网站仅需修改列表,无需改动核心逻辑

参数统一管理:截图尺寸、重试次数、推送配置全部集中,修改便捷

四、浏览器初始化模块(站点防拦截核心)

模块作用

初始化新版无头Chrome浏览器,屏蔽自动化爬虫特征、忽略证书异常,专门适配政务网站WAF防护,大幅降低页面拦截、访问失败概率。

分块代码

def init_chrome_driver():    # 浏览器参数配置    chrome_options = Options()    # 新版高性能无头模式(无弹窗、后台静默运行)    chrome_options.add_argument('--headless=new')    # 初始化窗口尺寸    chrome_options.add_argument(f'--window-size={SCREEN_WIDTH},{MIN_SCREEN_HEIGHT}')    # 页面语言设置中文    chrome_options.add_argument('--lang=zh-CN')    # 忽略HTTPS证书报错    chrome_options.add_argument('--ignore-certificate-errors')    # 关闭GPU加速,规避服务器运行报错    chrome_options.add_argument('--disable-gpu')    # 核心:屏蔽自动化特征,绕过政务网站爬虫检测    chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])    chrome_options.add_experimental_option("useAutomationExtension"False)    # 绑定本地Chrome程序路径    chrome_options.binary_location = CHROME_PATH    # 静默启动驱动,关闭冗余日志    service = Service(executable_path=CHROME_DRIVER_PATH, log_path=os.devnull)    driver = webdriver.Chrome(service=service, options=chrome_options)    # 页面超时与隐式等待设置,防止卡死    driver.set_page_load_timeout(60)    driver.implicitly_wait(5)    logger.info("✅ Chrome浏览器驱动初始化完成")    return driver

代码精讲

无头模式:后台静默运行,不弹出浏览器窗口,适配服务器定时任务

去自动化特征:解决90%政务网站识别爬虫、拦截访问的问题

证书忽略:适配部分老旧政务站点HTTPS证书不规范问题

超时防护60秒页面加载超时,避免脚本卡死停滞

五、水印绘制工具模块(合规台账必备)

模块作用

适配Windows系统中文字体,自动为截图叠加「站点名称+精准巡检时间」防篡改水印,半透明设计不遮挡页面内容,满足运维台账合规要求。

分块代码

def get_windows_font():    """获取系统中文字体,防止水印乱码"""    font_paths = [r"C:\Windows\Fonts\msyh.ttc"r"C:\Windows\Fonts\simhei.ttf"]    for path in font_paths:        if os.path.exists(path):            try:                return ImageFont.truetype(path, 36)            except Exception:                continue    return ImageFont.load_default(size=36)def add_time_watermark(img, website_name):    """为截图添加时间+站点水印"""    draw = ImageDraw.Draw(img)    font = get_windows_font()    # 水印文本内容    water_text = f"{website_name} | 巡检时间:{time.strftime('%Y-%m-%d %H:%M:%S')}"    # 自动计算水印位置(右上角)    text_bbox = draw.textbbox((00), water_text, font=font)    text_width, text_height = text_bbox[2], text_bbox[3]    x = img.width - text_width - 20    y = 20    # 半透明白色背景,兼顾美观与辨识度    draw.rectangle(        [(x-10, y-10), (x+text_width+10, y+text_height+10)],        fill=(255255255180)    )    # 绘制水印文字    draw.text((x, y), water_text, font=font, fill=(000))    return img

代码精讲

字体适配:优先微软雅黑、黑体,彻底解决中文水印乱码问题

动态位置:自动适配不同尺寸截图,水印固定右上角不偏移

防篡改设计:精准时间戳+站点名称,无法事后补录篡改

六、无损整页截图模块(核心优化)

模块作用

解决常规脚本截图顶部缺失、底部留白、页面截断、懒加载内容缺失等问题,自动适配动态页面高度,实现全屏完整无损截图,自带异常兜底机制。

分块代码

def capture_full_page(driver, website_name):    try:        # 1. 滚动至页面底部,加载所有懒加载内容        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")        time.sleep(2)        # 2. 多维度精准获取页面真实高度        page_height = driver.execute_script("""            return Math.min(                document.body.scrollHeight,                document.documentElement.scrollHeight,                document.body.offsetHeight,                document.documentElement.offsetHeight,                %d            );        """ % MAX_SCREEN_HEIGHT)        # 3. 限制高度区间,规避极端异常页面        page_height = max(page_height, MIN_SCREEN_HEIGHT)        page_height = min(page_height, MAX_SCREEN_HEIGHT)        # 4. 适配页面尺寸,滚回顶部(核心:保证截图从页头开始)        driver.set_window_size(SCREEN_WIDTH, page_height)        time.sleep(2)        driver.execute_script("window.scrollTo(0, 0);")        time.sleep(1)        # 5. 截图+格式处理        screenshot = driver.get_screenshot_as_png()        img = Image.open(BytesIO(screenshot))        img = img.convert("RGB"if img.mode in ("RGBA""P"else img        # 添加水印        img = add_time_watermark(img, website_name)        logger.info(f"✅ {website_name} 截图成功,尺寸:{SCREEN_WIDTH}×{page_height}")        return img    except Exception as e:        # 异常兜底:固定高度截图,绝不空手        logger.warning(f"⚠️ {website_name} 动态截图失败,启用兜底方案:{str(e)}")        driver.execute_script("window.scrollTo(0, 0);")        driver.set_window_size(SCREEN_WIDTH, MIN_SCREEN_HEIGHT)        time.sleep(2)        screenshot = driver.get_screenshot_as_png()        img = Image.open(BytesIO(screenshot)).convert("RGB")        return add_time_watermark(img, website_name)

代码精讲

先下滚后回顶:触发图片、内容懒加载,杜绝页面内容缺失

四维高度获取:兼容所有浏览器、SPA单页应用、老旧政务系统

高低限防护:避免页面过短空白、过长溢出,截图规整统一

兜底机制:动态截图失败自动切换固定尺寸,保证每次运行有截图输出

七、单站点巡检保存模块(容错重试)

模块作用

单独处理每个网站的访问、等待、截图、保存逻辑,内置失败自动重试机制,降低网络波动导致的误检、漏检概率。

分块代码

def capture_and_save(driver, name, url):    err_msg = ""    # 循环重试访问    for retry in range(RETRY_TIMES + 1):        try:            logger.info(f"[{retry+1}/{RETRY_TIMES+1}] 正在巡检:{name}")            # 访问目标网站            driver.get(url)            # 等待页面DOM加载完成            WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))            # 预留页面渲染缓冲时间            time.sleep(8)            # 执行整页截图            img = capture_full_page(driver, name)            # 时间戳命名,防止文件覆盖            timestamp = time.strftime('%Y%m%d_%H%M%S')            filename = f"{name}_{timestamp}.jpg"            filepath = os.path.join(LOCAL_SCREENSHOT_DIR, filename)            # 保存高清截图            img.save(filepath, format="JPEG", quality=IMAGE_QUALITY)            return filepath, filename, "成功"""        except Exception as e:            err_msg = str(e)[:100]            logger.error(f"{name} 第{retry+1}次巡检失败:{err_msg}")            time.sleep(2)    # 多次失败返回失败状态    fail_filename = f"{name}_失败_{time.strftime('%Y%m%d_%H%M%S')}.jpg"    return "", fail_filename, "失败", err_msg

代码精讲

多重重试:默认失败重试2次,规避瞬时网络波动、页面卡顿问题

页面加载等待:等待body标签加载完成,避免白屏、空截图

时间戳命名:每次截图文件名唯一,不会覆盖历史台账

状态返回:精准返回成功/失败状态+异常信息,用于后续汇总推送

八、钉钉加密推送模块(告警核心)

模块作用

遵循钉钉官方接口规范,采用HMAC-SHA256加密签名,标准POST请求推送巡检汇总报告,彻底修复43002报错,异常自动@全员告警。

分块代码

def get_dingtalk_sign():    """生成钉钉官方加密签名"""    timestamp = str(round(time.time() * 1000))    sign_str = f"{timestamp}\n{DINGTALK_SECRET}"    hmac_obj = hmac.new(DINGTALK_SECRET.encode("utf-8"), sign_str.encode("utf-8"), hashlib.sha256)    sign = base64.b64encode(hmac_obj.digest()).decode("utf-8")    return timestamp, signdef send_dingtalk_summary(results):    timestamp, sign = get_dingtalk_sign()    # 标准无转义接口地址,彻底修复43002报错    api_url = f"{DINGTALK_WEBHOOK}&timestamp={timestamp}&sign={sign}"    # 构建Markdown精美报告    msg = f"### 【网站自动巡检汇总】{time.strftime('%Y-%m-%d %H:%M:%S')}\n"    msg += f"**截图配置**:1920px宽屏 | 动态高度适配 | 时间水印归档\n\n"    # 遍历拼接所有站点巡检结果    for res in results:        msg += f"#### {res['name']} - {res['status']}\n"        msg += f"> 访问地址:{res['url']}\n"        msg += f"> 文件名称:{res['filename']}\n"        if res["error_msg"]:            msg += f"> 异常信息:{res['error_msg']}\n\n"        else:            msg += "\n"    # 统计成功/失败数量    success_num = sum(1 for r in results if r["status"] == "成功")    fail_num = len(results) - success_num    msg += f"**巡检统计**:总计{len(results)}个网站 | 成功{success_num}个 | 失败{fail_num}个"    # POST请求推送    try:        res = requests.post(            api_url,            json={"msgtype""markdown""markdown": {"title""网站巡检报告""text": msg}, "at": {"isAtAll": fail_num > 0}},            timeout=30        )        if res.json().get("errcode") == 0:            logger.info("✅ 钉钉巡检报告推送成功")        else:            logger.error(f"❌ 钉钉推送失败:{res.json().get('errmsg')}")    except Exception as e:        logger.error(f"❌ 钉钉推送异常:{str(e)}")

代码精讲

加密签名:官方加密算法,防止机器人接口被恶意调用

修复43002报错:采用标准POST请求、无URL转义问题

智能@全员:仅巡检失败时@全员,无问题不打扰

结构化报告:站点状态、地址、文件名、异常信息一目了然

九、邮件归档模块(永久备份)

模块作用

自动汇总所有成功截图,打包为邮件附件发送,实现巡检台账永久备份,支持溯源复盘,弥补钉钉消息过期丢失问题。

分块代码

def send_email_with_screenshots(results):    logger.info("开始构建巡检邮件报告")    # 筛选有效截图文件    success_list = [r for r in results if r["status"] == "成功" and os.path.exists(r["filepath"])]    # 无截图则跳过发送    if not success_list:        logger.info("无有效截图,跳过邮件发送")        return    try:        # 构建邮件主体        msg = MIMEMultipart()        msg["From"] = QQ_EMAIL_USER        msg["To"] = TO_EMAIL        msg["Subject"] = f"网站巡检截图归档-{time.strftime('%Y-%m-%d %H:%M:%S')}"        # 邮件正文内容        body = f"""网站自动化巡检归档报告巡检时间:{time.strftime('%Y-%m-%d %H:%M:%S')}巡检总数:{len(results)}个 | 成功{len(success_list)}个 | 失败{len(results)-len(success_list)}巡检明细:"""        for res in results:            body += f"\n- {res['name']}{res['status']}{res['error_msg'if res['error_msg'else'无异常'})"        msg.attach(MIMEText(body, "plain""utf-8"))        # 绑定所有截图为附件        for item in success_list:            with open(item["filepath"], "rb"as f:                img_attach = MIMEImage(f.read())                img_attach.add_header("Content-Disposition""attachment", filename=item["filename"])                msg.attach(img_attach)        logger.info(f"✅ 成功绑定{len(success_list)}个截图附件")        # 双重重试发送        send_ok = False        for retry in range(2):            try:                smtp = smtplib.SMTP_SSL(QQ_SMTP_SERVER, QQ_SMTP_PORT, timeout=20)                smtp.login(QQ_EMAIL_USER, QQ_EMAIL_PWD)                smtp.sendmail(QQ_EMAIL_USER, TO_EMAIL, msg.as_string())                smtp.quit()                send_ok = True                break            except Exception as e:                logger.error(f"邮件发送重试{retry+1}失败:{str(e)}")                time.sleep(3)        logger.info("✅ 邮件发送成功" if send_ok else "❌ 邮件发送最终失败")    except Exception as e:        logger.error(f"❌ 邮件构建失败:{str(e)}")        traceback.print_exc()

代码精讲

智能筛选:仅打包成功截图,无效失败截图不冗余发送

双重重试机制:解决SMTP网络波动导致的发送失败

完整台账:邮件正文附带全部站点巡检结果,附件留存截图

永久留存:邮件长期保存,解决钉钉消息过期清空问题

十、主函数调度模块(程序入口)

模块作用

统一调度所有功能模块,实现浏览器初始化、批量巡检、资源释放、结果推送、邮件归档全流程自动化,是程序的核心调度入口。

分块代码

def main():    """全自动巡检主流程"""    logger.info("===== 启动全自动网站巡检任务 =====")    # 初始化浏览器    driver = init_chrome_driver()    inspect_results = []    # 批量循环巡检所有网站    for site in WEBSITES:        filepath, filename, status, err = capture_and_save(driver, site["name"], site["url"])        inspect_results.append({            "name": site["name"], "url": site["url"], "status": status,            "filepath": filepath, "filename": filename, "error_msg": err        })        time.sleep(3)    # 强制释放浏览器资源,杜绝进程残留    driver.quit()    logger.info("✅ 浏览器资源已释放")    # 执行钉钉推送+邮件备份    send_dingtalk_summary(inspect_results)    send_email_with_screenshots(inspect_results)    # 控制台输出最终汇总结果    logger.info("\n===== 巡检任务全部完成 =====")    for res in inspect_results:        logger.info(f"{res['name']} | {res['status']} | {res['filename']}")# 程序运行入口if __name__ == "__main__":    main()

代码精讲

流程闭环:初始化批量巡检资源释放推送归档,全自动化无人工干预

资源兜底:运行结束强制关闭浏览器,无进程残留、无内存泄漏

结果汇总:统一收集所有站点巡检状态,用于推送和台账统计

适配定时任务:无弹窗、无阻塞,完美适配Windows/Linux定时执行

十一、落地运行须知

1. 依赖安装命令:pip install selenium pillow requests

2. 必须保证Chrome浏览器与ChromeDriver版本完全匹配

3. 程序路径、截图路径禁止中文、空格、特殊符号

4. 部分网站WAF拦截属于站点防护机制,脚本已做最大化适配优化

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 04:00:19 HTTP/2.0 GET : https://f.mffb.com.cn/a/495810.html
  2. 运行时间 : 0.133591s [ 吞吐率:7.49req/s ] 内存消耗:4,917.94kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=02cccaaf8b93aa0df77c7d86012a358f
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000546s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000841s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000322s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000345s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000479s ]
  6. SELECT * FROM `set` [ RunTime:0.000212s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000563s ]
  8. SELECT * FROM `article` WHERE `id` = 495810 LIMIT 1 [ RunTime:0.000563s ]
  9. UPDATE `article` SET `lasttime` = 1783022419 WHERE `id` = 495810 [ RunTime:0.007706s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000312s ]
  11. SELECT * FROM `article` WHERE `id` < 495810 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000764s ]
  12. SELECT * FROM `article` WHERE `id` > 495810 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002173s ]
  13. SELECT * FROM `article` WHERE `id` < 495810 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.022738s ]
  14. SELECT * FROM `article` WHERE `id` < 495810 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.005709s ]
  15. SELECT * FROM `article` WHERE `id` < 495810 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001036s ]
0.135785s