惊蛰 - 默认分类
type: channel
link: http://forthxu.com/blog/category/default/
description: 只是一个默认分类
items: 从 BGP 到街道:一个 IP 归属地地理库到底是怎么建出来的
items: 使用cloudflared代理内网
items: IP 风险评分（IP Reputation / IP Risk Score）来源和系统自建
items: 各种软件和操作系统中内置的根证书名单
items: 币圈U卡最新评测
items: 项目规划
items: 监控系统评估和推荐
items: 了解主流网络数据采集技术和框架工具，如Selenium/Puppeteer/PhantomJS/Scrapy等
items: Prometheus
items: 向量数据库

从 BGP 到街道:一个 IP 归属地地理库到底是怎么建出来的
type: item
date: 2026-06-11T19:06:13+08:00
description: 从 BGP 到街道:一个 IP 归属地地理库到底是怎么建出来的 很多人对 IP 定位有个朴素的想象:既然每个 IP 都唯一,那查一下它在哪儿,应该像查身份证一样简单。等真要动手建一个 IP 归属地地理库,才会发现这件事远比想象的拧巴——而拧巴的根源,是把两件本质不同的东西混为了一谈。 这篇文章想把这件事讲透:一个能用的 IP 地理库,到底由哪些部分组成、每一层用什么方法、精度的天花板在哪里,以及哪些"街道级"其实是虚假精度。 第一性原理:路由身份 ≠ 物理位置 先立一个贯穿全文的认知:IP 的"路由身份"和"物理位置"是两个维度,必须解耦。 BGP 路由表告诉你的是"这个前缀由哪个 AS 宣告、经哪些 AS 可达"——这是逻辑的、三层的。一个 AS(自治系统)是一个统一路由策略下的管理实体,它跟地理没有必然关系:一个 AS 可以横跨几十个国家,一栋机房里也可以挤着好几个 AS。所以"这个 IP 属于哪个 AS"回答的是"谁在路由它",而不是"它在哪"。 更要命的是,一个被宣告的 CIDR 前缀不等于一个物理位置。运营商常把地理分散的小块聚合成一个大前缀宣告;一个 /16 可能服务一整个省、成千上万个互相隔离的局域网。哪怕是一个 /24(256 个地址),里面的地址也可能散在不同城市——这不是理论,而是经典算法 GeoCluster 真实遇到的情况:一个 /24 里 10 个 IP 在西雅图、1 个在波士顿。 所以物理位置是一份单独的事实,必须靠地理库或网络测量得到,而不能从"哪个 AS 宣告了它"反推。理解了这一点,整个地理库的架构就顺了:BGP 给骨架,别的方法给血肉。 地基:BGP/RIB 能做什么,不能做什么 虽然 BGP 给不了精确位置,但它是地理库不可或缺的地基。从公共采集点(RouteViews、RIPE RIS)的 RIB dump 里,你能拿到全球真实在路由的前缀全集 + 每个前缀的源 AS。这有几个关键作用: 提供"行"的单元。地理库本质是一张"前缀 → 位置"的表;用 BGP 里实际宣告的前缀当行,而不是凭空切块,保证和真实网络一致、能按最长前缀匹配查询。 源 AS → 机构和类型。把源 AS 映射到运营商名和类型(家宽 / IDC / 移动 / 云 / CDN),这决定了"该用什么策略去定位"——家宽和机房的定位逻辑完全不同。同时 AS 的注册国家给了一个国家级锚点。 anycast 检测。一个前缀若被多个源 AS、从分散位置宣告,就该标记为 anycast——这种前缀没有"一个位置",任何定位尝试都是错的。 过滤与保鲜。BGP 告诉你哪些地址实际在用,变更 feed 还能在前缀拆分、源 AS 改变时提示你"该重新核对位置了"。 但 BGP 的天花板,大致就是国家级。想到城市、街道,得换方法。 方法分层:从国家到街道 真正决定精度的,是叠在前缀之上的地理信号。按精度从低到高,方法是这样的: 国家级:免费的兜底 RIR 委派数据和 whois 注册信息,免费,只能到国家级(whois 偶尔到省)。它们的价值是兜底——保证再差也有个国家。注意这是"注册/分配"国家,不一定等于实际使用地,所以连国家级都可能错,只能当下限。 城市级:务实的主战场 这一层有四类方法,组合起来能稳到城市: 1. 商业地理库(务实主力)。 MaxMind、IP2Location,以及国内城市级最准的 ipdb 等。它们已经替你做完了测量和挖掘,直接给"前缀 → 城市"。对绝大多数自建者,这应该是城市级基线——买,而不是重复造轮子。 2. rDNS 主机名挖掘。 很多运营商基础设施的反向 DNS 名里藏着城市码或机场码,比如路由器名里的 sjc 指向圣何塞。批量解析这些 PTR 记录,对 IDC 和骨干设施很有效;但对家宽用户 IP 基本无用。 3. 接入边缘 / BRAS 锚定(家宽的正解)。 这是个聪明的反转。家宽用户 IP 又动又散,直接定位很难;但用户前面的接入设施(BRAS、城域网核心、OLT 局端)是物理固定在某个城市机房里的,而且用户挂在本地城域网下,所以接入边缘的城市 ≈ 用户的城市。做法是:先把"接入设施 IP → 城市"这层地标建准(traceroute 采中间跳 + rDNS + 测量 + 商业库交叉),之后给海量用户定位,只是查"它在哪个接入边缘后面"。这把"定位百万移动目标"降维成"定位少数稳定接入点再传导",能稳到城市级。 唯一要警惕的是 BRAS 集中化:运营商把接入设备集中云化后,接入边缘可能远离用户(整省几个点),这时要识别出来、降级到省级,别硬标城市。 4. 时延测量 + 基准点。 也就是 CBG / TBG 这类算法,适合做区域定位和交叉验证。这一类的原理值得单独说,因为它常被误解。 测量的真相:延…

