海阔冷峰工作室

Good Luck To You! —— 用心服务,共创价值! 冷血飞燕、山高人为峰

访问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
<?php
  /**
  * 纯净得只剩下字的访问IP查询API
  */
    //文本输出编码
    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();
    }?>


实例数据获取
  • 请求地址:http://www.cns520.com/ip

  • 请求方式:GET

  • 请求参数:接口:code 参数:1. js(返回【您的 IP 是:XXX】)  2.js-txt(仅返回 IP)

使用方法
将下面这段代码放入页面内需要展示 IP 的位置即可
PHP
<script type="text/javascript" src="http://www.cns520.com/ip/?code=js"></script><script>syip()</script>

该脚本实质为 document.write 的脚本。



发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«   2019年8月   »
1234
567891011
12131415161718
19202122232425
262728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
    友情链接

      Powered By Z-BlogPHP 1.5.2 Zero

      冷血飞燕 Copyright Your WebSite