2008年02月
前面我写的“ASP.net 获得客户端的IP相关知识”博客中,有一个简单的例子,演示了如何客户端编码,修改 HTTP_VIA 和HTTP_X_FORWARDED_FOR ,进而让服务器无法了解你到底是否启用的代理服务器,以及启用的是代理服务器之后的你的真实IP地址。 结合上面的技术,编码使用代理服务器,其实是非常简单的。下面就是客户段的演示代码。比起上篇博客,只修改了几行。 下面演示代码中的代理服务器地址,可能在你试验的时候,已经不通了,请更换新的代理服务器地址。 class Program { static void Main(string[] args) { // 最新代理服务器的地址,可以参看下面的列表 // http://www.proxycn.com/html_proxy/http-1.html proxyTest("ht阅读全文>
发表于 @ 2008年02月21日 14:52:00|评论(loading...)|编辑
上一篇博客:ASP.net 获得客户端的IP相关知识 中我提到了,如果你想编码更改 HTTP_VIA、HTTP_X_FORWARDED_FOR 的值,你需要客户端增加的HTTP Head为:VIA、X_FORWARDED_FOR。即,少个 "HTTP_" 前缀。那么,到底读取这些值时,那些HTTP头增加时候需要增加HTTP_前缀,那些又不需要呢? 简单来说,出了一些系统预先定义的,有特殊意义的HTTP头外,其他都需要增加 "HTTP_" 前缀。这是W3C 的 The Common Gateway Interface (CGI) 规范的定义。这些预定义的变量如下: 变量 说明 APPL_MD_PATH 检索 ISAPI DLL 的 (WAM) Application 的元数据库路径。 APPL_PHYSICAL_PATH 检索与元数据库路径相应的物理路径。IIS 通过将 APPL_MD_PATH 转换为物理(目录)路阅读全文>
发表于 @ 2008年02月21日 14:31:00|评论(loading...)|编辑
ASP.net 获得客户端的IP,最常见的是使用下述代码:string user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
对于了解代理服务器情况的人,我们会知道,如果用户使用了代理服务器,上述代码获得的是代理服务器的IP地址;如果用户使用了多个代理服务器,则是到达服务器的最后一个代理服务器的IP地址。
REMOTE_ADDR 说明:
访问客户端的 IP 地址。 此项信息用户不可以修改。如果真的给改了的话,你也和服务器连接不了了,服务器就是按照这个来与客户端建立连接并进行通讯的。实际我测试修改这个 ServerVariables , 一点效果都没有。仍然获得是实际的值。另: Request.UserHostAddress 和 Request.ServerVariables["REMOTE_ADDR"] 实际是同一个值。
如何绕过代理服务器获得用户真实的IP地址呢? 这时候我们一般是类似如下的代码(这里我简单起见,没有作一些边界判断)priv阅读全文>
发表于 @ 2008年02月20日 17:27:00|评论(loading...)|编辑