使用cloudflared代理内网
type: item
date: 2025-12-11T10:00:29+08:00
description: 使用cloudflared代理内网 安装 curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64 -o cloudflared chmod +x cloudflared mv cloudflared /usr/bin/ 登陆 cloudflared login 创建通道 cloudflared tunnel create mytunnel 增加通道绑定域名 cloudflared tunnel route dns mytunnel dy.xiamen.dev 配置通道服务 mkdir /etc/cloudflared/ vim /etc/cloudflared/config.yml tunnel: mytunnel credentials-file: /root/.cloudflared/155ed863-891d-45e3-b436-da57cde7f8f8.json ingress: # 强制 HTTPS - hostname: dy.xiamen.dev service: http://127.0.0.1:3001 originRequest: noTLSVerify: true # 暴露 SSH，通道需要绑定域名 - hostname: ssh.xiamen.dev service: ssh://127.0.0.1:22 # 默认 fallback - service: http_status:404 启用通道服务 cloudflared tunnel run mytunnel 后台启用通道服务 vim /etc/init.d/cloudflared #!/bin/sh /etc/rc.common START=99 STOP=10 start() { echo "Starting cloudflared..." /usr/bin/cloudflared --config /etc/cloudflared/config.yml tunnel run > /var/log/cloudflared.log 2>&1 & } stop() { echo "Stopping cloudflared..." killall cloudflared } chmod +x /etc/init.d/cloudflared /etc/init.d/cloudflared enable /etc/init.d/cloudflared start

