日期:2014-05-17  浏览次数:20922 次

WebProxy对于ip138这样的网站为什么没有效果?

HttpWebRequest request = (HttpWebRequest)WebRequest.CreateDefault(new Uri("http://www.ip138.com"));
            WebProxy wp = new WebProxy("60.235.27.60:80", true);
            request.Proxy = wp;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream sResponse = response.GetResponseStream();
            StreamReader srResponse = new StreamReader(sResponse, Encoding.GetEncoding("GB2312"));
            string strContent = srResponse.ReadToEnd();
            srResponse.Close();
            FileStream fs = new FileStream(@"D:\test.html", FileMode.Create);
            StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
            sw.Write(strContent);
            sw.Close();
            fs.Close();

上面这个内容,如果平常的网页使用获取remoteaddr的方式获取客户端IP的话,能够看到IP已经是代理的IP了。
但是访问ip138网站的时候,从获取到的源文件看,里面显示的IP还是我真实的公网IP,这个是为什么呢。

------解决方案--------------------
ip138会判断,如果代理服务器通过x-forward-for字段附加了原始用户的ip,返回原始ip,否则返回remoteaddr。
------解决方案--------------------
HttpWebRequest request = (HttpWebRequest)WebRequest.CreateDefault(new Uri("http://iframe.ip138.com/ic.asp"));
这才是实际显ip的页面
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/