纯净得只剩下字的访问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有个功能,虚拟桌 ...
随机推荐
- msdn
https://docs.microsoft.com/en-us/cpp/standard-library/basic-string-class?view=vs-2017
- PostThreadMessage
PostThreadMessage是一个Windows API函数.其功能是将一个队列消息放入(寄送)到指定线程的消息队列里,不等待线程处理消息就返回.
- &和&&的区别是什么
1)&是按位与操作符,a&b是把a和b都转换成二进制数后,然后再进行按位与的运算.&&是逻辑与运算符,a&&b就是当且仅当两个操作数都为true时,其结 ...
- @1-2初识Python爬虫
初识Python爬虫 Python爬虫(入门+进阶) DC学院 环境搭建: Python2与Python3的差异:python2与python3整体差异不大,大多是一些语法上的区别,考虑到py ...
- Python之路(第十二篇)程序解耦、模块介绍\导入\安装、包
一.程序解耦 解耦总的一句话来说,减少依赖,抽象业务和逻辑,让各个功能实现独立. 直观理解“解耦”,就是我可以替换某个模块,对原来系统的功能不造成影响.是两个东西原来互相影响,现在让他们独立发展:核心 ...
- DB2 sql报错后查证原因与解决问题的方法
1.对于执行中的报错,可以在db2命令行下运行命令 : db2=>? SQLxxx 查看对应的报错原因及解决方法. 2.错误SQL0206N SQLSTATE=42703 检测到一个未定义的列 ...
- 码云-中国的github
# 域名城 https://www.domain.cn/ # 码云 https://gitee.com
- 子数整数(P1151&NOIP水题测试(2017082301))
题目链接:子数整数 水题,不解释,自己看代码: #include<bits/stdc++.h> using namespace std; int main(){ int k; scanf( ...
- kbmMW均衡负载与容灾(3)(转载红鱼儿)
在kbmMW均衡负载与容灾(1)中,介绍了利用ClientTransport的OnReconnect事件,对联接的应用服务器的地址进行更换,做容灾处理.实际上,作者还给我们提供了另外一种机制,直接在C ...
- C# AOP框架入门(转)
出处:https://www.cnblogs.com/isaboy/p/Csharp_AOP_Log.html AOP面向切面编程(Aspect Oriented Programming),是通过预编 ...