IP 风险评分（IP Reputation / IP Risk Score）来源和系统自建
type: item
date: 2025-11-28T10:17:00+08:00
description: https://chatgpt.com/share/69291b65-c5b8-8001-acf2-781c9b25c14c 这些来源都是各大代理商、风控平台、广告平台、支付公司、反欺诈系统实际使用的。 一、国际权威风险评分服务商（最核心来源） 这些是行业标准，代理商都会订阅： 1. Spamhaus 用途：反垃圾邮件、恶意活动 特征库：SBL、XBL、PBL 评分内容： 垃圾邮件来源 僵尸网络 恶意流量 动态 IP 池标记（PBL 是家庭宽带大杀器） 所有代理商一定参考 Spamhaus 2. IPQualityScore (IPQS) 用途：反欺诈、广告防作弊 提供： 代理/VPN 检测 异常活动评分 TOR / 数据中心标记 高风险国家标记 BOT、点击作弊评分 世界上使用最广的 IP 风险评分库之一 3. MaxMind GeoIP2 + MaxMind RiskScore 地区库 + 风险引擎 包含： 住宅/数据中心识别 VPN / Proxy 检测 匿名网络检测 短时间内大量请求行为检测 几乎所有反爬虫系统都会用 MaxMind 4. FraudScore、FraudLogix 广告防作弊常用，识别： 虚假广告点击 模拟设备 程序化流量 5. Cisco Talos Intelligence 威胁情报 检测： 恶意软件感染 BOT 被攻击的受害者 IP 二、反爬虫 / 反欺诈平台的数据源 这些平台有超大规模客户数据，覆盖面广： 1. Cloudflare Threat Score Cloudflare 的威胁情报基于： 数千万人站点访问数据 Bot 值（BOT Score） 爬虫评估 代理标记 IP 行为历史 2. Akamai Threat Labs 提供： TOR 爬虫行为 DDoS 参与 被入侵终端设备标记 3. PerimeterX / Human Security 首选广告、APP 防作弊平台 能检测： 浏览器指纹伪造 自动化工具 Selenium/Headless 住宅代理节点滥用 4. Datadome、Kasada 反爬虫重量级 基于： 全网指纹 IP 行为画像 再识别技术 三、网络安全威胁情报（多个国家与机构） 这些机构提供恶意行为数据库： 1. AbuseIPDB 非常常用，众包 + 安全厂商联合数据 评分基于： DDoS 扫描器 登录暴力破解 恶意脚本行为 2. FireHOL IP Blacklist 整合多个威胁情报源 3. AlienVault OTX 全球最有名的威胁社区 标记： 恶意软件感染 僵尸网络 钓鱼站 C2 控制节点 4. TOR Project Exit Node List 标记 TOR 出口节点 四、商业数据库（付费订阅） 代理商会购买这些数据库以提升检测能力： 1. IP2Proxy / IP2Location 提供： 是否为代理 / VPN 是否为 Residential IP 是否为 Hosting Provider ASN 信息 区域一致性检查 2. Neustar IP Intelligence 用于广告投放风控 包含： 住宅/商业/IDC 分类 代理识别 风险评分 3. ThreatMetrix 全球最大数字身份图库之一 基于： 全球设备指纹 行为特征 匿名化网络检测 五、浏览器指纹数据（高级代理商才有） 顶级代理商（例如 BrightData、Oxylabs）会结合浏览器指纹评分： IP + 浏览器指纹匹配度： 浏览器时区与 IP 所属时区是否一致 浏览器语言与 IP 所在地区是否一致 Canvas / WebGL 指纹是否可疑 User-Agent 与 IP 地区是否匹配（国别差异很明显） 六、代理商自有风控数据（核心资产） 这是每个大代理商最重要的“黑箱技术”： 自研评分包含： ① 节点成功率 访问常见网站是否被封 403/429 频率 目标站点 ban 率 ② 用户行为异常 同一 IP 同时被多个用户使用 大量请求频率不正常 非浏览器模式行为 重复 Cookie、重复指纹行为 ③ 节点画像 国内外访问比例 同 ASN 下是否存在反爬高频行为 IP 是否曾用于爬虫/抓取工具 ④ 节点稳定性 漏洞感染风险（如 Windows SMB） NAT 类型 带宽稳定性 端口开放情况（恶意软件特征端口） 综合后形成的 IP Risk Score（0-100 或 0-1） 大代理商通常是： 权威数据库 + 行业库 + 自有流量特征 → 综合评分 举例（简化版公式）： RiskScore = 0.35 * (IPQS score) +0.20 * (MaxMind risk) +0.15 * (Spamhaus SBL/PBL/XBL) +0.10 * (AbuseIP…

