来自自恋狂的瞎折腾

作为一个超级丰满的女子,依然阻挡不住自己的自恋,要把照片放到每一个地方。啊,你问为什么?还不是因为自恋嘛!

 


Moe-Counter Baby版

这个东西其实用了很久了,直到前段时间重建之后才发现这个东西竟然也更新了。并且增加了很多样式,为了拥抱这些样式直接重新构建了一版。原来的版本依赖有点问题,于是顺手给改了以下,提交了一份新的代码:https://gitee.com/obaby/moe-counter

主要问题在于sqllite依赖的问题,修改package.json 改成下面的版本就行了:

"dependencies": {
    "better-sqlite3": "^12.6.2",
    "compression": "^1.8.0",
    "dotenv": "^16.5.0",
    "express": "^4.21.2",
    "image-size": "^0.8.3",
    "mime-types": "^2.1.35",
    "mongoose": "^8.15.1",
    "pug": "^3.0.3",
    "zod": "^3.25.61"
  },

重新编译:

# 1. 配置镜像源
pnpm config set registry https://registry.npmmirror.com
export npm_config_disturl=https://npmmirror.com/dist
export npm_config_node_gyp_mirror=https://npmmirror.com/dist

# 2. 删除旧的依赖并重新安装(使用新版本)
rm -rf node_modules pnpm-lock.yaml

# 3. 重新安装依赖(会自动安装 better-sqlite3@12.6.2)
pnpm install

# 4. 如果安装后还是找不到 bindings,手动编译
cd node_modules/.pnpm/better-sqlite3@*/node_modules/better-sqlite3
npm run build-release
cd ~/Moe-Counter

 

顺手把里面应用的jsdeliver的链接也给换了,毕竟这个东西在国内访问问题还是蛮多的。

示例地址:https://m.h4ck.org.cn

自恋版计数器:

当然啦,为了做这些图也着实废了一番功夫:

最开始是上面的,生成一堆,但是分辨率不高。还有个问题那就是ai不识数,总是会少数字。

后来尝试单个生成,但是ai的数字分辨能力依然跟智障一样。生成了很多乱七八糟的数字:

至于怎么安装主题,那就更简单了,把图片按照0-9整成gif,弄个文件件放到theme下面,重启服务就ok啦。


UserAgent 系统版本号

浏览器的ua在某个时间点之后,操作系统的版本号就固定在了某个特定的值:

windows是Windows NT 10.0

mac是Intel Mac OS X 10_15_7

其实,这个现在已经变成了一个通用的作法,参考:https://bugs.webkit.org/show_bug.cgi?id=216593

这个东西以后大概率也不会更新了,为了让ua显示准确数值,之前修复了win11的识别问题,昨天有点时间,又处理了下osx的识别。但是在mac下目前safari无法获取系统版本信息,暂时没什么解决方案。

主要方法也简单:

1.在提交表单的时候判断操作系统,针对win 和mac 传递一个隐藏字段

////////////////////////////////////////////////////////////////////////////////////////////////
// macOS 主版本号与版本名称映射(15 Sequoia 2024-09-16,26 Tahoe 2025-09-15)
// By:obaby
// 2026-02-04
// https://oba.by
// https://zhongxiaojie.cn
////////////////////////////////////////////////////////////////////////////////////////////////

var macVersionNames = {
    10: "macOS 10",
    11: "Big Sur",
    12: "Monterey",
    13: "Ventura",
    14: "Sonoma",
    15: "Sequoia",
    26: "Tahoe"
};

function setOsVersionInput(elementId, value) {
    var el = document.getElementById(elementId);
    if (el !== null) el.value = value;
}

