纯净得只剩下字的访问IP查询API
看到一个好玩的,就随手收藏一下,本API作用:获取用户真实IP,而获取用户IP常见的坑有两个,开发支付的时候也需要获取用户的真实IP:
- 获取的是内网的ip地址。在Nginx作为反向代理层的架构中,转发请求到PHP,Java等应用容器上。结果PHP获取的是Nginx代理服务器的ip,表现为一个内网的地址。PHP获取REMOTE_ADDR就是这样一个情况(内网地址)。
- 获取的是攻击者伪造的ip地址。攻击者可以随便伪造一个头部信息,随便填写一个ip放到头部发过来,php获取到HTTP_CLIENT_IP就是这样一个情况。伪造的ip,导致我们数据库存储是假的ip,无从真实去判断攻击者的来源。比如批量注册帐号的注册ip,登录的ip等。
操作如下:
将 PHP 代码保存为 index.php,然后上传到网站根目录下的 IP 文件夹(这个自己随机定义)
现在,浏览器访问 http://你的域名/ip/ 就可以看到你的IP了
PHP代码如下:
<?php
/**
* 纯净得只剩下字的访问IP查询API | 沈唁志
* https://qq52o.me/1814.html
*/
//文本输出编码
Header(‘content-type:text/html;Charset=utf-8‘);
//定义函数
function getIP()
{
static $realip;
//定义常量
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$realip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$realip = $_SERVER["REMOTE_ADDR"];
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")){
$realip = getenv("HTTP_X_FORWARDED_FOR");
} else if (getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
} else {
$realip = getenv("REMOTE_ADDR");
}
}
return $realip;
}
$bool = false;
if ($_GET[‘code‘]===‘js‘) {
echo "function syip(){document.write(\"";
echo "您的IP是:".getip();
echo "\");}";
$bool = true;
}
if ($_GET[‘code‘]===‘js-txt‘) {
echo "function syiptxt(){document.write(\"";
echo getip();
echo "\");}";
$bool = true;
}
if (!$bool){
echo getip();
}
?>
实例数据获取
- 请求地址:https://api.qq52o.me/ip
- 请求方式:GET
- 请求参数:接口:code 参数:1. js(返回【您的IP是:XXX】) 2.js-txt(仅返回IP)
使用方法
将下面这段代码放入页面内需要展示IP的位置即可
<script type="text/javascript" src="https://api.qq52o.me/ip/?code=js"></script>
<script>syip()</script>
该脚本实质为document.write的脚本。
演示一下
您的IP是:106.123.60.226
原文地址:https://www.cnblogs.com/westsoft/p/9249154.html
时间: 2024-10-13 16:19:09