来自自恋狂的瞎折腾

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

 


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) <= 32) {
            $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

27 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中国–湖北–武汉 电信

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

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

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

    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中国 中国联通

      主要是让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中国–上海–上海 腾讯云

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

  4. Level 1
    Safari 18.4 Safari 18.4 iPhone iOS 18.4 iPhone iOS 18.4 cn中国 中国电信

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

    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中国–山东–青岛 联通

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

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

    昨天晚上我测试了,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中国–山东–青岛 联通

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

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

    确实爱美,先得美美的。

    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中国 中国联通

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

发表回复

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