changedetection.io 网站变更监控工具:技术架构与自动化监控解决方案
changedetection.io 网站变更监控工具技术架构与自动化监控解决方案【免费下载链接】changedetection.ioBest and simplest tool for website change detection, web page monitoring, and website change alerts. Perfect for tracking content changes, price drops, restock alerts, and website defacement monitoring—all for free or enjoy our SaaS plan!项目地址: https://gitcode.com/GitHub_Trending/ch/changedetection.io在数字化时代网站内容监控成为企业运营和技术管理的关键环节。changedetection.io 作为一款开源网站变更检测工具通过自动化监控网页内容变化、价格波动和库存状态为技术团队提供了一套完整的内容监控解决方案。该工具支持 HTML、JSON、PDF 多种格式的内容检测能够识别价格变化、库存状态更新、内容编辑等关键变更并通过邮件、Discord、Slack、Webhook 等多种渠道实时通知用户。技术架构与核心组件changedetection.io 采用模块化设计将监控逻辑、内容提取、差异检测和通知系统分离为独立组件确保系统的可扩展性和维护性。核心架构包含以下几个技术层内容提取层HTTP 请求模块基于 Python requests 库实现基础网页抓取支持代理配置和自定义请求头浏览器渲染模块集成 Playwright 和 Selenium 用于处理 JavaScript 动态内容PDF 解析模块支持 PDF 文档的内容提取和变更检测差异检测引擎文本比对算法采用 Levenshtein 距离算法识别文本差异结构化数据对比针对 JSON 格式数据实现深度对比视觉差异检测通过图像相似度算法检测视觉内容变化规则处理系统条件引擎支持复杂的逻辑条件组合Match all / Match any插件架构通过插件系统扩展自定义检测规则调度管理器基于 Cron 表达式的时间调度系统通知与集成层多通道通知支持邮件、Webhook、Discord、Telegram 等多种通知方式API 接口提供完整的 RESTful API 用于系统集成数据持久化基于文件系统的数据存储机制图1changedetection.io 主界面展示监控列表、分组管理和实时状态面板部署与配置指南Docker 容器化部署changedetection.io 提供完整的 Docker 支持可通过 Docker Compose 快速部署。以下是基础部署配置# docker-compose.yml 基础配置 services: changedetection: image: ghcr.io/dgtlmoon/changedetection.io container_name: changedetection volumes: - changedetection-data:/datastore ports: - 127.0.0.1:5000:5000 restart: unless-stopped volumes: changedetection-data:关键环境变量配置环境变量默认值功能说明FETCH_WORKERS10并发抓取工作进程数MINIMUM_SECONDS_RECHECK_TIME3最小重新检查间隔秒TZUTC时区设置影响调度时间PLAYWRIGHT_DRIVER_URL-Playwright 浏览器驱动地址HTTP_PROXY/HTTPS_PROXY-HTTP/HTTPS 代理配置浏览器渲染配置对于需要 JavaScript 渲染的网页需要配置浏览器驱动服务# 启用 Playwright Chrome 浏览器支持 browser-sockpuppet-chrome: image: dgtlmoon/sockpuppetbrowser:latest cap_add: - SYS_ADMIN environment: - SCREEN_WIDTH1920 - SCREEN_HEIGHT1024 - MAX_CONCURRENT_CHROME_PROCESSES10在 changedetection 服务中启用浏览器驱动environment: - PLAYWRIGHT_DRIVER_URLws://browser-sockpuppet-chrome:3000监控配置技术实现1. 基础监控配置创建监控任务时系统支持多种内容提取模式HTML 内容监控配置示例{ url: https://example.com/product-page, watch_type: webpage, css_filter: .product-price, ignore_elements: [.advertisement, .cookie-banner], text_include: price|stock|availability, text_exclude: copyright|disclaimer }JSON API 监控配置{ url: https://api.example.com/products/123, watch_type: json, jsonpath: $.data.price, trigger_condition: $.data.stock 0, notification_threshold: 10 }2. 条件规则引擎changedetection.io 的条件规则引擎支持复杂的逻辑组合可通过图形界面或 API 配置图2条件规则配置界面支持多字段逻辑匹配和自定义插件扩展条件配置支持以下操作符数值比较大于、小于、等于、不等于文本匹配包含、不包含、正则表达式匹配逻辑组合AND、OR、NOT 逻辑运算时间条件基于时间范围的检查条件技术实现上条件引擎通过conditions/目录下的插件架构实现用户可扩展自定义条件插件# 自定义条件插件示例 from changedetectionio.conditions import BaseCondition class CustomPriceCondition(BaseCondition): def evaluate(self, extracted_value, threshold): # 自定义价格条件逻辑 return float(extracted_value) float(threshold)3. 调度时间管理时间调度系统支持精细化的检查计划配置图3时间调度器配置支持工作日/周末模板和自定义时间窗口调度配置参数检查间隔支持秒、分钟、小时、天、周为单位时间窗口可设置特定时间段内运行检查排除日期配置节假日或维护日不检查时区支持自动处理跨时区时间转换技术实现位于model/Watch.py中的调度逻辑class WatchScheduler: def calculate_next_check(self, current_time, schedule_config): # 基于 Cron 表达式计算下次检查时间 # 支持工作日/周末区分 # 处理时区转换 pass高级监控场景实现电商库存与价格监控针对电商网站的库存和价格监控系统提供了专门的优化功能图4库存和价格监控列表显示商品状态、价格变化和最后检查时间库存监控技术实现价格提取策略使用 CSS 选择器定位价格元素正则表达式提取数值和货币单位多语言价格格式支持库存状态检测文本关键词匹配in stock, out of stock, available按钮状态分析Add to Cart, Buy Now库存数量提取和阈值监控变更检测算法# 价格变更检测逻辑 def detect_price_change(old_price, new_price, threshold0.01): if old_price is None or new_price is None: return True price_diff abs(new_price - old_price) / old_price return price_diff threshold内容差异可视化当检测到网页变更时系统生成详细的差异报告图5变更差异可视化绿色表示新增内容红色表示删除内容差异检测技术特点行级对比逐行比较文本变化语义分组将相关变更聚合显示上下文保留显示变更前后的上下文内容多种视图支持文本、HTML、JSON 等多种格式的差异展示差异算法实现位于diff/tokenizers/目录natural_text.py自然文本分词和对比words_and_html.pyHTML 结构感知的差异检测API 集成与自动化RESTful API 接口changedetection.io 提供完整的 API 接口支持自动化管理和集成API 认证配置import requests # API 认证头配置 headers { x-api-key: your-api-key-here, Content-Type: application/json } # 创建监控任务 response requests.post( http://localhost:5000/api/v1/watch, headersheaders, json{ url: https://example.com/monitor, tag: production-monitor, fetch_backend: playwright } )主要 API 端点端点方法功能描述参数示例/api/v1/watchPOST创建监控任务url,tag,css_filter/api/v1/watch/{uuid}GET获取监控详情include_history,include_settings/api/v1/watch/{uuid}/historyGET获取变更历史limit,offset/api/v1/watch/{uuid}/check-nowPOST立即执行检查-/api/v1/notificationPOST发送测试通知url,title,bodyWebhook 集成配置系统支持多种 Webhook 格式可与企业内部系统集成# Webhook 配置示例 notification_urls: - discord://webhook_id/webhook_token - slack://tokenchannel - https://custom-webhook.example.com/api/notify notification_format: json notification_template: | { event: {{ event_type }}, url: {{ watch_url }}, timestamp: {{ timestamp }}, changes: {{ changes_json }} }数据导出与备份系统提供完整的数据导出功能JSON 格式导出完整的监控配置和历史数据CSV 报告变更历史和统计报告自动备份定时备份到指定位置迁移支持跨实例数据迁移备份配置位于blueprint/backups/目录# 备份策略配置 backup_config { interval: daily, retention_days: 30, format: json, compression: gzip }故障排除与性能优化常见问题排查监控任务不执行检查检查调度配置是否正确验证网络连接和代理设置查看日志中的错误信息内容提取失败确认目标网站可访问检查 CSS 选择器或 XPath 是否正确验证是否需要 JavaScript 渲染通知发送失败检查通知配置格式验证网络连接和认证信息查看通知服务状态性能优化建议并发控制优化# 调整并发工作进程数 environment: - FETCH_WORKERS20 # 根据服务器资源调整 - MINIMUM_SECONDS_RECHECK_TIME5 # 避免过于频繁检查内存管理配置# Docker 资源限制 deploy: resources: limits: memory: 2G cpus: 1.0数据库优化定期清理历史数据启用数据压缩配置适当的索引策略监控与日志系统提供详细的日志输出可通过环境变量控制日志级别environment: - LOGGER_LEVELDEBUG # TRACE, DEBUG, INFO, WARNING, ERROR日志文件位置Docker 容器/app/changedetection.log数据目录/datastore/logs/扩展与自定义开发插件系统架构changedetection.io 的插件系统位于processors/和conditions/plugins/目录支持以下扩展类型处理器插件自定义内容处理逻辑条件插件扩展条件判断规则通知插件添加新的通知渠道提取器插件定制内容提取方法创建自定义插件示例# processors/custom_processor.py from changedetectionio.processors import BaseProcessor class CustomProcessor(BaseProcessor): def process_content(self, content, watch): # 自定义处理逻辑 processed self.custom_processing(content) return processed def custom_processing(self, content): # 实现具体的处理逻辑 pass集成企业系统对于企业级部署可考虑以下集成方案与监控系统集成通过 Webhook 推送到 Prometheus Alertmanager集成到 Grafana 仪表板与 ELK Stack 日志系统对接与 CI/CD 流水线集成监控部署后网站状态检测配置变更自动化回归测试与业务系统集成价格监控与库存管理系统对接内容变更与 CMS 系统同步通知与团队协作工具集成安全最佳实践访问控制配置API 密钥管理# 生成安全的 API 密钥 import secrets api_key secrets.token_urlsafe(32)网络隔离配置# Docker 网络配置 networks: internal: internal: true external: external: trueHTTPS 启用environment: - SSL_CERT_FILE/app/cert.pem - SSL_PRIVKEY_FILE/app/privkey.pem数据保护措施敏感信息加密通知凭据加密存储API 密钥安全存储监控配置加密访问日志审计记录所有 API 访问监控配置变更历史异常访问检测定期安全更新保持 Docker 镜像更新定期依赖包安全扫描安全配置审计总结与最佳实践changedetection.io 作为企业级网站变更监控解决方案提供了从基础监控到高级自动化的完整技术栈。通过合理的架构设计、灵活的配置选项和强大的扩展能力能够满足不同规模企业的监控需求。部署建议从小规模测试开始逐步扩展监控范围根据业务需求调整检查频率和并发数建立监控策略文档和操作手册定期审查监控效果和优化配置技术选型考虑对于静态内容网站使用 HTTP 请求模式对于动态 JavaScript 网站启用 Playwright 浏览器渲染对于 API 监控使用 JSON 提取模式对于价格监控启用库存检测功能通过遵循本文的技术指南和最佳实践技术团队可以快速部署和配置 changedetection.io建立可靠的网站变更监控体系确保关键信息的及时获取和响应。【免费下载链接】changedetection.ioBest and simplest tool for website change detection, web page monitoring, and website change alerts. Perfect for tracking content changes, price drops, restock alerts, and website defacement monitoring—all for free or enjoy our SaaS plan!项目地址: https://gitcode.com/GitHub_Trending/ch/changedetection.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考