try {
    navigator.userAgentData.getHighEntropyValues(["platformVersion"])
    .then(ua => {
        var platform = navigator.userAgentData.platform;

        if (platform === "Windows") {
            var major = parseInt(ua.platformVersion.split('.')[0], 10);
            if (major >= 13) {
                setOsVersionInput("comment_windows_version", "win11");
                console.log("Windows 11 or later");
            } else if (major > 0) {
                setOsVersionInput("comment_windows_version", "win10");
                console.log("Windows 10");
            } else {
                console.log("Before Windows 10");
            }
        } else if (platform === "macOS" || platform === "Mac OS") {
            var parts = ua.platformVersion.split('.');
            var major = parseInt(parts[0], 10);
            var minor = parseInt(parts[1] || '0', 10);
            var versionLabel = major >= 11 ? (macVersionNames[major] || "macOS " + major) : "macOS 10." + minor;
            // setOsVersionInput("comment_mac_version", versionLabel);
            setOsVersionInput("comment_windows_version", "Mac OS X " + major + "_" + minor);
            console.log("Value: " + "Mac OS X " + major + "_" + minor);
            console.log("macOS:", versionLabel, "(" + ua.platformVersion + ")");
            // 15 及之后单独标记,便于统计/兼容判断
            if (major >= 15) {
                setOsVersionInput("comment_mac_15plus", "1");
                console.log("macOS 15+ (Sequoia or later):", versionLabel, "(" + ua.platformVersion + ")");
            } else {
                console.log("macOS:", versionLabel, "(" + ua.platformVersion + ")");
            }
        } else {
            console.log("Not Windows or macOS:", platform);
        }
    });
} catch (e) {
    console.log("OS version detection: Not Supported");
}

2.在wp接受到评论的时候,提前针对ua进行处理,针对传递的特殊的ua进行替换

// 钩子函数,在评论提交前调用
add_filter('pre_comment_user_agent', 'block_specific_user_agent');
 
function block_specific_user_agent($user_agent) {
    // 这里设置你想要阻止的用户代理字符串
    // $blocked_ua = 'BadBot/1.0';
 
    // // 如果用户代理匹配,返回一个空字符串来阻止评论
    // if (strpos($user_agent, $blocked_ua) !== false) {
    //     return '';
    // }
    if (isset($_POST['comment_windows_version']) && $user_agent) {
        $raw = trim($_POST['comment_windows_version']);
        // 白名单校验,防止 XSS/脏数据:只允许 'win11' 或 "Mac OS X 主_次" 格式
        if ($raw === 'win11') {
            $user_agent = str_replace('Windows NT 10.0', 'Windows NT 11.0', $user_agent);
        } elseif (preg_match('/^Mac OS X\s+(\d+)(?:[_\.](\d+))?$/i', $raw, $m) && strlen($raw) <= 128) {
            $major = (int)$m[1];
            if ($major > 10) {
                $allowed = true;
                $user_agent = str_replace('Intel Mac OS X 10_15_7', $raw, $user_agent);
            }
        }
    }

    // 否则,返回原始的用户代理字符串
    return $user_agent;
}

显示归属地的插件无需任何修改,会自动显示正确的版本。


You may also like