各种软件和操作系统中内置的根证书名单
type: item
date: 2025-06-26T09:30:18+08:00
description: 各种软件和操作系统中内置的根证书名单（Trusted Root CA List），以下是一些主流渠道和资源： 1. 操作系统内置根证书名单 | 操作系统 | 获取方式 & 说明 | | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Windows | 通过“证书管理器”（certmgr.msc）查看“受信任的根证书颁发机构”证书列表官方文档：Microsoft Trusted Root Program | | macOS / iOS | 使用“钥匙串访问”应用查看“系统根证书”苹果官方根证书：Apple Root Certificate Program | | Linux | 各发行版使用不同，通常在 /etc/ssl/certs 或 /usr/share/ca-certificates 目录下例如 Debian/Ubuntu: ca-certificates 包 | | Android | 根证书存储在系统内置密钥库Android官方证书列表：Android CAs | 2. 浏览器内置根证书名单 | 浏览器 | 根证书来源 & 获取方式 | | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Mozilla Firefox | 自带独立的根证书存储，称为 NSS（Network Security Services）库根证书列表：Mozilla Included CA Certificates | | Google Chrome | 使用操作系统的根证书库（Windows、macOS、Linux）部分版本会内置自己的根证书（Chromium） | | Microsoft Edge | 依赖 Windows 根证书库 | | Safari | 依赖 macOS/iOS 根证书库 | 3. 各大CA官方根证书库 DigiCert Root Certificates GlobalSign Root Certificates Let's Encrypt Root Certificates Entrust Root Certificates 4. 公共根证书数据库 CA/Browser Forum Root Store Policy：https://cabforum.org/ Mozilla CA Certificate Program：https://wiki.mozilla.org/CA Microsoft Trusted Root Program Participants：https://learn.microsoft.com/en-us/security/trusted-root/participants-list Google Root Program（Chromium）：https://chromium.googlesource.com/chromium/src/+/refs/heads/main/net/data/ssl/certificates/ 5. 实用工具和命令 Windows: 打开命令行执行 certutil -viewstore root Linux (Debian/Ubuntu): ls /etc/ssl/certs/ macOS: 打开“钥匙串访问”，选择“系统根证书”查看。 总结 | 平台/软件 | 根证书名单获取途径 | | ------------ | ------------------------- | | Windows 系统 | certmgr.msc、certutil、微软官网 | | macOS/iOS 系统 | 钥匙串访问、苹果官网 | | Linux 发行版 | ca-certificates 包，系统目录 | | Firefox 浏览器 | Mozilla CA DB 官网 | | Chrome 浏览器 | 依赖操作系统，Chromium源码 | | 各大CA | 各CA官方证书下载页 | 需要帮你定位某个具体系统或软件的根证书名单，我可以…

币圈U卡最新评测
type: item
date: 2025-06-18T09:27:00+08:00
description: 一图学会挑U卡？ 币圈人手一张的资金护城河 1 U 卡是什么？ U卡就是将 USDT（稳定币）绑定到一张实体卡或虚拟卡，你可以像用普通银行卡一样，刷卡消费、绑定 Apple Pay、提现法币。很多是由交易所或加密支付公司发行的。 2 为什么币圈需要 U 卡？ • 避开黑钱风险：卡来自官方渠道，绑定实名信息，资金流清晰，降低合规风险。 • 提升出入金自由度：很多U卡支持多币种自动兑换，甚至可以刷卡消费，无需先转到银行账户。 • 全球可用：支持 Visa/Master 网络，海外吃饭购物直接刷，再也不用到处找OTC。 • 对接Web2生活场景：可绑定微信、支付宝、Apple Pay，落地性强。 3 到底选哪张U卡？一图看懂 币圈U卡最新评测 | 平台 | 办理条件 | 开卡费用 | 充值手续费 | 外汇手续费 | 加密货币兑换费用 | ATM取现手续费 | 支持支付 | 备注 | |-------------|---------------------------------------|------------|----------------|------------|--------------------------------------|--------------------------|----------------|------------------| | Redotpay | 海外身份 | 100U | 免费 | 2% | / | 1% | 支付宝 / 微信 | | | Bybit | 身份认证+地址证明（地址建议意大利） | 免费 | 免费 | 1% | 加密货币兑换费用：0.90% | 2%（超100U） | 不支持 | | | Crydit | 身份认证 | 199U | 1.5% ~ 12U | 2% | / | 2% | 支付宝 / 微信 | | | Bitget | 身份认证+地址证明（仅限VIP或要求高） | 免费 | 免费 | 1.6%（新增账号以外） | / | 2%（超126.65U） | 支付宝 / 微信 | | | Coinbase | 身份认证（Coinbase One会员） | 499U/年 | / | / | / | / | 2025年底提现（重金4%返现） | | | Solayer | 身份认证 | 75U | 1% | 1% | / | / | 支付宝 / 微信 | | | Pokepay | 身份认证 | 5U | 免费 | / | 2% | / | 支付宝 / 微信 | | | Metamask | 海外身份 | 免费 | 免费 | / | usdt兑换0.02U / #usdt兑换0.8% | / | 支付宝（有消息返现） | | | Safepal | 身份认证 | 免费 | 0.6% ~ 1% | / | / | / | 支付宝 / 微信 | | | imToken | 身份认证 | 免费 | 1% | 0 | / | / | 支付宝 / 微信 | | https://x.com/onchainsea/status/1934846556089536705?t=nMjVVbe4UY0xf6x7-NqvAw&s=19

