安利一款Hansome主题专用的UserAgent插件

前两天Airs_Lau同学说来一篇关于评论UA的文章,本来一开始就打算咕咕咕的٩(ˊᗜˋ*)و,还不是因为我技术菜人又懒(我不要面子的嘛)。
刚好今天闲下来,就把自己魔改的UserAgent插件打包了下,代码水平有限,望多多指正。

食用指南

  1. 操作前请做好相应备份工作
  2. 此插件只适用于Handsome主题,未对其它主题优化!!!
  3. 请先将插件置于Typechoplugins目录下,且插件目录名应为UserAgent,注意大小写,否则将无法正常食用!!!
  4. 修改Handsome主题,component目录下的comments.php代码文件
    Handsome:9.2.1 版本大概第 82 行左右,
<span class="comment-author vcard">
    <b class="fn"><?php echo $author; ?></b>

添加代码<?php UserAgent_Plugin::get_useragent($comments->agent,$comments->ip); ?> ,修改后代码如下:

<span class="comment-author vcard">
    <b class="fn"><?php echo $author; ?></b><?php UserAgent_Plugin::get_useragent($comments->agent,$comments->ip); ?>

获取真实IP

Typecho开启CDN后,可能无法获取访客真实IP,只能取得CDN节点IP,为此可以在Typecho博客网站的根目录的config.inc.php插入下面的代码:

//** 防止CDN造成无法获取客户真实IP地址 */
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) 
{
    $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
    $_SERVER['REMOTE_ADDR'] = $list[0];
}

更新日志

2025-07-23

  • 说不准新增了部分BUG😂呢,记得反馈哦!
  • 修复 version_compare 空值问题
  • 更新 纯真数据库 至2025年7月16日IP数据
  • 【暂未测试🫣】
历史更新日志

2025-06-26

  • 删除 icon-search 图标
  • 更新 纯真数据库 至2025年6月18日IP数据

2024-06-07

  • 说不准新增了部分BUG😂呢,记得反馈哦!
  • 修复 icon-search 图标与主题自带图标冲突
  • 【暂未测试。Handsome 主题近 10 月未更新,预计后期将不再维护本插件😔】

2023-11-05

  • 修复 "启用 Windows 11 检测" 无法选中
  • 更新 纯真数据库 至2023年10月25日IP数据
  • 已测试 Handsome 9.2.1 可以放心食用

2023-4-15

  • 新增 Windows 11 系统识别(检测方式貌似很鸡肋,不支持非 HTTPS 站点)
  • 已测试 Handsome 9.0.2 可以放心食用

