写在本文的开始,本文需要一定的编程基础以及系统配置能力,如果没有的话那就先不要照着抄了,抄错了我可不管哈,嘻嘻。之所以要继续完善归属地显示是因为ipv6的地址目前显示的都是未知地址,对于有强迫症的来说,那当然是不能忍啦。
但是至于怎么显示ipv6地址却是个问题,目前纯真的ipv6只有收费版,其他的多数地址也是收费的。
1.需要一个能够显示ipv6归属地的数据库或者服务或者代码
如果只是显示大致区域不用那么麻烦,还是基于github的开源项目来实现就ok,例如这个:
https://github.com/EP-u-NW/ip_location_server
项目使用java开发,要求系统内存至少1.5g以上,因为数据库直接加载到了内存中,所以系统性能一般的话就不建议运行这个东西了。程序在启动的时候会自动下载ip地址数据库文件,由于github经常被墙,所以可以修改GitHubFileWatcher下载代码,改为如下所示:
public String getLastCommitFileUrl() { return "https://ghproxy.com/https://github.com/" + githubUser + "/" + githubRepo + "/raw/" + getLastCommitWithFile() + "/" + githubFile; }
下载的时候会自动使用https://ghproxy.com/代理进行加速,防止文件下载失败。其余的就比较简单了,直接mvn package编译即可。如果没有编译环境可以尝试我编译好的jar文件,测试环境ubuntu 22.04.
文件哈希:
名称: app.jar 大小: 23599782 字节 (22 MiB) CRC32: 0445EA2D CRC64: 739F5853EB5A5882 SHA256: e2f0244e70df50fee34c92771a867c098816c497b24e383f679c1dddb00cf6c0 SHA1: 7edc6e91c725899d8cfdf847537ac662dd4392ce BLAKE2sp: 498ca9a496b979d5a258ce2a5127f3fb0cf4e08e83ffca791d654e033c189a7a
下载链接:
启动服务之后建议使用nginx进行反代,我在测试的时候使用php的file_get_contents函数直接请求java服务会导致超时,这个就很神奇,不知道是神马原因。反代代码(10086为java服务端口):
location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://127.0.0.1:10086; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Accept-Encoding ""; }
如果你测试没有问题可以不需要ngxinx反代。
2.修改wp-useragent代码:
1)修改ip2c-text.php中的代码(可选):
if($ip2num < $ipNum) { if($Middle == $BeginNum) { fclose($fd); return 'unknow_address'; # 这里原来为 未知地址 改为unknow_address } $BeginNum = $Middle; }
2)修改插件根目录下的wp-useragent.php,源代码:
if ($wpua_show_text_icons === 'icons_and_text' ){ $wpua_useragent.= ' '. CID_get_flag_without_template($ip, true, false); $wpua_useragent.= convertip($ip); } if ($wpua_show_text_icons === 'text') { $wpua_useragent.= ' '. convertip($ip); }
修改为:
$city_name = convertip($ip); if ($city_name == 'unknow_address'){ $url = "http://127.0.0.1:10087/lookup?ip=".$ip; // return$url; $resp = file_get_contents($url); $resp_arr = explode(",",$resp); $city_name = end($resp_arr); } if ($wpua_show_text_icons === 'icons_and_text' ){ $wpua_useragent.= ' '. CID_get_flag_without_template($ip, true, false); //$wpua_useragent.= convertip($ip); $wpua_useragent.= $city_name; } if ($wpua_show_text_icons === 'text') { //$wpua_useragent.= ' '. convertip($ip); $wpua_useragent.= ' '. $city_name; }
http://127.0.0.1:10087/lookup?ip= 这个地址换为你自己的查询地址哦,不然肯定是不行的。
3.到这里就ok啦,看看效果吧:
目前暂时不准备往插件内集成,需要时没有可靠的ip转城市的服务,目前我在工控机上自己起了个服务,如果有合适的服务可以开放,姐姐可以找时间把这个功能集成到插件内。嗯,暂时就先酱紫吧。又折腾了一上午呢,正好可以等外卖,准备吃饭啦。
32 comments
我选择关闭ipv6访问哈哈哈,就怕不能显示ip属地
机智如你 嘻嘻
请问如何关闭?我忘记自己是如何打开的,感觉我不需要。
你是要关闭自己的ipv6还是网站的ipv6?网站的话,cdn后台的设置看一下。自己电脑的ipv6可以通过网络连接的属性,去掉tcp/ip协议6的✓关闭。
流量太多,都不知道咋用了
https://tc.pengqi.club/i/2023/08/13/64d8f2c5a4edc.png
这每天都有注册的啊,真不错。姐姐可以直接把你的文章搬过来不 不想自己写呢,我也想要这么多流量。
可以的哈
强迫症福音
是哒
php也很厉害呀!
嘘,告诉你个小秘密,不要告诉别人哈。姐姐是边搜索边写的~~
这样更是厉害了,语言之间应该是相通的,精通一门,其它的也是手到擒来,精通只是多练多写的问题。好吧,我一门都不精通,只是半吊子。懂一点点py、一点点R,两点html+css+js。
嗯嗯。不过作为一个实用主义者,一般不是逼急了,不去学习新的预言。哈哈哈。
从最开始写汇编、C到现在神马都写,姐姐也很绝望呢,能怎么办呢。
不过css+html+js是真不专业(完全不会),哈哈哈,看不见的东西还行,这种直接给用户看的就不专业了。主要是前端技术更新太快,完全不知道怎么跟。
看你连着发IP归属地显示的文章,给了我很大启发。因此我决定专门写一遍类似的文章。
写我为什么不显示归属地,嗯。
嗯嗯。我是一旦开始了,如果有些欠缺就觉得不是很满意,类似强迫症的那种。
小内存扛不住的啊!
现在我是跑在工控机上,内存基本快跑满了。所以没有提供公共接口服务。
可以打包上传商店吧
人家原版的的还在,我这是魔改版的。之前给wp的微博插件提交的代码到现在还没通过。所以不如直接下载安装压缩包快。改的东西太多了也不见得是原作者想要的。哈哈哈
算了算了,我插件已经够多了
没有插件的wp没有灵魂,哈哈哈
好小子,浏览你的网站,我对象老是说我又在看黄网了…
这~~不要诋毁人家好嘛~~
一点都不黄
太强了大佬
不能正确显示系统版本啊
自己改改 改好了跟我说一下 我也改改
我也试试看是否好用,博主新年快乐。
大佬姐好厉害!引用一下啦~
感激,在哪里下载呢
这个好厉害啊
太强了大佬,怎么下载呀
求安装包