【workbunny】IP歸屬地查詢插件

1.0.12
版本
2025-04-01
版本更新時(shí)間
2142
安裝
25
star
Webman plugin for IP attribution query.
簡(jiǎn)介
該組件可以通過(guò)IP獲取 大洲、國(guó)家、城市、網(wǎng)絡(luò)運(yùn)營(yíng)商等信息;
- 該插件自帶ip本地庫(kù),存放于
/database
; 最后更新時(shí)間:2024-07-05 (空了就時(shí)不時(shí)更新一下)- 注:由于db文件比較大,強(qiáng)烈建議外載(當(dāng)然本插件的意義就是簡(jiǎn)單化了geoip2/geoip2包,并附贈(zèng)了db文件);db文件下載方式如下:
- 至 https://www.maxmind.com/ 注冊(cè)賬號(hào)
- 進(jìn)入下載頁(yè)面下載對(duì)應(yīng)db文件
- 注:由于db文件比較大,強(qiáng)烈建議外載(當(dāng)然本插件的意義就是簡(jiǎn)單化了geoip2/geoip2包,并附贈(zèng)了db文件);db文件下載方式如下:
webman-ip-attribution
是基于geoip2
作為底層,依托mmdb數(shù)據(jù)庫(kù)
查詢ip歸屬地及asn信息- 本項(xiàng)目基于geoip2/geoip2,感謝MaxMind 工作組的開源
安裝
composer require workbunny/webman-ip-attribution
使用
配置
1. 在Webman中使用app.php
注:配置可選填
return [
'enable' => true,
'default' => '--', // 缺省展示值
'language' => ['zh-CN'], // 語(yǔ)言
'db-country' => null, // 自定義的country庫(kù)絕對(duì)地址
'db-city' => null, // 自定義的city庫(kù)絕對(duì)地址
'db-asn' => null, // 自定義的asn庫(kù)絕對(duì)地址
];
2. 在php-fpm中使用
注:配置可選填
use Workbunny\WebmanIpAttribution\Location;
$location = new Location([
'default' => '--', // 缺省展示值
'language' => ['zh-CN'], // 語(yǔ)言
'db-country' => null, // 自定義的country庫(kù)絕對(duì)地址
'db-city' => null, // 自定義的city庫(kù)絕對(duì)地址
'db-asn' => null, // 自定義的asn庫(kù)絕對(duì)地址
]);
快速獲取
use Workbunny\WebmanIpAttribution\Location;
use Workbunny\WebmanIpAttribution\Exceptions\IpAttributionException
try {
$location = new Location();
var_dump($location->getLocation('8.8.8.8')); // ipv4
var_dump($location->getLocation('::0808:0808')); // ipv6
// [
// 'country' => 'United States',
// 'city' => '--',
// 'asn' => 'GOOGLE',
// 'continent' => 'North America',
// 'timezone' => 'America/Chicago',
// ]
}catch (IpAttributionException $exception){
}
使用city庫(kù)查詢
注:City庫(kù)包含了 大洲、國(guó)家、城市,但不包含網(wǎng)絡(luò)運(yùn)營(yíng)商等相關(guān)信息
use Workbunny\WebmanIpAttribution\Location;
use Workbunny\WebmanIpAttribution\Exceptions\IpAttributionException
try {
$location = new Location();
var_dump($location->city('8.8.8.8')); // ipv4
var_dump($location->city('::0808:0808')); // ipv6
// 返回 GeoIp2\Model\City 對(duì)象
}catch (IpAttributionException $exception){
}
使用country庫(kù)查詢
注:Country庫(kù)不包含城市及網(wǎng)絡(luò)運(yùn)營(yíng)商等信息,通常使用City庫(kù)即可,Country存在的意義在于較于City更輕
use Workbunny\WebmanIpAttribution\Location;
use Workbunny\WebmanIpAttribution\Exceptions\IpAttributionException
try {
$location = new Location();
var_dump($location->country('8.8.8.8')); // ipv4
var_dump($location->country('::0808:0808')); // ipv6
// 返回 GeoIp2\Model\Country 對(duì)象
}catch (IpAttributionException $exception){
}
使用asn庫(kù)查詢
注:Asn庫(kù)僅包含網(wǎng)絡(luò)運(yùn)營(yíng)商等相關(guān)信息
use Workbunny\WebmanIpAttribution\Location;
use Workbunny\WebmanIpAttribution\Exceptions\IpAttributionException
try {
$location = new Location();
var_dump($location->asn('8.8.8.8')); // ipv4
var_dump($location->asn('::0808:0808')); // ipv6
// 返回 GeoIp2\Model\Asn 對(duì)象
}catch (IpAttributionException $exception){
}
使用原始Reader操作
注:原始Reader可以直接使用 geoip2/geoip2 提供的方法操作相關(guān)的庫(kù)
use Workbunny\WebmanIpAttribution\Location;
$location = new Location();
var_dump($location->createReader(Location::DB_CITY)); // City庫(kù)
// 返回連接City庫(kù)的 GeoIp2\Database\Reader 對(duì)象
var_dump($location->createReader(Location::DB_ASN)); // ASN庫(kù)
// 返回連接ASN庫(kù)的 GeoIp2\Database\Reader 對(duì)象
var_dump($location->createReader(Location::DB_ASN)); // Country庫(kù)
// 返回連接Country庫(kù)的 GeoIp2\Database\Reader 對(duì)象
更多用法和示例參照 geoip2/geoip2;