<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="/wp-content/plugins/rss-beauty/pink.xsl"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>插件 Archives - obaby 𝐢‍𝐧⃝ void</title>
	<atom:link href="https://oba.by/tag/%e6%8f%92%e4%bb%b6/feed/" rel="self" type="application/rss+xml" />
	<link>https://oba.by/tag/插件/</link>
	<description>程序媛 / 独立开发者 / 智商不稳定的女神经</description>
	<lastBuildDate>Wed, 27 May 2026 07:05:03 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://oba.by/wp-content/uploads/2026/01/uugai.com-166111691272754-100x100.png</url>
	<title>插件 Archives - obaby 𝐢‍𝐧⃝ void</title>
	<link>https://oba.by/tag/插件/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Baby Anti-Spam 自建反垃圾评论系统</title>
		<link>https://oba.by/2026/04/798/</link>
					<comments>https://oba.by/2026/04/798/#comments</comments>
		
		<dc:creator><![CDATA[obaby]]></dc:creator>
		<pubDate>Mon, 06 Apr 2026 10:05:11 +0000</pubDate>
				<category><![CDATA[程序媛]]></category>
		<category><![CDATA[akismet]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[垃圾评论]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[机器学习]]></category>
		<guid isPermaLink="false">https://zhongxiaojie.cn/?p=798</guid>

					<description><![CDATA[很久之前，就经常收到akismet的授权提醒，对应一个错误码10010。 刚开始还以为是多域名访问导致的授权校 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://zhongxiaojie.cn/wp-content/uploads/2026/04/330A0347-scaled.jpg" data-lbwps-width="1649" data-lbwps-height="2560" data-lbwps-srcsmall="https://zhongxiaojie.cn/wp-content/uploads/2026/04/330A0347-scaled.jpg" data-lightbox="gal[798]"><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-807" src="https://zhongxiaojie.cn/wp-content/uploads/2026/04/330A0347-scaled.jpg" alt="" width="1649" height="2560" srcset="https://oba.by/wp-content/uploads/2026/04/330A0347-scaled.jpg?v=1775469075 1649w, https://oba.by/wp-content/uploads/2026/04/330A0347-193x300.jpg?v=1775469075 193w, https://oba.by/wp-content/uploads/2026/04/330A0347-659x1024.jpg?v=1775469075 659w, https://oba.by/wp-content/uploads/2026/04/330A0347-97x150.jpg?v=1775469075 97w, https://oba.by/wp-content/uploads/2026/04/330A0347-768x1193.jpg?v=1775469075 768w, https://oba.by/wp-content/uploads/2026/04/330A0347-989x1536.jpg?v=1775469075 989w, https://oba.by/wp-content/uploads/2026/04/330A0347-1319x2048.jpg?v=1775469075 1319w, https://oba.by/wp-content/uploads/2026/04/330A0347-665x1033.jpg?v=1775469075 665w, https://oba.by/wp-content/uploads/2026/04/330A0347-167x260.jpg?v=1775469075 167w" sizes="(max-width: 1649px) 100vw, 1649px" /></a></p>
<p>很久之前，就经常收到akismet的授权提醒，对应一个错误码10010。</p>
<p><span id="more-798"></span></p>
<p><a href="https://zhongxiaojie.cn/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-13-58.png" data-lbwps-width="2540" data-lbwps-height="303" data-lbwps-srcsmall="https://zhongxiaojie.cn/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-13-58.png" data-lightbox="gal[798]"><img decoding="async" class="alignnone size-full wp-image-799" src="https://zhongxiaojie.cn/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-13-58.png" alt="" width="2540" height="303" srcset="https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-13-58.png?v=1775467728 2540w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-13-58-300x36.png?v=1775467728 300w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-13-58-1024x122.png?v=1775467728 1024w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-13-58-150x18.png?v=1775467728 150w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-13-58-768x92.png?v=1775467728 768w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-13-58-1536x183.png?v=1775467728 1536w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-13-58-2048x244.png?v=1775467728 2048w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-13-58-665x79.png?v=1775467728 665w" sizes="(max-width: 2540px) 100vw, 2540px" /></a></p>
<p><a href="https://zhongxiaojie.cn/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-16-0.png" data-lbwps-width="1121" data-lbwps-height="1398" data-lbwps-srcsmall="https://zhongxiaojie.cn/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-16-0.png" data-lightbox="gal[798]"><img decoding="async" class="alignnone size-full wp-image-801" src="https://zhongxiaojie.cn/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-16-0.png" alt="" width="1121" height="1398" srcset="https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-16-0.png?v=1775467732 1121w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-16-0-241x300.png?v=1775467732 241w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-16-0-821x1024.png?v=1775467732 821w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-16-0-120x150.png?v=1775467732 120w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-16-0-768x958.png?v=1775467732 768w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-16-0-665x829.png?v=1775467732 665w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_14-16-0-208x260.png?v=1775467732 208w" sizes="(max-width: 1121px) 100vw, 1121px" /></a></p>
<p>刚开始还以为是多域名访问导致的授权校验出问题了。后来换了n个key，同时添加了插件hook掉所有的垃圾评论检测逻辑，让全部走统一的域名，结果前几天又收到这个提醒了。</p>
<p><a href="https://zhongxiaojie.cn/wp-content/uploads/2026/04/Screenshot-2026-04-06-202533.png" data-lbwps-width="952" data-lbwps-height="1556" data-lbwps-srcsmall="https://zhongxiaojie.cn/wp-content/uploads/2026/04/Screenshot-2026-04-06-202533.png" data-lightbox="gal[798]"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-820" src="https://zhongxiaojie.cn/wp-content/uploads/2026/04/Screenshot-2026-04-06-202533.png" alt="" width="952" height="1556" srcset="https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-202533.png?v=1775478429 952w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-202533-184x300.png?v=1775478429 184w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-202533-627x1024.png?v=1775478429 627w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-202533-92x150.png?v=1775478429 92w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-202533-768x1255.png?v=1775478429 768w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-202533-940x1536.png?v=1775478429 940w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-202533-665x1087.png?v=1775478429 665w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-202533-159x260.png?v=1775478429 159w" sizes="auto, (max-width: 952px) 100vw, 952px" /></a></p>
<p>插件代码：</p>
<pre class="EnlighterJSRAW" data-enlighter-language="php">&lt;?php
/**
 * Plugin Name: Akismet 单一主域名（多域名站点）
 * Description: 当站点配置了多个域名时，强制发往 Akismet 的请求只使用一个主域名，避免被计为多站点触发 10010。
 * Version: 1.0
 * Author: obaby
 *
 * 使用：在下方设置 AKISMET_CANONICAL_HOME 为主域名（或留空则用 WordPress「设置」里的站点地址）。
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * 主域名（规范 URL，不要末尾斜杠）。留空则使用 get_option( 'home' )。
 * 例如: https://www.example.com
 */
if ( ! defined( 'AKISMET_CANONICAL_HOME' ) ) {
    define( 'AKISMET_CANONICAL_HOME', 'https://zhongxiaojie.cn' );
}

/**
 * 获取发往 Akismet 时使用的唯一主域名 URL。
 */
function akismet_single_domain_get_canonical_home() {
    $home = AKISMET_CANONICAL_HOME;
    if ( $home === '' || $home === null ) {
        $home = get_option( 'home' );
    }
    return untrailingslashit( $home );
}

/**
 * 将任意 URL 替换为使用主域名的版本（只改 host，保留 path/query）。
 */
function akismet_single_domain_normalize_url( $url, $canonical_home ) {
    if ( empty( $url ) || ! is_string( $url ) ) {
        return $url;
    }
    $parsed = wp_parse_url( $url );
    $canon  = wp_parse_url( $canonical_home );
    if ( empty( $canon['scheme'] ) || empty( $canon['host'] ) ) {
        return $url;
    }
    $scheme = isset( $parsed['scheme'] ) ? $parsed['scheme'] : $canon['scheme'];
    $host   = $canon['host'];
    $path   = isset( $parsed['path'] ) ? $parsed['path'] : '/';
    $query  = isset( $parsed['query'] ) ? '?' . $parsed['query'] : '';
    $frag   = isset( $parsed['fragment'] ) ? '#' . $parsed['fragment'] : '';
    return $scheme . '://' . $host . $path . $query . $frag;
}

/**
 * 统一 verify-key / get-subscription / get-stats 的 blog 为主域名。
 */
add_filter( 'akismet_request_args', function ( $request_args, $path ) {
    $paths = array( 'verify-key', 'get-subscription', 'get-stats' );
    if ( ! in_array( $path, $paths, true ) ) {
        return $request_args;
    }
    $canon = akismet_single_domain_get_canonical_home();
    if ( ! empty( $request_args['blog'] ) ) {
        $request_args['blog'] = $canon;
    }
    return $request_args;
}, 10, 2 );

/**
 * 统一 comment-check（以及 recheck）的 blog、permalink，并把请求里的 HTTP_HOST 等改为主域名。
 */
add_filter( 'akismet_request_args', function ( $request_args, $path ) {
    if ( $path !== 'comment-check' ) {
        return $request_args;
    }
    $canon = akismet_single_domain_get_canonical_home();
    $parsed = wp_parse_url( $canon );
    if ( empty( $parsed['host'] ) ) {
        return $request_args;
    }
    $canon_host = $parsed['host'];

    $request_args['blog'] = $canon;
    if ( ! empty( $request_args['permalink'] ) ) {
        $request_args['permalink'] = akismet_single_domain_normalize_url( $request_args['permalink'], $canon );
    }

    // 让服务端看到的“当前请求”也统一为主域名，减少被计为多站点
    if ( isset( $request_args['HTTP_HOST'] ) ) {
        $request_args['HTTP_HOST'] = $canon_host;
    }
    if ( isset( $request_args['REQUEST_URI'] ) ) {
        $uri = $request_args['REQUEST_URI'];
        $request_args['REQUEST_URI'] = ( is_string( $uri ) &amp;&amp; ( $p = wp_parse_url( $uri, PHP_URL_PATH ) ) !== null ) ? $p : '/';
    }
    if ( isset( $request_args['DOCUMENT_URI'] ) ) {
        $uri = $request_args['DOCUMENT_URI'];
        $request_args['DOCUMENT_URI'] = ( is_string( $uri ) &amp;&amp; ( $p = wp_parse_url( $uri, PHP_URL_PATH ) ) !== null ) ? $p : '/';
    }
    return $request_args;
}, 10, 2 );

/**
 * 统一 submit-spam / submit-ham 的 blog、permalink。
 */
add_filter( 'akismet_request_args', function ( $request_args, $path ) {
    if ( ! in_array( $path, array( 'submit-spam', 'submit-ham' ), true ) ) {
        return $request_args;
    }
    $canon = akismet_single_domain_get_canonical_home();
    $request_args['blog'] = $canon;
    if ( ! empty( $request_args['permalink'] ) ) {
        $request_args['permalink'] = akismet_single_domain_normalize_url( $request_args['permalink'], $canon );
    }
    return $request_args;
}, 10, 2 );
</pre>
<p>这次授权的密钥撑得时间稍微长了点，但是最终还是收到了这个提醒，意思是需要订购商业版授权。我这个人站点为了发垃圾评论订购一个商业版授权，确实有些难以接受。</p>
<p>于是，我决定自建反垃圾评论系统，基于scikit-learn实现了现在的这套垃圾评论检测系统，训练数据一部分来源于github的开源数据，另外一个就是我自己博客的评论数据。为了保证样本正例和负例数量差别不至于过大，经过各种方式进行了多轮数据清洗。</p>
<p>如果想要评论识别更加准确，可以提供自己的博客评论数据，如果能提供垃圾评论更好。现在欠缺的主要是垃圾评论数据，正常的评论数据我已经提供几千条数据。</p>
<p>效果测试：</p>
<p><a href="https://zhongxiaojie.cn/wp-content/uploads/2026/04/Screenshot-2026-04-06-175352-scaled.png" data-lbwps-width="2560" data-lbwps-height="1395" data-lbwps-srcsmall="https://zhongxiaojie.cn/wp-content/uploads/2026/04/Screenshot-2026-04-06-175352-scaled.png" data-lightbox="gal[798]"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-808" src="https://zhongxiaojie.cn/wp-content/uploads/2026/04/Screenshot-2026-04-06-175352-scaled.png" alt="" width="2560" height="1395" srcset="https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175352-scaled.png?v=1775469300 2560w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175352-300x163.png?v=1775469300 300w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175352-1024x558.png?v=1775469300 1024w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175352-150x82.png?v=1775469300 150w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175352-768x419.png?v=1775469300 768w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175352-1536x837.png?v=1775469300 1536w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175352-2048x1116.png?v=1775469300 2048w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175352-665x362.png?v=1775469300 665w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175352-477x260.png?v=1775469300 477w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></a></p>
<p><a href="https://zhongxiaojie.cn/wp-content/uploads/2026/04/Screenshot-2026-04-06-175539-scaled.png" data-lbwps-width="2560" data-lbwps-height="1474" data-lbwps-srcsmall="https://zhongxiaojie.cn/wp-content/uploads/2026/04/Screenshot-2026-04-06-175539-scaled.png" data-lightbox="gal[798]"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-809" src="https://zhongxiaojie.cn/wp-content/uploads/2026/04/Screenshot-2026-04-06-175539-scaled.png" alt="" width="2560" height="1474" srcset="https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175539-scaled.png?v=1775469393 2560w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175539-300x173.png?v=1775469393 300w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175539-1024x589.png?v=1775469393 1024w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175539-150x86.png?v=1775469393 150w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175539-768x442.png?v=1775469393 768w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175539-1536x884.png?v=1775469393 1536w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175539-2048x1179.png?v=1775469393 2048w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175539-665x383.png?v=1775469393 665w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175539-452x260.png?v=1775469393 452w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></a></p>
<p>测试地址：<a href="https://anti-spam.zhongxiaojie.cn/test/spam" target="_blank" rel="noopener">https://anti-spam.zhongxiaojie.cn/test/spam</a></p>
<p>简介：</p>
<p>面向 <strong>中英混合</strong> 评论的 WordPress 垃圾识别方案：PHP 插件在评论入库前调用 <strong>本机 Python 服务</strong>，由小型多语种向量模型 + 分类器（或演示用规则）给出垃圾概率。</p>
<p>适合评论量不大、单机部署（例如 <strong>4 核 / 8GB RAM</strong> 的 Ubuntu），服务与 WordPress 同机时使用 <code>127.0.0.1</code> 即可。</p>
<p>目录结构：</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">baby_anti_spam/
├── README.md
├── screenshots/             # 文档：服务启动与 curl 自测示意
│   ├── service.png
│   └── test.png
├── service/                 # Python FastAPI 侧车服务
│   ├── .env.example
│   ├── requirements.txt
│   ├── requirements-ml.txt
│   ├── run.py
│   ├── app/
│   │   └── stats_backends/   # 统计存储：sqlite / mysql
│   └── scripts/
│       ├── init_stats_mysql.sql
│       └── init_stats_mysql.py
│       ├── train_sklearn.py
│       ├── download_embedding_model.py
│       └── download_embedding_model.sh
└── wordpress/baby-anti-spam/
    └── baby-anti-spam.php # WordPress 插件</pre>
<p>关键配置：</p>
<pre class="EnlighterJSRAW" data-enlighter-language="md">| 变量 | 说明 |
|------|------|
| `SPAM_HOST` | 监听地址，同机建议 `127.0.0.1` |
| `SPAM_PORT` | 端口，默认 `8765` |
| `SPAM_API_SECRET` | **单密钥模式（兼容旧版）**：未配置 `SPAM_API_KEYS` 且未配置 `SPAM_API_KEYS_FILE` 时，仅此密钥有效，等价于 name=`default`、不限流（`max_rpm=0`）。与 WP 插件里填写的密钥一致 |
| `SPAM_API_KEYS` | **多密钥**：JSON 数组。每项为 `name`（唯一，用于统计与限流分组）、`key` 或 `secret`（与请求头一致）、`max_rpm` 或 `rpm`（每分钟最大请求数，`0` 表示不限制）。与 `SPAM_API_KEYS_FILE` 合并时：**先读文件条目，再追加本变量** |
| `SPAM_API_KEYS_FILE` | 可选，指向 JSON 文件，根节点为与上表相同结构的**数组**。文件必须存在，否则进程启动失败 |
| `SPAM_MODEL_PATH` | 训练得到的 `*.joblib` 路径；留空则取决于 `SPAM_FALLBACK_RULES` |
| `SPAM_FALLBACK_RULES` | 无模型文件时是否启用内置极简规则（演示用）；生产训练后应设为 `false` 并配置 `SPAM_MODEL_PATH` |
| `SPAM_LABEL_THRESHOLD` | 可选，默认 `0.8`。`spam_score` ≥ 此值时 JSON 中 `label` 为 `spam`，否则为 `normal` |
| `SPAM_DFA_ENABLED` | 默认 `true`。为 `true` 时使用 `dfa-python-filter/keywords` 做敏感词检测；命中则直接 `spam_score=1`、`detail=dfa_sensitive`（早于 sklearn） |
| `SPAM_DFA_KEYWORDS_PATH` | 可选，自定义敏感词文件路径；留空则用 `service/dfa-python-filter/keywords` |
| `SPAM_NON_CHINESE_FLOOR_ENABLED` | 默认 `true`。为 `true` 时若合并后的 author/email/url/text 中**无任何 CJK 表意字符**（主要针对中文训练语料），则将 `spam_score` **至少**抬到 `SPAM_NON_CHINESE_SPAM_FLOOR` |
| `SPAM_NON_CHINESE_SPAM_FLOOR` | 默认 `0.9`。与上项配合，在「无中文」评论上与 sklearn / 规则分取 `max` |
| `SPAM_STATS_ENABLED` | 默认 `true`。为 `true` 时记录每次**成功**返回的 `/v1/classify` 请求与响应（失败 / 401 不落库），并允许 `/v1/mark-spam` 写入 `spam_marks` 表 |
| `SPAM_STATS_BACKEND` | `sqlite`（默认）或 `mysql`。选 `mysql` 时需安装 `pymysql`（已在 `requirements.txt`）并配置下方 MySQL 变量 |
| `SPAM_STATS_DB_PATH` | 仅 `sqlite`：数据库文件路径；留空则为 `service/data/stats.sqlite`（已加入 `.gitignore`） |
| `SPAM_STATS_MYSQL_HOST` / `SPAM_STATS_MYSQL_PORT` | 仅 `mysql`：默认 `127.0.0.1` / `3306` |
| `SPAM_STATS_MYSQL_USER` / `SPAM_STATS_MYSQL_PASSWORD` | 仅 `mysql`：连接账号（`user` 必填） |
| `SPAM_STATS_MYSQL_DATABASE` | 仅 `mysql`：库名（必填），默认示例 `baby_spam_stats` |
| `SPAM_STATS_MYSQL_CHARSET` | 仅 `mysql`：默认 `utf8mb4` |</pre>
<p>&nbsp;</p>
<p>系统服务启动截图：</p>
<p><a href="https://zhongxiaojie.cn/wp-content/uploads/2026/04/service-scaled.png" data-lbwps-width="2560" data-lbwps-height="1341" data-lbwps-srcsmall="https://zhongxiaojie.cn/wp-content/uploads/2026/04/service-scaled.png" data-lightbox="gal[798]"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-803" src="https://zhongxiaojie.cn/wp-content/uploads/2026/04/service-scaled.png" alt="" width="2560" height="1341" srcset="https://oba.by/wp-content/uploads/2026/04/service-scaled.png?v=1775467740 2560w, https://oba.by/wp-content/uploads/2026/04/service-300x157.png?v=1775467740 300w, https://oba.by/wp-content/uploads/2026/04/service-1024x536.png?v=1775467740 1024w, https://oba.by/wp-content/uploads/2026/04/service-150x79.png?v=1775467740 150w, https://oba.by/wp-content/uploads/2026/04/service-768x402.png?v=1775467740 768w, https://oba.by/wp-content/uploads/2026/04/service-1536x804.png?v=1775467740 1536w, https://oba.by/wp-content/uploads/2026/04/service-2048x1072.png?v=1775467740 2048w, https://oba.by/wp-content/uploads/2026/04/service-665x348.png?v=1775467740 665w, https://oba.by/wp-content/uploads/2026/04/service-497x260.png?v=1775467740 497w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></a></p>
<p>wp插件配置：</p>
<p><a href="https://zhongxiaojie.cn/wp-content/uploads/2026/04/Screenshot-2026-04-06-175939.png" data-lbwps-width="1029" data-lbwps-height="1724" data-lbwps-srcsmall="https://zhongxiaojie.cn/wp-content/uploads/2026/04/Screenshot-2026-04-06-175939.png" data-lightbox="gal[798]"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-810" src="https://zhongxiaojie.cn/wp-content/uploads/2026/04/Screenshot-2026-04-06-175939.png" alt="" width="1029" height="1724" srcset="https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175939.png?v=1775469593 1029w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175939-179x300.png?v=1775469593 179w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175939-611x1024.png?v=1775469593 611w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175939-90x150.png?v=1775469593 90w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175939-768x1287.png?v=1775469593 768w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175939-917x1536.png?v=1775469593 917w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175939-665x1114.png?v=1775469593 665w, https://oba.by/wp-content/uploads/2026/04/Screenshot-2026-04-06-175939-155x260.png?v=1775469593 155w" sizes="auto, (max-width: 1029px) 100vw, 1029px" /></a></p>
<p>项目地址：<a href="https://anti-spam.zhongxiaojie.cn" target="_blank" rel="noopener">https://anti-spam.zhongxiaojie.cn</a></p>
<p>代码地址：<a href="https://cnb.cool/oba.by/baby-wp-anti-spam" target="_blank" rel="noopener">https://cnb.cool/oba.by/baby-wp-anti-spam</a></p>
<p>说明：如果自己不想训练数据，下载发布版的spam_pipeline.joblib 放入指定目录下配置服务启动即可，<a class="hover:underline hover:text-link truncate" href="https://cnb.cool/oba.by/baby-wp-anti-spam/-/releases/download/v2.0/baby-anti-spam.zip" download="">baby-anti-spam.zip</a> 为wp插件。</p>
<p>训练耗时大约11分钟：</p>
<p><a href="https://zhongxiaojie.cn/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_18-3-45.png" data-lbwps-width="2088" data-lbwps-height="112" data-lbwps-srcsmall="https://zhongxiaojie.cn/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_18-3-45.png" data-lightbox="gal[798]"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-811" src="https://zhongxiaojie.cn/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_18-3-45.png" alt="" width="2088" height="112" srcset="https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_18-3-45.png?v=1775469858 2088w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_18-3-45-300x16.png?v=1775469858 300w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_18-3-45-1024x55.png?v=1775469858 1024w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_18-3-45-150x8.png?v=1775469858 150w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_18-3-45-768x41.png?v=1775469858 768w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_18-3-45-1536x82.png?v=1775469858 1536w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_18-3-45-2048x110.png?v=1775469858 2048w, https://oba.by/wp-content/uploads/2026/04/BaiduShurufa_2026-4-6_18-3-45-665x36.png?v=1775469858 665w" sizes="auto, (max-width: 2088px) 100vw, 2088px" /></a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://oba.by/2026/04/798/feed/</wfw:commentRss>
			<slash:comments>60</slash:comments>
		
		
			</item>
		<item>
		<title>开源项目目录📇</title>
		<link>https://oba.by/2026/03/593/</link>
					<comments>https://oba.by/2026/03/593/#comments</comments>
		
		<dc:creator><![CDATA[obaby]]></dc:creator>
		<pubDate>Sat, 14 Mar 2026 08:14:31 +0000</pubDate>
				<category><![CDATA[程序媛]]></category>
		<category><![CDATA[gitee]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[微信]]></category>
		<category><![CDATA[插件]]></category>
		<guid isPermaLink="false">https://zhongxiaojie.cn/?p=593</guid>

					<description><![CDATA[部分开源项目源码。 PHP8 探针项目（包含 WP 插件） 专业的服务器监控和管理工具，提供实时系统监控、性能 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://zhongxiaojie.cn/wp-content/uploads/2026/03/58603a31.jpg" data-lbwps-width="2127" data-lbwps-height="1080" data-lbwps-srcsmall="https://zhongxiaojie.cn/wp-content/uploads/2026/03/58603a31.jpg" data-lightbox="gal[593]"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-597" src="https://zhongxiaojie.cn/wp-content/uploads/2026/03/58603a31.jpg" alt="" width="2127" height="1080" srcset="https://oba.by/wp-content/uploads/2026/03/58603a31.jpg?v=1773476059 2127w, https://oba.by/wp-content/uploads/2026/03/58603a31-300x152.jpg?v=1773476059 300w, https://oba.by/wp-content/uploads/2026/03/58603a31-1024x520.jpg?v=1773476059 1024w, https://oba.by/wp-content/uploads/2026/03/58603a31-150x76.jpg?v=1773476059 150w, https://oba.by/wp-content/uploads/2026/03/58603a31-768x390.jpg?v=1773476059 768w, https://oba.by/wp-content/uploads/2026/03/58603a31-1536x780.jpg?v=1773476059 1536w, https://oba.by/wp-content/uploads/2026/03/58603a31-2048x1040.jpg?v=1773476059 2048w, https://oba.by/wp-content/uploads/2026/03/58603a31-665x338.jpg?v=1773476059 665w, https://oba.by/wp-content/uploads/2026/03/58603a31-512x260.jpg?v=1773476059 512w" sizes="auto, (max-width: 2127px) 100vw, 2127px" /></a></p>
<p>部分开源项目源码。</p>
<p><span id="more-593"></span></p>
<h2>PHP8 探针项目（包含 WP 插件）</h2>
<p>专业的服务器监控和管理工具，提供实时系统监控、性能测试、数据库检测等功能。本项目包含两个版本：独立 PHP 探针和 WordPress 插件版本。</p>
<h4>项目结构</h4>
<pre><code>php8-probe/
├── phpprobe.php              # 独立 PHP 探针（可直接访问）
├── php-probe-widget/         # WordPress 插件版本
│   ├── php-probe-widget.php  # 主插件文件
│   ├── includes/             # 小组件类
│   ├── css/                  # 前端样式
│   ├── js/                   # 前端脚本
│   └── README.md             # 插件详细文档
├── LICENSE                   # 许可证
└── README.md                 # 本文件</code></pre>
<h4>快速开始</h4>
<h5>方式一：独立 PHP 探针</h5>
<ul>
<li>将 <code>phpprobe.php</code> 上传到您的 Web 服务器</li>
<li>通过浏览器访问该文件即可查看服务器信息</li>
<li>支持实时监控、性能测试、数据库检测等功能</li>
</ul>
<p><strong>特点：</strong></p>
<ul>
<li>无需安装，直接使用</li>
<li>单文件部署，简单方便</li>
<li>支持多平台（Linux、Windows、macOS、FreeBSD）</li>
<li>实时系统监控</li>
</ul>
<h5>方式二：WordPress 插件</h5>
<ul>
<li>将 <code>php-probe-widget</code> 文件夹复制到 <code>wp-content/plugins/</code> 目录</li>
<li>在 WordPress 后台激活「服务器监控探针」插件</li>
<li>进入 <strong>外观 &gt; 小组件</strong> 页面</li>
<li>将「服务器监控探针」小组件拖拽到侧边栏</li>
<li>配置显示选项和主题设置</li>
</ul>
<p><a href="https://gitee.com/obaby/php8-probe" target="_blank" rel="noopener">https://gitee.com/obaby/php8-probe</a></p>
<hr />
<h2>结巴分词 HTTP 服务</h2>
<p>基于 Flask 和 jieba 的本地 HTTP 分词服务。</p>
<p><a href="https://gitee.com/obaby/baby-jb-server" target="_blank" rel="noopener">https://gitee.com/obaby/baby-jb-server</a></p>
<hr />
<h2>WordPress 博客数据分析工具</h2>
<p>这是一个用于分析 WordPress 博客数据的 Python 工具，可以通过 WordPress REST API 获取并分析博客的文章和评论数据。</p>
<h4>功能特性</h4>
<ul>
<li>统计指定年份发布的文章数量（按月统计）</li>
<li>统计指定年份的评论数量</li>
<li>分析评论用户的评论数排行</li>
<li>将分析结果保存为 JSON 文件</li>
</ul>
<p><a href="https://gitee.com/obaby/baby-wp-data-analysis-tool" target="_blank" rel="noopener">https://gitee.com/obaby/baby-wp-data-analysis-tool</a></p>
<hr />
<h2>微信双开脚本 (WeChat Dual Launch Script)</h2>
<p>一个用于 macOS 系统的微信双开自动化脚本，通过复制微信应用并修改 Bundle ID 实现真正的微信双开功能。</p>
<h4>功能特性</h4>
<ul>
<li><strong>一键双开</strong> — 自动完成所有设置步骤</li>
<li><strong>智能检测</strong> — 自动检测已存在的 WeChat2.app</li>
<li><strong>安全可靠</strong> — 完善的错误处理和权限检查</li>
<li><strong>彩色输出</strong> — 友好的命令行界面</li>
<li><strong>进程管理</strong> — 查看和管理微信进程</li>
<li><strong>自动化设置</strong> — 无需手动执行复杂命令</li>
</ul>
<p><a href="https://github.com/obaby/baby-wechat" target="_blank" rel="noopener">https://github.com/obaby/baby-wechat</a></p>
<hr />
<h2>Baby 足迹地图</h2>
<h4>简介</h4>
<p>基于百度地图的足迹地图。</p>
<p>启动服务之后，先去后台「地图 key 设置」页面，添加百度地图浏览器端 AK。</p>
<p>为了防止 JS 地址解析受限，需要同时添加服务端 AK。</p>
<p>添加之后，访问 <a href="http://127.0.0.1:10099/api/location/process-my-location/" rel="nofollow">http://127.0.0.1:10099/api/location/process-my-location/</a> 刷新数据库的地点坐标信息，后续无需再通过 JS 接口进行解析。</p>
<p><a href="https://github.com/obaby/BabyFootprintV2" target="_blank" rel="noopener">https://github.com/obaby/BabyFootprintV2</a></p>
<hr />
<h2>Simple microblogging</h2>
<p>Add a microblog to your site; display the microposts in a widget or using a shortcode. 增强版优化页面显示，增加分页功能。WP 微博插件。</p>
<p><a href="https://github.com/obaby/Simple-microblogging-wordpress-plugin" target="_blank" rel="noopener">https://github.com/obaby/Simple-microblogging-wordpress-plugin</a></p>
<hr />
<h2>Baby WP 评论强化拦截插件</h2>
<p>一个强大的 WordPress 评论过滤插件，支持字数限制、中文检测、关键词过滤等功能。</p>
<h4>插件信息</h4>
<ul>
<li><strong>插件名称</strong>：Baby WP 评论强化拦截插件</li>
<li><strong>版本</strong>：1.0.5</li>
<li><strong>作者</strong>：obaby</li>
<li><strong>作者网址</strong>：<a href="https://h4ck.org.cn/" rel="nofollow">https://h4ck.org.cn</a></li>
<li><strong>许可证</strong>：GPL v2 or later</li>
</ul>
<h4>功能特性</h4>
<h5>评论过滤功能</h5>
<ul>
<li><strong>字数限制</strong>：设置评论的最少和最多字数</li>
<li><strong>中文检测</strong>：要求评论必须包含中文字符</li>
<li><strong>关键词过滤</strong>：支持自定义关键词和 WordPress 设置的关键词</li>
<li><strong>正则表达式支持</strong>：支持使用正则表达式进行高级匹配</li>
</ul>
<h5>管理功能</h5>
<ul>
<li><strong>简单设置界面</strong>：直观的管理后台设置页面</li>
<li><strong>错误消息自定义</strong>：可以自定义各种错误提示消息和标题</li>
<li><strong>统计信息</strong>：记录评论过滤统计信息，支持重置功能</li>
<li><strong>WordPress 集成</strong>：与 WordPress 讨论设置完美集成，支持实时预览</li>
<li><strong>设置验证</strong>：完整的输入验证和数据清理机制</li>
</ul>
<h5>技术特性</h5>
<ul>
<li><strong>简单架构</strong>：采用简单的面向对象架构，易于维护</li>
<li><strong>性能优化</strong>：高效的过滤算法，不影响网站性能</li>
<li><strong>兼容性</strong>：支持 WordPress 5.0+ 版本，PHP 7.4+</li>
<li><strong>多语言</strong>：支持多语言环境</li>
<li><strong>数据安全</strong>：完整的输入验证和清理机制</li>
<li><strong>错误处理</strong>：完善的错误处理和日志记录</li>
</ul>
<p><a href="https://github.com/obaby/baby-wp-comment-filter" target="_blank" rel="noopener">https://github.com/obaby/baby-wp-comment-filter</a></p>
<hr />
<h2>WinRAR-Keygen</h2>
<h4>1. What is WinRAR?</h4>
<ul>
<li>WinRAR is a trialware file archiver utility for Windows, developed by Eugene Roshal of win.rar GmbH.</li>
<li>It can create and view archives in RAR or ZIP file formats and unpack numerous archive file formats.</li>
<li>WinRAR is not a free software. If you want to use it, you should pay to <a href="https://rarlab.com/" rel="nofollow"><strong>RARLAB</strong></a> and then you will get a license file named <code>rarreg.key</code>.</li>
<li>This repository will tell you how WinRAR license file <code>rarreg.key</code> is generated.</li>
</ul>
<h4>2. How is &#8220;rarreg.key&#8221; generated?</h4>
<ul>
<li>WinRAR uses a signature algorithm, which is a variant of Chinese SM2 digital signature algorithm, to process the user&#8217;s name and the license type he/she got. Save the result to <code>rarreg.key</code> and add some header info, then a license file is generated.</li>
</ul>
<p><a href="https://github.com/obaby/winrar-keygen" target="_blank" rel="noopener">https://github.com/obaby/winrar-keygen</a></p>
<hr />
<h2>Baby Device Manager</h2>
<p>一个功能强大的 WordPress 设备管理系统插件，支持设备分组管理、设备信息管理、自定义排序、状态跟踪等功能。</p>
<h4>功能特点</h4>
<ul>
<li>设备分组管理
<ul>
<li>创建和管理设备分组</li>
<li>自定义分组排序</li>
<li>分组描述信息</li>
</ul>
</li>
<li>设备管理
<ul>
<li>添加/编辑/删除设备</li>
<li>设备状态管理（在售、停售、已售出、维修中、已报废）</li>
<li>设备图片和产品链接</li>
<li>自定义设备排序</li>
<li>设备描述信息</li>
</ul>
</li>
<li>前端展示
<ul>
<li>响应式布局</li>
<li>按分组分类显示</li>
<li>支持多种排序方式</li>
<li>美观的界面设计</li>
<li>支持自定义每行显示设备数量（1–6 个）</li>
</ul>
</li>
<li>其他功能
<ul>
<li>图片管理：支持设备图片上传和显示</li>
<li>产品链接：支持添加产品详情页链接</li>
<li>状态跟踪：支持多种设备状态管理</li>
<li>自定义排序：支持设备分组和设备的自定义排序</li>
</ul>
</li>
</ul>
<p><a href="https://github.com/obaby/Baby-Device-Manager" target="_blank" rel="noopener">https://github.com/obaby/Baby-Device-Manager</a></p>
<hr />
<h2>RSS Beauty</h2>
<p>为 WordPress RSS Feed 提供美观的网页展示样式（基于 <a href="https://rss.beauty" target="_blank" rel="noopener">RSS.Beauty</a> 的 Pink 主题）。</p>
<h4>项目功能</h4>
<ul>
<li><strong>RSS 样式化</strong>：在 Feed 中注入 XSL 样式表，浏览器打开 feed 地址时以 HTML 页面形式展示，而非原始 XML。</li>
<li><strong>Feed Content-Type</strong>：将 feed 的 Content-Type 设为 <code>application/xml</code>，使浏览器按 XML 解析并应用 <code>xml-stylesheet</code>。</li>
<li><strong>XSL 地址</strong>：样式表使用插件目录下的静态文件 <code>pink.xsl</code>。需在 OpenResty/Nginx 中为 <code>.xsl</code> 配置正确的 Content-Type，否则浏览器可能不按 XSL 解析。</li>
<li><strong>主题</strong>：内置淡粉色（light pink）页面背景与适配的文字颜色。</li>
</ul>
<p><a href="https://cnb.cool/oba.by/rss-beauty" target="_blank" rel="noopener">https://cnb.cool/oba.by/rss-beauty</a></p>
<hr />
<h2>WP-UserAgent</h2>
<p><strong>Contributors:</strong> obaby<br />
<strong>Donate Link:</strong> <a href="https://oba.by" target="_blank" rel="noopener">https://oba.by</a><br />
<strong>Tags:</strong> useragent, user-agent, web browser, operating system, platform<br />
<strong>Requires at least:</strong> 2.0<br />
<strong>Tested up to:</strong> 6.3<br />
<strong>Stable tag:</strong> 16.06.99</p>
<h4>IP 查询方式（归属地）</h4>
<p>插件支持四种 IP 查询方式，可在 <strong>设置 → WP-UserAgent</strong> 中选择：</p>
<table>
<thead>
<tr>
<th>方式</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>IP2Location</strong></td>
<td>使用 IP2Location 数据库（需将 BIN 文件放入 <code>show-useragent/ip2location_db/db/</code>），依赖 Composer</td>
</tr>
<tr>
<td><strong>CZDB</strong></td>
<td>使用纯真 CZDB 数据库（需授权与 db 文件放入 <code>show-useragent/czdb/db/</code>），依赖 Composer</td>
</tr>
<tr>
<td><strong>ip2region</strong></td>
<td>使用 ip2region xdb（仅内置 ip2reginapi，不依赖 Composer）。需将 xdb 文件放入 <code>show-useragent/ip2region_db/</code>，文件名：<code>ip2region_v4.xdb</code>、<code>ip2region_v6.xdb</code></td>
</tr>
<tr>
<td><strong>纯真 QQWRY</strong></td>
<td>使用 qqwry_api（qqwry.dat + ipv6wry.db），无需 Composer。数据文件放入 <code>show-useragent/qqwry_api/ipdata/</code></td>
</tr>
</tbody>
</table>
<p>选择 <strong>ip2region</strong> 或 <strong>纯真 QQWRY</strong> 时不会加载 <code>vendor/autoload.php</code>。若选择 IP2Location 或 CZDB 时 vendor 加载失败，插件会自动回退为 ip2region 模式，避免站点白屏。</p>
<h4>Description</h4>
<p><strong>WP-UserAgent</strong> is a simple plugin that allows you to display details about a visitor&#8217;s operating system or web browser from the comment User-Agent string. Through a series of regular expressions, this plugin is able to detect the operating system and browser which can be integrated in comments or placed in custom places through your template(s).</p>
<blockquote><p><strong>注意：</strong></p>
<ul>
<li>使用 <strong>CZDB</strong> 时：若更新替换纯真数据库，请同步更新 <code>show-useragent/ip2c-text.php</code> 中的 <code>$key = 'n2pf2+PrE1y9I55MjdpLpg==';</code></li>
<li>使用 <strong>ip2region</strong> 时：将 xdb 文件放入 <code>show-useragent/ip2region_db/</code>（<code>ip2region_v4.xdb</code>、<code>ip2region_v6.xdb</code>），无需 Composer。</li>
</ul>
</blockquote>
<p><a href="https://cnb.cool/oba.by/wp-useragent" target="_blank" rel="noopener">https://cnb.cool/oba.by/wp-useragent</a></p>
<hr />
<h2>Baby Press</h2>
<p>一个前后端分离的 WordPress 数据读取项目：</p>
<ul>
<li>后端使用 Django + Django REST Framework 提供 API</li>
<li>前端使用 Vue 3 + TypeScript + Vite 展示数据</li>
<li>支持读取现有 WordPress 表，并兼容可配置表前缀（如 <code>wp_</code>、<code>wp123_</code>）</li>
</ul>
<p>当前项目仅是 WP 系统的外挂插件，目前不能脱离 WP 系统独立使用。</p>
<h4>项目定位与特点</h4>
<ul>
<li><strong>定位</strong>：本仓库是 Baby Press 的后端部分，以 Django + Django REST Framework 提供 <code>/api/</code> 前缀的 REST 接口；数据层直连现有 WordPress MySQL 库（不通过 Django 迁移改写 WP 表结构），并配合可配置表前缀适配不同站点。</li>
<li><strong>双库架构</strong>：<code>default</code> 使用本地 SQLite 存放 Django 管理表与扩展业务表（菜单覆盖、侧边栏编排、社交链接等）；<code>wordpress</code> 连接 WordPress 业务库，避免把 Django 迁移写入 WP 库。</li>
<li><strong>与 WP 的边界</strong>：内容、用户登录态、评论主数据等均依赖 WordPress；后端侧重只读查询与评论等少量写操作，部分能力还需站点侧 WordPress 插件（如表情、CREN 退订语义等，详见仓库根目录 <code>README.md</code>）。</li>
<li><strong>管理后台</strong>：使用 django-simpleui 维护本地扩展配置；生产环境推荐 Daphne（ASGI）启动，与前后端分离部署方式一致。</li>
</ul>
<h4>主要功能（后端侧）</h4>
<ul>
<li><strong>内容</strong>：文章列表与详情、按 <code>slug</code> 读取页面/文章（页面优先、文章回退）。</li>
<li><strong>评论</strong>：读取已审核评论、提交新评论（写入 <code>wp_comments</code>；可选对接反垃圾分类服务、去重与提交频控、遵循 WP「讨论」设置；可选 Object Cache Pro 评论缓存失效、Nginx FastCGI 缓存异步清理）。</li>
<li><strong>站点与导航</strong>：站点元信息、多级导航菜单；菜单结果可与 SQLite 中的屏蔽规则 / 追加项合并输出。</li>
<li><strong>侧栏与社交</strong>：侧边栏聚合（近期文章、评论、分类、标签云、友情链接等）；小组件顺序与类型（含自定义 HTML）、「功能」链接由后台配置；社交账号列表供页眉/页脚共用。</li>
<li><strong>其他接口</strong>：<code>GET /api/wp/auth/me/</code> 探测 WordPress 登录 Cookie；Besties 列表；站内探测用接口等。</li>
</ul>
<p>项目地址：<a href="https://gitee.com/obaby/baby-press-public" target="_blank" rel="noopener">https://gitee.com/obaby/baby-press-public</a><br />
预览地址：<a href="https://i.zhongxiaojie.cn/" target="_blank" rel="noopener">https://i.zhongxiaojie.cn/</a></p>
<hr />
<h2>baby-ip-location</h2>
<p>离线 IP 归属地相关资源与查询服务：包含 WordPress 插件侧 PHP 逻辑（<code>show-useragent</code>），以及独立的 Python HTTP 查询服务（<code>ip_lookup_service</code>），数据源与 <code>ip2c-text.php</code> 中的配置一致。</p>
<h4>目录说明</h4>
<pre><code>show-useragent/              PHP / Composer 依赖与 IP 查询插件代码（含 ip2c-text.php）
ip_db/                       Python 服务使用的离线库目录（需自行放入数据文件）
ip_lookup_service/           FastAPI 查询服务与 ip_lookup 包
ip_lookup_service/static/    国旗 SVG、浏览器/操作系统图标、介绍页与测试页
venv/                        本地虚拟环境（可选）</code></pre>
<h5>ip_db 中应放置的文件</h5>
<p>将现有库从 <code>show-useragent</code> 下复制或软链接到下列路径（文件名需一致）：</p>
<pre><code>ip_db/ip2location/   IP2LOCATION-LITE-DB11.BIN、IP2LOCATION-LITE-DB11.IPV6.BIN
ip_db/czdb/          cz88_public_v4.czdb、cz88_public_v6.czdb
ip_db/ip2region/     ip2region_v4.xdb、ip2region_v6.xdb
ip_db/qqwry/         qqwry.dat、ipv6wry.db</code></pre>
<p>项目地址：<a href="https://cnb.cool/oba.by/baby-ip-location" target="_blank" rel="noopener">https://cnb.cool/oba.by/baby-ip-location</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://oba.by/2026/03/593/feed/</wfw:commentRss>
			<slash:comments>81</slash:comments>
		
		
			</item>
	</channel>
</rss>