2023-4-12

  • 新增 内置离线IP库 ipv6wry,支持IPV6
  • 修复 Mac OS X 解析错误(感谢 吴蛋蛋
  • 优化 UA信息悬停效果
  • 已测试 Handsome 9.0.2 可以放心食用

2023-2-28

  • 新增 内置离线IP库 纯真数据库 ,仅支持IPV4
  • 新增 第三方API vore.top、mir6.com ,稳定性未知
  • 新增 第三方API功能可禁用
  • 修复 IPV6 查询时报错
  • 已测试 Handsome 9.0.2 可以放心食用

2023-2-26

  • 更新部分浏览器
  • 更新 Instant.page5.1.1 版本
  • 新增 IPinfo.io API,有请求速率限制
  • 优化 UA信息悬停效果

2020-3-5

  • 移除不稳定的淘宝API(IP)
  • 离线IP库查询位置信息去重,之前会出现 中国 天津 天津 (感谢 任宝硕 建议)
  • 更新离线IP库为 ipipfree.ipdb ,理论上兼容IPIP官方 全球 IPv4 地级市精度离线库(China:免费版,每周高级版,每日标准版,每日高级版,每日专业版,每日旗舰版)[然而,我也只用得起免费版,所以就不支持IPV6咯]

     此次更新离线IP库,部分文件来源GITHUB,为方便安装使用插件,已使用 composer 生成且引入 autoload.php 文件。
    (其实关于 composer,你也可以直接在Typecho根目录生成并引入,只是为了方便萌新们使用,才移入到UserAgent插件目录下。)

  • 此次更新仅是维护,也不是很建议非要更新,稳定使用才是最好的。

2020-1-18

  • 更新 Instant.page3.0.0 版本
  • 更新 微软 EDGE 移动端浏览器
  • 已测试 Handsome 6.0.0 可以放心食用,有 CSS 样式错误的,请先确认是否全新主题安装此插件,且无魔改痕迹。我看过很多人反馈的,都是之前用过别人的插件,样式修改后遗留的 CSS 代码冲突,切记!

我也在这里提前祝大家新年快乐、心想事成、万事如意、身体健康、财源广进、金玉满堂……

Tips:切记先禁用插件后操作,更新完毕请刷新浏览器缓存

文件下载

## Hash校验
Ver: 1.2.0
MD5: 93C6F07195F2D9BA3033A6803E253F0C
SHA1: DBEBF68BB9E1D1467476BDB86B5B96F40B028C62
CRC32: 4BE8BA89

效果预览

相关推荐

Typecho折腾小笔记

一、使Typecho支持emoji表情 !> Typecho默认不支持emoji表情,其实不是程序的锅,而是由于编码的问题,只需要将默 ...

321 条评论

  1. 大大,我的sosadblog.com备案通过了,但是现在图标的颜色显示还是有问题。

  2. 佬,我这个图标显示有问题啊,https://youke1.picui.cn/s1/2025/10/30/690331c22052e.png

  3. php8.2 有警告
    Deprecated: version_compare(): Passing null to parameter #1 ($version1) of type string is deprecated in /*****/*******/blog/usr/plugins/UserAgent/Plugin.php on line 186

    问题出在 handleInit 方法里对 version_compare 函数的调用上。当 $_SERVER['HTTP_SEC_CH_UA_PLATFORM_VERSION'] 为空时,就会出现这个弃用警告。

    下面是修复这个问题的具体步骤:
    保留原生 version_compare 函数:继续使用 PHP 内置的 version_compare,但增加了前置检查。
    添加版本号格式验证:使用正则表达式 ^\d+\.\d+\.\d+$ 确保传入的版本号是 X.Y.Z 格式,防止无效的版本字符串导致的问题。
    空值检查:通过 !empty() 确保版本号不为空,避免 version_compare 接收 null 参数。

    这样修改之后,既能解决 version_compare 接收 null 参数的问题,又能避免调用 Typecho 中不存在的方法。

    • @魂笙 PHP 新版本已经对泛类型有了限制,可以临时修改第 184、185null'0.0.0'

  4. 开启显示IP位置会卡住,UA信息图标显示好像也不太正常
    ![](https://tc2.zeruns.tech/Pic/2024/11/a54f1a1f849fc88680dee46ac69f1574.png)

    • @zeruns 你应该是使用了自定义css,看你页面有以下内容
      /*评论UA信息显示图标*/
      .ua-icon **********

    • @zeruns 看起来是你使用了多种UA插件或者代码,样式代码相互冲突了,IP 建议使用离线 IP 库,如若使用在线 API,则会拖延加载速度

      • @松鼠大大 确实是自定义css的问题,注释掉就行了,IP不管选离线还是在线都会卡住(把另一个IP位置插件禁用掉也是这样)
        ![](https://tc3.zeruns.tech/Pic/2024/11/202411212208891_5dea59e397a1ef124ad99b59b5aff01d.png)

        谢谢大佬的回复!

        • @zeruns 有详细的错误日志嘛?我需要分析下,也可能是 PHP 版本又或者代码兼容问题?
          直接回复此邮件或者将错误日志添加为附件回复即可。

          • @松鼠大大 找到问题了,把另一个IP位置插件插入的代码删掉就行,不知道这个代码为什么会跟你的产生冲突:
            ```
            IP位置:ip); ?>
            ```

          • @zeruns 看起来是语法错误,?>重复了,以至于提前结束了 PHP 脚本,既然找到问题所在就好。

  5. Ray

    主页搜索图标会出现个小框,是什么原因

    • @Ray iconfontua icon-search 这个图标与主题的CSS冲突,可以先自行替换成其它图标

    • @Ray 已经临时更新 UA 图标冲突问题,但暂未做测试,或许有新的 BUG,还望见谅。🐱

  6. 朱茱

    找到问题了
    插件 143 行引用的css冲突了

    • @朱茱 好的,看起来是iconfontua icon-search这个图标与主题的CSS冲突了,我后续修复的时候改下名称叭

    • @朱茱 已经临时更新 UA 图标冲突问题,但暂未做测试,或许有新的 BUG,还望见谅。🐱

    • 朱茱

      @朱茱 同样的,在handsome-10.1.0和UserAgent-1.1.8下,font_1166601_p9jgfmutfin.css中152到154的代码与按钮冲突了
      ![](https://s21.ax1x.com/2025/06/25/pVe4cBn.png)

      • @朱茱 查到问题了,之前复制并添加了图标icon-ua-search,但并没有删除旧图标icon-search,导致和 handsome 自带的样式文件冲突,可以修改插件文件,将//at.alicdn.com/t/c/font_1166601_p9jgfmutfin.css 替换为 //at.alicdn.com/t/c/font_1166601_skstskq3igi.css。或者等后续版本修复叭🫣

  7. 朱茱

    博主可以来我的服务器上试试看😃

  8. 朱茱

    我在服务器试了一下,typecho1.2.1,handsome 9.2.1 在没有任何修改的情况下会出现搜索按钮异常的问题
    https://picst.sunbangyan.cn/2024/01/11/f9ab8dfab94f686a932a0ad1011544b3.jpeg

  9. 现在不是添加不添加代码的问题,是只要一启用插件就有冲突,部分css样式,我无论添不添加那句显示代码

  10. 代码添加位置没问题,可以正常使用,具体截图等我晚上回去复现,css冲突有可能,但不知道如何检查,另外就是主题未进行任何美化,以及魔改,开启插件就会有冲突,如果方便可以加我一下qq沟通,2277680934

    • @Southerly handsome 9.2.1 版本应该是添加在 /usr/themes/handsome/component/comments.php:101 处,示例如下:https://pic1.miui.uk/images/2023/11/29/b82ceea5427e904fe2f94658290d940b.png

  11. 有个问题,handsome主题中,启用插件后,会导致我的搜索框左边多个错误符号,感觉css冲突了,但我源码基本没有魔改什么,这是什么原因呢

    • @Southerly 代码添加的位置是否正确呢?有具体的错误截图吗?有检查过css冲突嘛?

  12. 气魄的男人

    博主,插件在手机上显示正常,但在PC上显示是这样的 https://bit.ly/3WpZrkY,请问这正常吗?

  13. 大佬,这个9.0.2的插入代码地址是不是有点错误啊,为什么我在82行插入以后我的评论就没有正常显示了

  14. 小鬼宝

    大佬,我的手机苹果13pm 16.4.1版本评论那个ua颜色不会变怎么办https://www.xiaoguibao.cn/archives/79.html

    • @小鬼宝 我这边打不开您的站点😂

    • @小鬼宝 目前,随机颜色值,有相同useragent信息的用户,颜色是一样的,如果您这边有合适的建议或者想法,可以提出来哦,我后期看看如何修改优化。

  15. 反馈一个问题,系统版本识别上,电脑是MacOS Ventura 13.2.1,实际显示为Mac OS X Lion 10.15.7,这个要怎么更新?

    • @吴蛋蛋 是否可以提供下浏览器UA信息呢?https://tool.chinaz.com/useragent/浏览器访问后可以获取当前UA信息

      • @松鼠大大 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.34

        • @吴蛋蛋 识别Lion的BUG是代码写错了。具体 Mac OS 系统版本号,暂时无法识别,暂时只支持 Mac OS X 10_15_7 解析为 Mac OS X 10.15.7
          插件已更新啦,说不准还有其它未知BUG😂

          • @松鼠大大 感谢大大,确实修复了其中的一个问题:Mac OS 的版本10.15.7对应的名称应该是Catalina,之前识别成Lion。

            但是还有一个问题不知道是否可以优化:我的系统版本是13.2.1,根据chinaz的UA信息,识别成了10.15.7,您的插件识别也是10.15.7,都跟我实际的系统版本不一致。

          • @吴蛋蛋 嗯,这个问题目前还无法解决,UA信息就这些内容,我看后期能否找找版本对应关系,不然也无法判断系统代号

          • @松鼠大大 另外还有一个问题,无法识别Windows 11,都是识别成Windows 10

          • @吴蛋蛋 这个问题也有人反馈过,目前win10win11 UA信息暂时没有区别。仅能通过sec-ch-ua-platform-version区分,而且仅在支持https的网站下有效。看后期能否用开源的UAParser.js做个解析

          • @吴蛋蛋 已支持win11系统识别,不过这个功能不支持非HTTPS站点。目前没有比较合适的检测方法,暂时用用吧。

          • @松鼠大大 能识别Windows 11 已经很棒了,感谢大大,文章中的版本号要更新为1.1.6了~!

  16. 一直在用,真的是香啊,期待大佬的更新,php8目前不太兼容了

    • @韩涛博客 您好,我在宝塔php8.2上使用1.1.1版本暂时木有发现报错。有详细的错误信息吗?我这边需要它来帮助排除故障

  17. 祝哥哥

    大佬,不知道此款插件还会更新吗,handsome 版本: 9.0.2的情况下,插入
    agent,$comments->ip); ?>
    后文章页面会变成2栏的模式
    我看别人老版本文章页面是正常显示3栏模式,大佬如果有空看可以抽空修复下吗

    • @祝哥哥 很抱歉啦,近期可能没有时间维护插件,或许以后有空闲时间会继续更新。

      • 祝哥哥

        @松鼠大大 好的呢,大佬有空的话等大佬修复😄

    • @祝哥哥 我在handsome版本: 9.0.2上,测试 UserAgent 插件1.1.1没有出现问题,是插入的代码放错位置了嘛?有详细的错误日志吗?

      • 祝哥哥

        @松鼠大大 感谢大佬测试,在100行位置加入
        ?>agent,$comments->ip); ?>
        这个位置插入的

        文章页面评论附近会出现一个 u工div>的代码
        不知道大佬这段代码是插入在了哪个位置

        • @祝哥哥 插入在101行试试呢?

          • 祝哥哥

            @松鼠大大 刚试了下放在101行后面还是出现这个情况,不知道是不是因为我之前改了下页面布局的宽度

          • @祝哥哥 试着把handsome主题文件夹重命名,然后上传全新的9.0.2版本试试看呢?

          • 祝哥哥

            @松鼠大大 感谢大佬帮分析,刚试了重新上传启动主题插入代码还是会有这个情况,发现一个问题,就是加了那个段代码后,本地ip访问显示是正常的,新的和之前的主题都是这个显示问题,用外网域名访问就出现,出现 u工div>的代码,我用本地ip访问就显示没有问题,不知道大佬知道这个是什么原因吗

          • @祝哥哥 排查下外网访问的链路上是否有程序修改或者重写了网页呢?

          • @祝哥哥 看了下你的网站源码。<div class="random_user_name shake-constant">ߎ⼯div&gt;
            </div>
            ,此处应该是<div class="random_user_name shake-constant">🎲</div>,应该是你的源码有点点问题,无法显示emoji

          • 祝哥哥

            @松鼠大大 我也感觉很迷,就是本地ip访问文章页面是正常显示的,我刚刚下载用新的主题插入代码也是反代后就会这样,本地一点问题都没有😄,像这样的问下大佬一般怎么解决比较好呢,是主题的问题吗

          • @祝哥哥 我上一条评论更新了,你可以看看,应该是emoji字符的问题

          • @祝哥哥 这个骰子🎲是随机用户名的,应该是修改源码,emoji保存时出错了

          • 祝哥哥

            @松鼠大大 多谢大佬找到原因,确实是变成了这个无法显示emoji,大佬这种问题请问有什么办法可以解决吗

          • 祝哥哥

            @松鼠大大 感谢大佬解决,我换了一个中文现在正常了。

          • @祝哥哥 好的

  18. win11检测成win10了

    • @小鬼宝 嗯,因为 win11useragent 关键字还是和 win10 一样,都是(Windows NT 10.0; Win64; x64)
      只有通过 sec-ch-ua-platform-version 才能区分 win11win10

      • @松鼠大大 有办法解决吗

        • @小鬼宝 可以解决,typechogetAgent() 函数只读取 $_SERVER['HTTP_USER_AGENT']
          可自行写代码获取系统型号,并将其存入数据库。后期调用即可。

  19. 请问获取到ipv6地址然后解析不出来怎么搞

  20. 在吗?
    emm…… 可不可以添加一个仅IP地址无浏览器ua的选项呢(๑❛ᴗ❛๑)

回复 丑源 取消回复

您的电子邮件地址不会被公开,必填项已用*标注。