mileschou / twnicip
Twnic IP
Fund package maintenance!
www.paypal.me/mileschou
Installs: 1 577
Dependents: 0
Suggesters: 0
Security: 0
Stars: 13
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^8.0
- mileschou/ip: ^0.2.0
Requires (Dev)
- fakerphp/faker: ^1.23
- phpbench/phpbench: ^1.2
- phpunit/phpunit: ^9.6
- squizlabs/php_codesniffer: ^3.7
- symfony/console: ^6.0
- symfony/css-selector: ^6.0
- symfony/dom-crawler: ^6.0
README
檢查是否為台灣 IP 的小工具。
台灣 IP 沒想像中多,這個工具是直接把找到的資料轉成 PHP 原生變數型態的「資料庫」,再使用另一個 Facade 做搜尋。
原始 Database 是不能修改的,只能靠原 repo 更新,而 Facade 層則是可以動態標記 IP 是否為台灣 IP。
Version
- 0.x 版支援 PHP 7.1 ~ 8.0
- 1.x 版支援 PHP 8.0+
Installation
透過 Composer 即可安裝:
composer require mileschou/twnicip
Usage
這是主要驗證 IP 來源的 class,使用下面三個方法來確認是否是台灣 IP:
$twnicIp = new TwnicIp(); $twnicIp->isTaiwan('202.39.128.1'); // isTaiwanByIp() 的別名 $twnicIp->isTaiwanByIp('202.39.128.1'); $twnicIp->isTaiwanByLong(3391586305); // 轉成 IP 即 202.39.128.1
如果有新加入的 IP,但原始 repo 沒有更新時,可以自行新增:
$twnicIp->includeRange('127.0.0.1', '127.0.0.1'); $twnicIp->isTaiwan('127.0.0.1'); // return true
同理,如果某個區段的 IP 需要被排除時,也可以自行處理:
$twnicIp->excludeRange('127.0.0.1', '127.0.0.1'); $twnicIp->isTaiwan('127.0.0.1'); // return false
私有網域狹義來說,並不屬於台灣的 IP。而實務上,機器在台灣,某種程度也是算台灣的 IP 啦!
如果想把私有網域當作台灣 IP 的話,可以額外呼叫下面這個方法:
$twnicIp->includePrivateIp();
裡面其實只是呼叫 includeRange()
把私有 IP 的 range 加入。
References
- Twnic IP 列表 - 但此文件看起來已過時,因此改採用其他資料庫
- IP2LOCATION Lite - 免費且完整的資料庫,目前是使用這個
License
The MIT License (MIT). Please see License File for more information.