纯净得只剩下字的访问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
纯净得只剩下字的访问IP查询API的更多相关文章
- 29、Tomcat只允许指定域名访问,禁用IP地址访问,防止恶意解析
		
1.1.测试环境说明: Linux版本:7.6 IP地址:10.11.220.123/24 Tomcat版本:tomcat-8.5.37(端口号为8080) Jdk版本:1.8.0_202 1.2.配 ...
 - 高频访问IP弹验证码架构图 让被误伤的用户能及时自行解封的策略
		
高频访问IP限制 --Openresty(nginx + lua) [反爬虫之旅] - Silbert Monaphia - CSDN博客 https://blog.csdn.net/qq_29245 ...
 - Linux(7)- Nginx.conf主配置文件、Nginx虚拟主机/访问日志/限制访问IP/错误页面优化、Nginx反向代理、Nginx负载均衡
		
一.Nginx.conf主配置文件 Nginx主配置文件conf/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的.一般,每个区块以一对大括号{}来表示开始与结束. 核心模 ...
 - Android根据内网外网连接情况配置服务器访问IP
		
新项目的app,可通过内网和外网的服务器ip进行请求访问,但是客户提供了专业终端,终端在wifi情况下走外网内网都可以,但关闭wifi则只能走4G专网,也就是只能走内网. 可前往我的小站查看:Andr ...
 - centos服务器如何监控访问ip,并将非法ip通过防火墙禁用
		
centos服务器如何监控访问ip,并将非法ip通过防火墙禁用 上周给朋友帮忙,上架了一款小游戏(年年有鱼),项目刚一上线,就遇到了ddos攻击,阿里云连续给出了6次ddos预警提示,服务器一度处于黑 ...
 - java解答:有17个人围成一圈(编号0~16),从第0号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去,直到最后只剩下一个人为止,问此人原来的位置是多少号?
		
package ttt; import java.util.HashMap; import java.util.Map.Entry; /** * 有17个人围成一圈(编号0~16),从第0号的人开始从 ...
 - Linux查看访问IP
		
Linux查看访问IP https://blog.csdn.net/tojohnonly/article/details/82772323
 - nginx只允许移动端访问( 判断拦截pc浏览器访问)
		
set $mobile_request '0'; if ($http_user_agent ~* (Android|webOS|iPhone|iPod|BlackBerry)) { set $mobi ...
 - win10虚拟桌面;一不小心按错了突然只剩下桌面,启动的程序都没了
		
先说如何关闭虚拟桌面:ctrl+win+F4(万一你还没看到怎么关闭虚拟桌面,就创建并调整到虚拟桌面,会很懵的,因为你启动的所有程序全部都突然消失了,只剩下开机的桌面了): win10有个功能,虚拟桌 ...
 
随机推荐
- vs2010打开qt的.pro文件时错误解决办法
			
注意:qt creator工程中一般都已经存在*.pro文件,里面存放着一些自己配置的包含头文件和lib库文的信息,最好不要再重新使用qmake -project生成,若重新生成,则可能要重新增加配置 ...
 - 用户态处理arp、ndisc neighbour solication 报文
			
问题背景: 想要协议栈给不是接口ip的报文,ipv4回复arp request,ipv6回复 ndisc solication. #include <stdio.h> //调用该函数成为一 ...
 - EL(表达式语言)
			
EL表达式的主要作用 1)获取数据.EL使得获取JavaBean中的数据变得非常简单,也可以替换JSP页面中的脚本元素,从各种类型的web域中获取数据. 2)执行运算.利用EL表达式可以在JSP页面中 ...
 - Netty 源码 ChannelHandler(四)编解码技术
			
Netty 源码 ChannelHandler(四)编解码技术 Netty 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) 一.拆包与粘 ...
 - 新手必看,史上最全的iOS开发教程集锦,没有之一!
			
最近大火的iPhone XS Max和iPhone XS,不知道有没有同学已经下手了呢?一万三的价位确实让很多人望而却步啊.据说为了赢得中国的用户,专门出了双卡双待的,可想而知中国市场这块“肥肉”人人 ...
 - pom.xml如何引入项目jar包
			
<dependency> <groupId>com.jacob</groupId> <artifactId>jacob</artifactId&g ...
 - LD_LIBRARY_PATH
			
LD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径. 在linux下可以用export命令来设置这个值,比如 在linux ...
 - Time.fixedDeltaTime和Time.DeltaTime
			
在Update中使用 Time.deltaTime,获取到的是这一帧的时间,如果游戏卡,帧率低,那这个值就大.如果游戏流畅,帧率高,这个值就小,Time.deltaTime = 1.0f / 帧率 在 ...
 - ubuntu的应用中心打不开、闪退
			
原因没有细究,但问题已经解决简单粗暴: 1.更新列表 apt-get update apt-get dist-upgrade 2.重新安装应用中心 apt-get install --reinsta ...
 - centos7 安装网卡
			
1.虚拟机测试,先开启命令行 su systemctl set-default multi-user.target reboot 2.编辑网卡 虚拟机网络设置成桥接模式 vi /etc/sysconf ...