关于获取客户端IP问题
//相关代码
1、HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
2、HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]
3、HttpContext.Current.Request.UserHostAddress
1、其中2和3的效果相同,区别可google。1表示可以获取到使用代理的IP地址,当然只是在客户端使用透明代理的时候才能获取到原始的IP地址。对于,使用了高匿的代理,服务器端是无法获取到原始IP的,因此这给爬虫工程师们留了一条后路。
2、IIS日志中也会记录,访问的客户端的IP地址,他记录的IP地址和2、3记录的IP地址是相同的,如果使用的是代理记录的是代理IP地址。
3、项目接触到的经验:一些学校内部的服务器,如果是学生使用自己的校园网这时候获取到的客户端IP有可能只是学生的内网地址而不是外网出口地址,但是如果是在外网访问学校的服务器这时候获取到的客户端IP是正常的就是客户端外网地址。学校内部也是多个用户共用一个外网地址。
4、IP私有地址段

参考文章:
https://www.cnblogs.com/bdqlaccp/p/3698589.html
https://zh.wikipedia.org/wiki/%E4%B8%93%E7%94%A8%E7%BD%91%E7%BB%9C
关于获取客户端IP问题的更多相关文章
- PHP获取客户端IP
/** * 获取客户端IP */ function getClientIp() { $ip = 'unknown'; $unknown = 'unknown'; if (isset($_SERVER[ ...
- C#服务器获取客户端IP地址以及归属地探秘
背景:博主本是一位Windows桌面应用程序开发工程师,对网络通信一知半解.一日老婆逛完某宝,问:"为什么他们知道我的地址呢,他们是怎么获取我的地址的呢?" 顺着这个问题我们的探秘 ...
- 在Thinkphp3.2.3框架下实现自动获取客户端IP地址的get_client_ip()函数
在Thinkphp框架下使用get_client_ip()函数获取客户端IP地址十分方便: 一行代码便可以实现:$ip = get_client_ip(); 但当我们测试时会遇到后台获取的IP地址显示 ...
- JAVA获取客户端IP地址
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- nodejs获取客户端IP Address
在网上看见很多问node.js如何获取客户端IP,所以记录下来,以供大家参考. function getClientIp(req) { return req.headers['x-forwarded- ...
- WebService及WCF获取客户端IP,端口
wcf获取客户端IP,端口 var context = OperationContext.Current; var properties = context.IncomingMessageProper ...
- nginx lua获取客户端ip
--获取客户端ip function get_client_ip() local headers=ngx.req.get_headers() local ip=headers["X-REAL ...
- asp.net获取客户端IP方法(转载)
最近web获取客户端ip,看到下面这篇文章,转载过来,一起分享(转载地址:http://www.cnblogs.com/yejun/archive/2008/02/26/1082485.html) 通 ...
- (转)【ASP.NET开发】获取客户端IP地址 via C#
[ASP.NET开发]获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己 ...
- php获取客户端ip地址
本文介绍一个,php获取客户端的IP地址的实例代码,有需要的朋友参考下吧. 获取客户端IP地址的代码,如下: 复制代码代码示例: <?php//取得客户端IP的函数function get_cl ...
随机推荐
- 分布式监控系统之Zabbix主动、被动及web监控
前文我们了解了zabbix的网络发现功能,以及结合action实现自动发现主机并将主机添加到zabbix hosts中,链接指定模板进行监控:回顾请参考https://www.cnblogs.com/ ...
- 应聘阿里,字节跳动美团90%会问到的JVM面试题! 史上最全系列!
Java 内存分配 • 寄存器:程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码.• 静态域:static 定义的静态成员.• 常量池:编译时被确定并保存在 .class 文件中的(f ...
- 苹果电脑中怎么快速卸载Flash Player和浏览器扩展应用插件
Adobe Flash Player是一款轻量级浏览器插件,帮助你在网页浏览过程中享受更广泛的多媒体体验.是一种拓展,与Java一样,成为安全和隐私问题的重要来源.这些都需要手动删除的Flash是令人 ...
- 面试题59 - II. 队列的最大值
请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value.push_back 和 pop_front 的时间复杂度都是O(1). 若队列为空,pop_front 和 ...
- iOS 索引列 使用详解
做苹果开发的朋友在地区列表可能会遇到在页面的右侧有一列类似与导航的索引列,这次有机会遇到了,细细研究了一下,原来没有想象中的高达上,只需要简单的几步就能做出自己的索引列.,关注我的博客的朋友可能会对这 ...
- Contest 982
A 直接模拟即可,为了方便边界判断建议用 !=. 时间复杂度 \(O\left(n\right)\). B \(w\) 排序来处理内向者,坐人后丢进大根堆来处理外向者. 时间复杂度 \(O\left( ...
- Java基础教程——多线程:创建线程
多线程 进程 每一个应用程序在运行时,都会产生至少一个进程(process). 进程是操作系统进行"资源分配和调度"的独立单位. Windows系统的"任务管理器&quo ...
- Java基础教程——Math类
Math Java这种级别的编程语言怎么可能没有数学相关的操作呢? java.lang.Math类提供了基本数学运算的方法. 该类是final的,说明不能被继承. 该类的构造方法是私有的(privat ...
- 为什么不用UUID做主键?
不易于存储:UUID太长,16字节128位,通常以36长度的字符串表示,很多场景不适用. 信息不安全:基于MAC地址生成UUID的算法可能会造成MAC地址泄露,这个漏洞曾被用于寻找梅丽莎病毒的制作者位 ...
- Dotnet Core下的Channel, 你用了吗?
今天给大家分享一个微软官方的好东西:Channel. 前言 今天给大家分享一个微软官方的生产者/消费者方案的特性解决:Channel. Channel在System.Threading.Chann ...