项目规划
type: item
date: 2025-04-22T16:05:31+08:00
description: 项目规划 原文链接：https://aping-dev.com/index.php/archives/13/ 1. 主体流程 1.1. 前期调研 体验竞品功能，形成对竞品的初步认知。 结合可用资源（如已有的 API）确定产品需实现的功能。 列出功能的利弊，形成功能调研文档。 1.2. 概要设计 列出功能点，描述总体流程。 使用流程图、时序图、架构图、交互图进行说明。 实现基础框架和各模块之间的交互接口。 1.3. 详细设计 将各模块功能分配给负责人，必要时进一步调研并给出详细设计。 细化各功能点，列出多种实现方案及其利弊。 涉及产品决策时，需及时与产品沟通。 调用第三方接口时，需充分调研其行为。 设计数据库表时，根据 SQL 语句设计索引，并使用 EXPLAIN、SHOW PROFILES 等进行验证。 涉及状态转换时，绘制状态图并考虑各种状态冲突。 考虑各种异常情况，如并发、程序崩溃、数据库错误、消息队列消息丢失等，并设计相应的重试机制和幂等处理。 在操作资源前，判断资源是否存在、状态是否正常等。 1.4. 技术评审 各模块负责人完成详细设计后，进行技术评审，讨论实现方案，及时发现方案的不足。 模块负责人需提前准备方案的利弊分析，并参考评审意见形成最终决策。 交流时，需从基本信息开始讲述，不假设参与者已知相关内容。 1.5. 开发 开发过程中注意抽象相似的函数或模块，避免重复改动，便于后续开发。 遵循约定的编程规范。 设计变动时，及时同步更新文档，方便协作。 1.7. 代码 Review 代码 Review 是一项辛苦的工作，需感谢提出意见的同事。 1.8. 测试 单元测试：使用 Python 的 unittest.TestCase 对各个单元进行测试，保持测试代码的整洁。 模块自测：包括接口参数、功能、内部逻辑测试，可使用 Postman 进行 API 测试，保持测试代码的整洁。 交叉测试： 了解对方模块的功能，通过文档或面谈。 自行设计，比较与模块负责人的差异，审视彼此的缺陷考虑，有助于提升。 模块负责人修复交叉测试的 Bug 后，需对涉及的接口进行回归测试，防止引入新的 Bug。 集成测试：对整个系统进行测试，确保各模块协同工作正常。 1.9. 上线 项目打包、部署，进行灰度上线。 1.10. 内测 专门的测试人员对上线项目进行测试，及时发现问题。 1.11. 公测 & 运营 向用户提供优惠活动，吸引用户体验并反馈问题。 产品经理撰写文案，介绍产品特点、优势，为产品造势。 1.12. 项目回顾 总结项目中的良好实践，形成经验积累，在未来项目中推广。 2. 并行流程 2.1. 人力预估 对投入的人力进行大致估计，随着项目进展，可能需要调整。 2.2. 行为规范 提前告知开发人员需遵循的规范，包括： 编程规范，如编码风格约定。 各类文档撰写规范，包括需求文档、实现文档、接口文档、测试文档等。 2.3. 进度预估 包括总体项目完成时间、各阶段完成时间、各模块负责人对各自模块完成时间的预估，及时发现风险点。 2.4. 资源申请 申请所需资源，如域名、运维机器、配额等。 2.5. 进度对齐 在约定的时间点进行进度对齐，及时发现风险点。

