backtheweb / laravel-geoip
Laravel MaxMind GeoIp
v0.0.1
2023-02-22 21:48 UTC
Requires
- php: ^8.0|^8.1|^8.2
- ext-curl: *
- ext-json: *
- geoip2/geoip2: ~2.0
- guzzlehttp/guzzle: ^7.5
Requires (Dev)
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.6
README
可用服务
- MaxMind,每查询费用0.0001美元
- Hacker Target,每天有限制请求免费
- Ipinfo.io,免费计划每月限制50k请求
安装
composer require backtheweb/laravel-geoip
php artisan vendor:publish --provider="Backtheweb\GeoIp\GeoIpServiceProvider" --tag="config"
在配置文件夹中编辑geoip.php
或设置环境变量。
return [
'default' => env('GEO_IP_SERVICE', 'maxmind'),
'services' => [
'maxmind' => [
'user' => env('GEO_IP_MAXMIND_USER_ID'),
'key' => env('GEO_IP_MAXMIND_LICENSE_KEY'),
'database' => env('GEO_IP_MAXMIND_DATABASE', 'country'),
],
'hackertarget' => [],
'ipinfoio' => [
'token' => env('GEO_IP_IPINFOIO_TOKEN'),
],
],
'test' => [
'ip' => env('GEO_IP_TEST_IP'),
'city' => env('GEO_IP_TEST_CITY'),
'country' => env('GEO_IP_TEST_COUNTRY'),
]
];
用法
use Backtheweb\GeoIp\Facades\GeoIp
$location = GeoIp::location('172.105.90.46');
$location->toArray();
$location->toArray()
的示例输出
array [
"ip" => "172.105.90.46"
"hostname" => null
"country" => "Germany"
"country_code" => "DE"
"state" => "Hesse"
"city" => "Frankfurt am Main"
"postal_code" => "60313"
"lat" => 50.1188
"lng" => 8.6843
"timezone" => "Europe/Berlin"
"provider" => "Linode"
]
可用响应属性
MaxMind** | Hacker Target | IpInfo.io | |
---|---|---|---|
ip | ✓ | ✓ | ✓ |
hostname | ✓ | ||
country | ✓ | ✓ | ✓ |
country_code | ✓ | ✓ | ✓ |
postal_code | ✓ | ✓ | ✓ |
lat | ✓ | ✓ | ✓ |
lng | ✓ | ✓ | ✓ |
timezone | ✓ | ✓ | |
provider | ✓ | ✓ |
** 使用洞察数据库
测试
创建包含以下内容的.env
文件
GEO_IP_TEST_IP=172.105.90.46
GEO_IP_TEST_CITY="Hesse"
GEO_IP_TEST_COUNTRY=Germany
并运行
composer test