46 comments

  1. Level 1
    Google Chrome 144.0.0.0 Google Chrome 144.0.0.0 Mac OS X  26.2 Mac OS X 26.2 cn中国–湖北–武汉 电信 IPv4

    昨天就发现了,小图看不清楚,还在想这是什么,点开了才发现是计数器。

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

      嗯嗯,去掉了前面的一堆0,保留了一个,嘎嘎

  2. Level 3
    Google Chrome 144.0.0.0 Google Chrome 144.0.0.0 Windows 11 x64 Edition Windows 11 x64 Edition jp日本–东京都 FDC(NTT)机房 IPv4

    是不是色彩对比不够强烈?页面右边那里还是不能很容易分辨

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

      主要是让ai写个数字挺难的,弄了无数次选了这几个。

      1.  Level 1
        Google Chrome 144.0.0.0 Google Chrome 144.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition cn中国–香港 CZ88.NET IPv4

        可以让ai画举着白板的图片,然后PS自己添加字,毕竟自己加字不会错~

        1. 公主 Queen Queen 
          Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

          机智啊,不过现在的 ai 还有点比较智障,就是同一个东西,画几次可能效果都不一样,😂

  3. Level 3
    Google Chrome 109.0.0.0 Google Chrome 109.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition cn中国–上海–上海 腾讯云 IPv4

    计数器图片换成灵妹妹就更好了

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

      是的啊,不过分辨率低点

  4. Level 1
    Microsoft Edge 144.0.0.0 Microsoft Edge 144.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition cn中国–湖北省–黄冈市–英山县–中国联通–公众宽带 IPv6

    要把照片放到没一个地方
    ===
    这里有个错别字。 blum

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

      改啦。有错别字说明大概率就是人工写的。😄

  5. Level 1
    Safari 18.4 Safari 18.4 iPhone iOS 18.4 iPhone iOS 18.4 cn中国–陕西省–中国电信–CTNET网络 IPv6

    看到你这么爱折腾,我就想到我今晚准备写一个黄金监控的插件,最近一直在盯盘,看的眼疼,网上也有但大都不是我想要的效果,晚上自己手搓一个插件,哈哈哈哈,简单又很实用

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东–青岛 联通 IPv4

      想弄啥就弄啥,现在有ai帮忙会省很多事情,虽然ai有时候很智障。
      这几天把我之前写的代码给弄没了,我也是服了。 dash

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

      自己搭建的服务,好处就是可以随便折腾

  6. Level 3
    Google Chrome 144.0.0.0 Google Chrome 144.0.0.0 Windows 11 x64 Edition Windows 11 x64 Edition cn中国–上海–上海 电信/上海宏光经济信息发展中心优特交互网 IPv4

    昨天晚上我测试了,Safari 不好搞

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东–青岛 联通 IPv4

      safari没有提供相应的方法,现有的方法都是基于ua截图,ua本身就是错的,所以也就没啥意义了。

  7. Level 2
    Google Chrome 144.0.0.0 Google Chrome 144.0.0.0 Windows 11 x64 Edition Windows 11 x64 Edition us美国–加利福尼亚州–圣克拉拉–圣克拉拉 DigitalOcean IPv4

    确实爱美,先得美美的。

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

      我这也属于赛博精神病的一种, girl_pinkglassesf

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

      用的可灵 生成的,不过多数数字多少都有点问题,就挺坑的。
      ai对于生成的数字完全没概念,一个4尝试了无数次。

  8. Level 1
    Firefox 140.0 Firefox 140.0 GNU/Linux x64 GNU/Linux x64 cn中国–湖北–荆州 电信 IPv4

    什么时候换的站点?貌似我那个订阅函数订阅不到这个站点的feed

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

      原来的关掉啦,换这个吧亲。
      zhongxiaojie.cn

  9. Level 2
    Microsoft Edge 144.0.0.0 Microsoft Edge 144.0.0.0 Android 10 Android 10 cn中国–安徽省–中国电信–公众宽带 IPv6

    太有个性了,这个评论框的动图看上了,哈哈

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

      this one, 请查收
      https://zhongxiaojie.cn/img/dance.webp
      dance

      1. Level 2
        Microsoft Edge 144.0.0.0 Microsoft Edge 144.0.0.0 Android 10 Android 10 cn中国–安徽省–中国电信–公众宽带 IPv6

        哦吼,感谢感谢,那我可不客气了,Handsome主题评论图片那个填进去不生效,不知道是不是升了1.3.0的原因,晚上回去再折腾一下

        1. 公主 Queen Queen 
          Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

          自定义 css 样式,直接插代码,我就是这么干的:

          /* 评论窗口背景 */
          #comment {
          background-image: url(/img/dance.webp);
          background-repeat: no-repeat, no-repeat;
          background-position: bottom right, left center;
          background-size: 101px 168px, 100% 100%;
          }

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

      呃呃呃,超级丰满可以不提哒。😂

    2. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

      失败
      我这个评论是有什么关键词吗?我觉得挺正常啊。咋就失败了呢,昨天也是差不多的内容。

  10. Level 2
    Safari 26.2 Safari 26.2 Mac OS X  10.15.7 Mac OS X 10.15.7 cn中国–香港 LSHIY IPv4

    UserAgent 系统版本号好久没人更新了。我用的插件还是很久很久以前的。
    我来看看我的版本号准不准。。

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Android 10 Android 10 cn中国–山东省–青岛市–李沧区–中国联通–3GNET网络 IPv6

      感觉替换有问题?还是就是这个版本?

    1. 公主 Queen Queen 
      Google Chrome 142.0.0.0 Google Chrome 142.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition cn中国–山东省–青岛市–李沧区–中国联通–公众宽带 IPv6

      嗯嗯。还有的用,过段时间就会拍一些

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注