监控系统评估和推荐
type: item
date: 2025-04-09T14:25:00+08:00
description: 主流监控系统 ├── 老牌监控系统 │ ├── Zabbix ← 仍然活跃，适合传统架构 │ ├── Nagios ← 已过时，扩展性差 │ ├── Cacti ← 图形展示强，功能有限 │ ├── Ganglia ← 偏 HPC，基本没人用了 │ ├── Grafana ← 可视化工具，不是监控系统本身 │ ├── 新一代监控系统 │ ├── Open-Falcon ← 国产经典，可替代但不再活跃开发 │ ├── Nightingale ← Falcon 的升级版，支持 PromQL，国产强推荐 │ ├── Prometheus ← 云原生主流，生态活跃，标准事实 │ ├── VictoriaMetrics← 高性能时序数据库，Prometheus 替代或后端 │ ├── Thanos ← Prometheus 的水平扩展方案 │ ├── Cortex ← 类似 Thanos，多租户 Prometheus 集群 │ ├── Loki ← 日志聚合系统，与 Prometheus/Grafana 配合使用 │ ├── Alertmanager ← Prometheus 告警模块 │ ├── Telegraf ← 数据采集工具，支持输出 Prometheus/InfluxDB │ ├── Vector ← 数据管道，采集/转换/转发日志和指标 │ ├── Datadog ← 商业化 SaaS，开箱即用，价格不低 │ ├── Grafana Cloud ← Grafana 官方 SaaS，集成 Prom/Loki/Tempo 等 推荐搭配组合（按场景） | 场景 | 推荐方案 | |----------------|------------------------------------------------| | 自建轻量 | Prometheus + Grafana + Alertmanager | | 传统运维系统 | Zabbix / Nightingale + Categraf | | 云原生/Kubernetes | Prometheus + Thanos/Cortex + Loki/Tempo | | 日志+指标一体化 | Vector + Prometheus + Loki | | SaaS 省心部署 | Datadog / Grafana Cloud |

了解主流网络数据采集技术和框架工具，如Selenium/Puppeteer/PhantomJS/Scrapy等
type: item
date: 2025-04-03T09:11:55+08:00
description: 主流的网络数据采集（Web Scraping）技术和框架工具主要用于从网页自动提取数据。以下是几种常见的工具及其特点： 1. Selenium 适用场景：动态页面抓取（JS渲染）、自动化测试 特点： 主要用于自动化浏览器操作，如模拟用户输入、点击、滚动等。 支持多种浏览器（Chrome、Firefox、Edge等）。 适用于爬取依赖 JavaScript 渲染的网页。 可结合 WebDriver 进行无头浏览（Headless 模式）。 缺点： 运行效率较低，比直接解析 HTML 或使用异步框架慢。 需要安装浏览器驱动（如 ChromeDriver）。 适用语言：Python、Java、C#、JavaScript 等 2. Puppeteer 适用场景：无头浏览器抓取、截图、网页自动化 特点： 由 Google 开发，专为控制 Chrome/Chromium 设计。 支持无头模式，执行速度比 Selenium 快。 适用于爬取动态加载数据的网站。 可以用来生成 PDF、截取网页截图、自动填写表单等。 缺点： 仅支持 Chromium 浏览器，不支持其他浏览器。 需要 Node.js 环境。 适用语言：JavaScript/TypeScript 3. PhantomJS（已停止维护） 适用场景：早期的无头浏览器爬虫 特点： 早期的无界面 WebKit 浏览器，支持 JavaScript 渲染。 可以用于网页截图、测试、抓取动态网页内容。 由于 Puppeteer 和 Headless Chrome 出现，PhantomJS 已被淘汰。 适用语言：JavaScript 4. Scrapy 适用场景：大规模数据采集、高效爬虫 特点： Python 爬虫框架，异步高效，适用于大规模数据抓取。 内置强大的爬取调度、数据清洗、持久化存储功能。 可扩展性强，支持中间件、自定义代理、Cookies 处理等。 适用于结构化数据采集，如电商、新闻网站等。 缺点： 不支持 JavaScript 渲染（需结合 Selenium 或 Splash）。 学习曲线较高，适合有一定爬虫经验的开发者。 适用语言：Python 对比总结 | 工具/框架 | 适用场景 | 语言 | 是否支持动态页面 | 运行效率 | 适用规模 | |---|---|---|---|---|---| | Selenium | 自动化测试、动态网页抓取 | 多种 | ✅ | 较慢 | 小规模 | | Puppeteer | 无头浏览器爬取、自动化 | JS/TS | ✅ | 较快 | 中等 | | PhantomJS（淘汰） | 早期无头浏览器爬取 | JS | ✅ | 较慢 | 小规模 | | Scrapy | 高效爬取静态网页 | Python | ❌（需扩展） | 高 | 大规模 | 如果需要爬取动态网页（如 AJAX、Vue、React 生成的内容），建议使用 Puppeteer 或 Selenium。 如果目标网站是静态 HTML，Scrapy 更高效，适合大规模数据采集。 下面是 Scrapy、Puppeteer 和 Selenium 的安装及简单使用示例。 1. Scrapy 安装 Scrapy 需要 Python 环境（推荐 Python 3.8+）。安装方式： pip install scrapy 创建 Scrapy 爬虫 创建 Scrapy 项目 scrapy startproject my_scraper cd my_scraper 生成爬虫 scrapy genspider example example.com 编辑 spiders/example.py import scrapy class ExampleSpider(scrapy.Spider): name = "example" allowed_domains = ["example.com"] start_urls = ["https://example.com"] def parse(self, response): title = response.css("title::text").get() yield {"title": title} 运行爬虫 scrapy crawl example 2. Puppeteer 安装 Puppeteer 需要 Node.js 环境，安装方法： npm install puppeteer 使用 Puppeteer 采集网页数据 创建 puppeteer_scraper.js： const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.laun…

