最近网站想获取访问者客户端的一些信息。通过HTTP_USER_AGENT可以获取用户浏览器类型版本,还有是不是手机版,手机再判断其型号等等。

        那么,怎样获取访问者客户端的真实IP呢?这个IP一般是指他/她上网的出口公网IP,不指私网内网。

        大多数情况下,我们取服务器预定义的三个变量HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR,REMOTE_ADDR,是可以获知用户真实IP的。但是,某些情况下,比如说移动这种通过多层代理的就很不准确,要不就是取到为空。

        然而,淘宝的IP地址库,比如:http://ip.taobao.com/service/getIpInfo.php?ip=myip,还有IP138的:http://1212.ip138.com/ic.asp却都可以比较真实地获取访客的IP。他们是怎样做到的呢?

        对于这个问题,我想到的有两种方法。

        一种是通过js,客户端访问获取淘宝或者ip138,返回信息再送到服务端,从而服务端取得用户的真实IP。不过度娘好久都没找到,说什么js不允许跨域访问。。。

        另外一种就是服务端通过其它信息获取用户的真实IP,想不出,找不到。。。

        其实搜狐是有提供API的:http://pv.sohu.com/cityjson?ie=utf-8,返回是个var型的在js可以直接读取的数据,很方便读取。不过,它的数据库太烂,很不准。。。

        各位路过的大虾,知道请赐教下。。。