sinanbekar / cf-restore-visitor-ip
Cloudflare 恢复原始访客 IP
dev-main
2021-06-07 18:25 UTC
Requires
- php: >=7.2
This package is auto-updated.
Last update: 2024-09-08 01:32:35 UTC
README
PHP 中 Cloudflare 恢复原始访客 IP
有 mod_cloudflare(mod_remoteip)、nginx_realip 包,为什么还要使用这个?
mod_cloudflare 多年没有更新。Cloudflare 的 IP 范围可能会随时间变化(当前范围不同)。mod_cloudflare 只适用于 Apache 服务器。如果您使用共享主机(且服务器管理员未配置 Cloudflare 规则),通常无法更改核心配置。
如果您可以访问服务器配置文件且有配置经验,请先检查 mod_remoteip(Apache)、ngx_http_realip_module(NGINX)。恢复日志 IP 地址可能更好。
Cloudflare ngx_http_realip_module 文章
注意事项和相关信息
无法检测客户端是否通过代理或 VPN 连接。基于 HTTP_CF_CONNECTING_IP,如果 Cloudflare 不活跃,可以防止欺骗。如果 Cloudflare 不活跃,则返回 REMOTE_ADDR。
警告:目前仅支持 IPv4
警告:由于上述原因不恢复日志 IP,因此不建议用于大型生产应用。
安装
Composer(推荐)
composer require sinanbekar/cf-restore-visitor-ip
使用
// Shorthand Usage: $ipAddress = \SinanBekar\Cloudflare\Restore::getIp();
设置 IP 范围(如果没有变化则无需使用,可以使用缩写)
$ipRanges = ['173.245.48.0/20','103.21.244.0/22','103.22.200.0/22'...]; $cf = \SinanBekar\Cloudflare\Operations::getInstance(); $cf->setCfIpRanges($ipRanges); $ipAddress = $cf->getClientIpAddress(); // Or \SinanBekar\Cloudflare\Restore::getIp();
其他方法
\SinanBekar\Cloudflare\Operations::getInstance()->getCfIpRanges(); // @return array \SinanBekar\Cloudflare\Operations::getInstance()->isCorrectCfHeaders(); // @return bool \SinanBekar\Cloudflare\Operations::getInstance()->isCloudflare(); // @return bool \SinanBekar\Cloudflare\Helpers::isIpInRange($ip, $range); // @return bool // Check function comments for more explanation
贡献
请随时贡献。