Prometheus
type: item
date: 2025-03-17T16:27:00+08:00
description: Prometheus Prometheus 是一个开源的监控和告警系统，最初由 SoundCloud 于 2012 年开发，后来捐赠给了 CNCF（云原生计算基金会），成为 Kubernetes 生态中事实上的标准监控工具。它以高效的时间序列数据库、强大的查询语言和灵活的架构著称，特别适合动态云环境和微服务架构的监控。 核心特性 时间序列数据： Prometheus 存储所有数据为时间序列，即带有时间戳的指标（metrics），每个指标由名称和一组键值对标签（labels）标识。 示例：http_requests_total{method="GET", endpoint="/api"} 1234。 Pull 模型： 通过 HTTP 定期从配置的目标（exporter 或应用）拉取指标，而不是依赖推送。 目标暴露 /metrics 端点，提供 Prometheus 格式的数据。 PromQL： 提供强大的查询语言（Prometheus Query Language），用于分析和聚合时间序列数据。 示例：rate(http_requests_total[5m]) 计算每秒请求速率。 多维数据模型： 通过标签支持多维度分析，比如按服务、实例、环境等过滤数据。 内置告警： 通过 Alertmanager 组件处理告警，支持多种通知方式（如邮件、Slack、Webhook）。 服务发现： 支持静态配置和动态服务发现（DNS、Consul、Kubernetes 等），适应云原生环境。 架构组件 Prometheus Server：核心服务，负责拉取、存储和查询数据。 Exporters：辅助工具（如 node_exporter、blackbox_exporter），暴露目标系统的指标。 Pushgateway：可选组件，用于支持短生命周期任务的指标推送。 Alertmanager：处理告警，分组、抑制和发送通知。 客户端库：支持多种语言（如 Go、Java、Python），便于应用自定义指标。 监控节点指标 https://github.com/prometheus/node_exporter 监控http服务器访问情况 https://github.com/prometheus/blackbox_exporter 监控服务器网络状况 https://github.com/prometheus/snmp_exporter 其他监控 https://prometheus.io/docs/instrumenting/exporters/ 这几个exporter可以单独运行，通过curl获取数据，改为 itdog.com 17ce.com ping.chinaz.com 类似的服务 详细比较下 Prometheus Zabbix Nagios Datadog 以下是对 Prometheus、Zabbix、Nagios 和 Datadog 的详细比较，从功能、架构、使用场景、优缺点等多个维度进行分析，帮助你理解它们的异同并选择合适的监控工具。 1. 概述 | 工具 | 类型 | 开源性 | 初创时间 | 核心目标 | |-------------|--------------|--------|----------|------------------------------| | Prometheus | 时间序列监控 | 开源 | 2012 | 云原生、微服务监控 | | Zabbix | 综合监控 | 开源 | 1998 | 传统 IT 基础设施监控 | | Nagios | 状态监控 | 开源 | 1999 | 服务和网络可用性检查 | | Datadog | 云监控平台 | 商业 | 2010 | 企业级云和应用性能监控 | 2. 架构与数据模型 | 维度 | Prometheus | Zabbix | Nagios | Datadog | |-------------|--------------------------------|-------------------------------|------------------------------|------------------------------| | 数据模型| 时间序列（指标+标签） | 通用（数值、状态、日志） | 状态检查（up/down） | 时间序列+日志+追踪 | | 采集方式| Pull（拉取） | Push（推送）+ Pull | Pull（插件执行） | Push（Agent）+ Pull | | 存储 | 内置 TSDB（本地时间序列数据库）| 关系型数据库（如 MySQL） | 无内置存储，需扩展 | 云端存储（SaaS） | | 查询语言…

向量数据库
type: item
date: 2024-12-20T16:21:49+08:00
description: 向量数据库（Vector Database）是一种用于存储、管理和检索高维向量数据的数据库。它在处理大规模数据集，特别是在机器学习和深度学习等领域中，用于存储嵌入（embeddings）、特征向量（feature vectors）或其他高维数据。向量数据库对于进行相似性搜索（如近似最近邻搜索，ANN）非常高效，广泛应用于图像搜索、推荐系统、自然语言处理（NLP）等领域。 1. 向量数据库的概念 向量数据库专门用于存储和查询向量数据。向量数据是由一组数字组成的数值集合（如 128 维、256 维、512 维等），这些向量通常是通过机器学习模型（例如卷积神经网络、自然语言处理模型等）生成的，用于表示图像、文本、音频或其他类型的复杂数据。 在向量数据库中，用户可以存储大量的向量并执行查询操作，例如： 相似度搜索：查询与给定向量相似的向量。 最近邻搜索（Nearest Neighbor Search）：寻找与查询向量最接近的向量。 2. 向量数据库的应用场景 向量数据库在多个领域中都有广泛的应用，主要包括： 自然语言处理（NLP）：存储词向量（word embeddings）或句向量（sentence embeddings），并用于快速检索相似的文本。 计算机视觉：存储图像的特征向量，并进行相似图像检索。 推荐系统：通过存储用户行为数据的向量表示，基于相似度进行个性化推荐。 音频和视频分析：存储音频或视频片段的向量表示，进行相似的音频或视频检索。 生物信息学：用于存储DNA序列、蛋白质结构的向量化表示，并进行相似性比对。 3. 向量数据库的关键技术 向量数据库的核心功能是高效的相似性搜索，尤其是在处理高维向量时。为了加速向量查询，常用的技术有： 近似最近邻（ANN，Approximate Nearest Neighbor）搜索：当数据集非常大时，精确的最近邻搜索可能非常慢，因此会使用近似算法进行加速。常见的ANN算法有： HNSW（Hierarchical Navigable Small World）：一种基于小世界图的近似最近邻搜索算法，具有较高的搜索精度和效率。 FAISS（Facebook AI Similarity Search）：一个由Facebook开源的库，用于高效的向量检索，支持多种近似最近邻搜索算法。 LSH（Locality-Sensitive Hashing）：一种哈希技术，能够将相似的对象映射到相同的哈希桶中，适用于高维数据的近似搜索。 IVF（Inverted File Indexing）：一种倒排索引的方法，将向量分组并对每组内的向量进行索引，以加速搜索。 向量量化（Vector Quantization）：通过将高维向量映射到有限数量的簇（cluster）或离散的值来减小存储空间并加速搜索过程。常见的向量量化方法包括： PQ（Product Quantization）：将向量分成多个子向量，并对每个子向量进行量化，减少存储空间。 OPQ（Optimized Product Quantization）：在PQ的基础上进行优化，进一步提高搜索性能和准确度。 4. 向量数据库的常见工具和平台 目前有多种开源和商业化的向量数据库可供选择，其中一些流行的工具和平台包括： 4.1 FAISS (Facebook AI Similarity Search) 概述：由Facebook开发的开源库，广泛应用于高维向量的高效检索和相似度搜索。 功能：支持多种向量索引方法（如IVF、PQ、HNSW等），能够在百万级甚至亿级规模的向量数据中进行高效的近似最近邻搜索。 特点：提供CPU和GPU版本，支持大规模数据集的快速索引和查询。 4.2 Milvus 概述：Milvus是一个开源的向量数据库，专门用于存储、管理和查询向量数据。 功能：支持多种索引类型，包括HNSW、IVF、Annoy、RocksDB等，能够高效地进行向量检索。 特点：具有高可扩展性，支持分布式部署，适用于大规模向量数据的处理。 4.3 Weaviate 概述：Weaviate是一个开源的向量搜索引擎，专注于将结构化数据与非结构化数据（如文本、图像、视频）结合起来进行推荐和检索。 功能：支持基于图像、文本和视频的向量化检索，可以与外部机器学习模型和深度学习框架集成。 特点：内建向量索引，支持灵活的数据模型和自动化的训练工作流。 4.4 Pinecone 概述：Pinecone是一个商业化的向量数据库平台，专注于提供高效、可扩展的向量存储和搜索服务。 功能：提供快速的相似性搜索，支持自动化的索引更新、在线查询等功能。 特点：面向开发者，支持无缝集成，适用于实时数据处理和检索。 4.5 Elasticsearch with Vector Search 概述：Elas…