精华内容
下载资源
问答
  • CDN下真实ip查询

    热门讨论 2013-02-05 23:46:51
    CDN下真实ip查询
  • 根据ip查询城市名称(含IP地址库) java版本 将QQWry.dat放到src下。。 调用如下接口方法 获取城市名称: String cityname = net.sololive.ip.IPSeeker.getAddress(ip);
  • 1)国内ip查询:http://ip.taobao.com/service/getIpInfo.php?ip=183.129.210.50 查询结果: 2).国外ip查询:http://ip.taobao.com/service/getIpInfo.php?ip=56.23.52.41 查询结果: 2. 接口:...

    一 第三方接口:

    1. 淘宝接口:

    1)国内ip查询:http://ip.taobao.com/service/getIpInfo.php?ip=183.129.210.50

    查询结果:

    2).国外ip查询:http://ip.taobao.com/service/getIpInfo.php?ip=56.23.52.41

    查询结果:

    2. 接口:http://ip.ws.126.net/ipquery?ip=

    1)国内ip查询:http://ip.ws.126.net/ipquery?ip=183.129.210.50

    查询结果:

    2)国外ip查询:http://ip.ws.126.net/ipquery?ip=56.23.52.41

    查询结果:

     

    二  使用纯真ip库(国内外ip均适用,不过得经常去更新下载的ip库)

    1. 首先去纯真官网下载qqwry.dat文件;

    2. 将qqwry.dat文件放到电脑文件夹中;

    3. 然后写三个工具类:

    1)IPLocation

    package com.kanq.platform.ocean.web.util;
    
    public class IPLocation {
         /**
         * 国家
         */
        private String country;
        /**
         * 区域 - 省份 + 城市
         */
        private String area;
        
    
        public IPLocation() {
            country = area = "";
        }
    
        public synchronized IPLocation getCopy() {
            IPLocation ret = new IPLocation();
            ret.country = country;
            ret.area = area;
            return ret;
        }
    
        public String getCountry() {
            return country;
        }
    
        public String getCity() {
            String city = "";
            if(country != null){
                String[] array = country.split("省");
                if(array != null && array.length > 1){
                    city =  array[1];
                } else {
                    city = country;
                }
                if(city.length() > 3){
                    city.replace("内蒙古", "");
                }
            }
            return city;
        }
        
        //获取省份
        public String getProvince() {
            String city = "";
            if(country != null){
                String[] array = country.split("省");
                if(array != null && array.length > 1){
                    city =  array[0];
                } else {
                    city = country;
                }
                if(city.length() > 3){
                    city.replace("内蒙古", "");
                }
            }
            return city;
        }
    
        public void setCountry(String country) {
            this.country = country;
        }
    
        public String getArea() {
            return area;
        }
    
        public void setArea(String area) {
            //如果为局域网,纯真IP地址库的地区会显示CZ88.NET,这里把它去掉
            if(area.trim().equals("CZ88.NET")){
                this.area="本机或本网络";
            }else{
                this.area = area;
            }
        }
    }
    
     

    2)IpTypeConversion类

     

    package com.kanq.platform.ocean.web.util;
    
    import java.io.UnsupportedEncodingException;
    import java.util.StringTokenizer;
    
    /**
     * 工具类,提供IP字符串转数组的方法
     */
    public class IpTypeConversion {
    //   private static final Logger log = LoggerFactory.getLogger(CZIPUtils.class);
            private static StringBuilder sb = new StringBuilder();
    
            /**
             * 从ip的字符串形式得到字节数组形式
             *
             * @param ip 字符串形式的ip
             * @return 字节数组形式的ip
             */
            public static byte[] getIpByteArrayFromString(String ip) {
                byte[] ret = new byte[4];
                StringTokenizer st = new StringTokenizer(ip, ".");
                try {
                    ret[0] = (byte) (Integer.parseInt(st.nextToken()) & 0xFF);
                    ret[1] = (byte) (Integer.parseInt(st.nextToken()) & 0xFF);
                    ret[2] = (byte) (Integer.parseInt(st.nextToken()) & 0xFF);
                    ret[3] = (byte) (Integer.parseInt(st.nextToken()) & 0xFF);
                } catch (Exception e) {
    //              log.error("从ip的字符串形式得到字节数组形式报错" + e.getMessage(), e);
                }
                return ret;
            }
    
            /**
             * 字节数组IP转String
             * @param ip ip的字节数组形式
             * @return 字符串形式的ip
             */
            public static String getIpStringFromBytes(byte[] ip) {
                sb.delete(0, sb.length());
                sb.append(ip[0] & 0xFF);
                sb.append('.');
                sb.append(ip[1] & 0xFF);
                sb.append('.');
                sb.append(ip[2] & 0xFF);
                sb.append('.');
                sb.append(ip[3] & 0xFF);
                return sb.toString();
            }
    
            /**
             * 根据某种编码方式将字节数组转换成字符串
             *
             * @param b        字节数组
             * @param offset   要转换的起始位置
             * @param len      要转换的长度
             * @param encoding 编码方式
             * @return 如果encoding不支持,返回一个缺省编码的字符串
             */
            public static String getString(byte[] b, int offset, int len, String encoding) {
                try {
                    return new String(b, offset, len, encoding);
                } catch (UnsupportedEncodingException e) {
                    return new String(b, offset, len);
                }
            }
    }
     

    3) IPAddressUtils类

    package com.kanq.platform.ocean.web.util;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.nio.MappedByteBuffer;
    import java.util.Map;
    import java.util.concurrent.ConcurrentHashMap;
    
    public class IPAddressUtils {
         /**
         * 纯真IP数据库名
         */
        private String IP_FILE="qqwry.dat";
      
    
        /**
         * 常量,比如记录长度等等
         */
        private static final int IP_RECORD_LENGTH = 7;
        /**
         * 常量,读取模式1
         */
        private static final byte REDIRECT_MODE_1 = 0x01;
        /**
         * 常量,读取模式2
         */
        private static final byte REDIRECT_MODE_2 = 0x02;
    
        /**
         * 缓存,查询IP时首先查询缓存,以减少不必要的重复查找
         */
        private Map<String, IPLocation> ipCache;
        /**
         * 随机文件访问类
         */
        private RandomAccessFile ipFile;
        /**
         * 内存映射文件
         */
        private MappedByteBuffer mbb;
        /**
         * 起始地区的开始和结束的绝对偏移
         */
        private long ipBegin, ipEnd;
    
        /**
         * 为提高效率而采用的临时变量
         */
        private IPLocation loc;
        /**
         * 为提高效率而采用的临时变量
         */
        private byte[] buf;
        /**
         * 为提高效率而采用的临时变量
         */
        private byte[] b4;
        /**
         * 为提高效率而采用的临时变量
         */
        private byte[] b3;
        /**
         * IP地址库文件错误
         */
        private static final String BAD_IP_FILE     =   "IP地址库文件错误";
        /**
         * 未知国家
         */
        private static final String UNKNOWN_COUNTRY   =   "未知国家";
        /**
         * 未知地区
         */
        private static final String UNKNOWN_AREA    =   "未知地区";
    
    
        /**
         * pathFile表示纯真IP数据库保存的文件夹
         */
        public void init(String pathFile) {
            try {
                // 缓存一定要用ConcurrentHashMap, 避免多线程下获取为空
                ipCache = new ConcurrentHashMap<>();
                loc = new IPLocation();
                buf = new byte[100];
                b4 = new byte[4];
                b3 = new byte[3];
                try {
                    ipFile = new RandomAccessFile(IP_FILE, "r");
                } catch (FileNotFoundException e) {
                    // 如果找不到这个文件,再尝试再当前目录下搜索,这次全部改用小写文件名
                    //     因为有些系统可能区分大小写导致找不到ip地址信息文件
                    String filename = new File(IP_FILE).getName().toLowerCase();
                    File[] files = new File(pathFile).listFiles();
                    for(int i = 0; i < files.length; i++) {
                        if(files[i].isFile()) {
                            if(files[i].getName().toLowerCase().equals(filename)) {
                                try {
                                    ipFile = new RandomAccessFile(files[i], "r");
                                } catch (FileNotFoundException e1) {
    //                                log.error("IP地址信息文件没有找到,IP显示功能将无法使用:{}" + e1.getMessage(), e1);
                                    ipFile = null;
                                }
                                break;
                            }
                        }
                    }
                }
                // 如果打开文件成功,读取文件头信息
                if(ipFile != null) {
                    try {
                        ipBegin = readLong4(0);
                        ipEnd = readLong4(4);
                        if(ipBegin == -1 || ipEnd == -1) {
                            ipFile.close();
                            ipFile = null;
                        }
                    } catch (IOException e) {
    //                    log.error("IP地址信息文件格式有错误,IP显示功能将无法使用"+ e.getMessage(), e);
                        ipFile = null;
                    }
                }
    
            } catch (Exception e) {
    //            log.error("IP地址服务初始化异常:" + e.getMessage(), e);
            }
        }
    
        /**
         * 查询IP地址位置 - synchronized的作用是避免多线程时获取区域信息为空
         * @param ip
         * @return
         */
        public synchronized IPLocation getIPLocation(final String ip) {
            IPLocation location = new IPLocation();
            location.setArea(this.getArea(ip));
            location.setCountry(this.getCountry(ip));
            return location;
        }
    
        /**
         * 从内存映射文件的offset位置开始的3个字节读取一个int
         * @param offset
         * @return
         */
        private int readInt3(int offset) {
            mbb.position(offset);
            return mbb.getInt() & 0x00FFFFFF;
        }
    
        /**
         * 从内存映射文件的当前位置开始的3个字节读取一个int
         * @return
         */
        private int readInt3() {
            return mbb.getInt() & 0x00FFFFFF;
        }
    
        /**
         * 根据IP得到国家名
         * @param ip ip的字节数组形式
         * @return 国家名字符串
         */
        public String getCountry(byte[] ip) {
            // 检查ip地址文件是否正常
            if(ipFile == null)
                return BAD_IP_FILE;
            // 保存ip,转换ip字节数组为字符串形式
            String ipStr = IpTypeConversion.getIpStringFromBytes(ip);
            // 先检查cache中是否已经包含有这个ip的结果,没有再搜索文件
            if(ipCache.containsKey(ipStr)) {
                IPLocation ipLoc = ipCache.get(ipStr);
                return ipLoc.getCountry();
            } else {
                IPLocation ipLoc = getIPLocation(ip);
                ipCache.put(ipStr, ipLoc.getCopy());
                return ipLoc.getCountry();
            }
        }
    
        /**
         * 根据IP得到国家名
         * @param ip IP的字符串形式
         * @return 国家名字符串
         */
        public String getCountry(String ip) {
            return getCountry(IpTypeConversion.getIpByteArrayFromString(ip));
        }
    
        /**
         * 根据IP得到地区名
         * @param ip ip的字节数组形式
         * @return 地区名字符串
         */
        public String getArea(final byte[] ip) {
            // 检查ip地址文件是否正常
            if(ipFile == null)
                return BAD_IP_FILE;
            // 保存ip,转换ip字节数组为字符串形式
            String ipStr = IpTypeConversion.getIpStringFromBytes(ip);
            // 先检查cache中是否已经包含有这个ip的结果,没有再搜索文件
            if(ipCache.containsKey(ipStr)) {
                IPLocation ipLoc = ipCache.get(ipStr);
                return ipLoc.getArea();
            } else {
                IPLocation ipLoc = getIPLocation(ip);
                ipCache.put(ipStr, ipLoc.getCopy());
                return ipLoc.getArea();
            }
        }
    
        /**
         * 根据IP得到地区名
         * @param ip IP的字符串形式
         * @return 地区名字符串
         */
        public String getArea(final String ip) {
            return getArea(IpTypeConversion.getIpByteArrayFromString(ip));
        }
    
        /**
         * 根据ip搜索ip信息文件,得到IPLocation结构,所搜索的ip参数从类成员ip中得到
         * @param ip 要查询的IP
         * @return IPLocation结构
         */
        private IPLocation getIPLocation(final byte[] ip) {
            IPLocation info = null;
            long offset = locateIP(ip);
            if(offset != -1)
                info = getIPLocation(offset);
            if(info == null) {
                info = new IPLocation();
                info.setCountry (  UNKNOWN_COUNTRY);
                info.setArea(UNKNOWN_AREA);
            }
            return info;
        }
    
        /**
         * 从offset位置读取4个字节为一个long,因为java为big-endian格式,所以没办法
         * 用了这么一个函数来做转换
         * @param offset
         * @return 读取的long值,返回-1表示读取文件失败
         */
        private long readLong4(long offset) {
            long ret = 0;
            try {
                ipFile.seek(offset);
                ret |= (ipFile.readByte() & 0xFF);
                ret |= ((ipFile.readByte() << 8) & 0xFF00);
                ret |= ((ipFile.readByte() << 16) & 0xFF0000);
                ret |= ((ipFile.readByte() << 24) & 0xFF000000);
                return ret;
            } catch (IOException e) {
                return -1;
            }
        }
    
        /**
         * 从offset位置读取3个字节为一个long,因为java为big-endian格式,所以没办法
         * 用了这么一个函数来做转换
         * @param offset 整数的起始偏移
         * @return 读取的long值,返回-1表示读取文件失败
         */
        private long readLong3(long offset) {
            long ret = 0;
            try {
                ipFile.seek(offset);
                ipFile.readFully(b3);
                ret |= (b3[0] & 0xFF);
                ret |= ((b3[1] << 8) & 0xFF00);
                ret |= ((b3[2] << 16) & 0xFF0000);
                return ret;
            } catch (IOException e) {
                return -1;
            }
        }
    
        /**
         * 从当前位置读取3个字节转换成long
         * @return 读取的long值,返回-1表示读取文件失败
         */
        private long readLong3() {
            long ret = 0;
            try {
                ipFile.readFully(b3);
                ret |= (b3[0] & 0xFF);
                ret |= ((b3[1] << 8) & 0xFF00);
                ret |= ((b3[2] << 16) & 0xFF0000);
                return ret;
            } catch (IOException e) {
                return -1;
            }
        }
    
        /**
         * 从offset位置读取四个字节的ip地址放入ip数组中,读取后的ip为big-endian格式,但是
         * 文件中是little-endian形式,将会进行转换
         * @param offset
         * @param ip
         */
        private void readIP(long offset, byte[] ip) {
            try {
                ipFile.seek(offset);
                ipFile.readFully(ip);
                byte temp = ip[0];
                ip[0] = ip[3];
                ip[3] = temp;
                temp = ip[1];
                ip[1] = ip[2];
                ip[2] = temp;
            } catch (IOException e) {
    //            log.error(e.getMessage(), e);
            }
        }
    
        /**
         * 从offset位置读取四个字节的ip地址放入ip数组中,读取后的ip为big-endian格式,但是
         * 文件中是little-endian形式,将会进行转换
         * @param offset
         * @param ip
         */
        private void readIP(int offset, byte[] ip) {
            mbb.position(offset);
            mbb.get(ip);
            byte temp = ip[0];
            ip[0] = ip[3];
            ip[3] = temp;
            temp = ip[1];
            ip[1] = ip[2];
            ip[2] = temp;
        }
    
        /**
         * 把类成员ip和beginIp比较,注意这个beginIp是big-endian的
         * @param ip 要查询的IP
         * @param beginIp 和被查询IP相比较的IP
         * @return 相等返回0,ip大于beginIp则返回1,小于返回-1。
         */
        private int compareIP(byte[] ip, byte[] beginIp) {
            for(int i = 0; i < 4; i++) {
                int r = compareByte(ip[i], beginIp[i]);
                if(r != 0)
                    return r;
            }
            return 0;
        }
    
        /**
         * 把两个byte当作无符号数进行比较
         * @param b1
         * @param b2
         * @return 若b1大于b2则返回1,相等返回0,小于返回-1
         */
        private int compareByte(byte b1, byte b2) {
            if((b1 & 0xFF) > (b2 & 0xFF)) // 比较是否大于
                return 1;
            else if((b1 ^ b2) == 0)// 判断是否相等
                return 0;
            else
                return -1;
        }
    
        /**
         * 这个方法将根据ip的内容,定位到包含这个ip国家地区的记录处,返回一个绝对偏移
         * 方法使用二分法查找。
         * @param ip 要查询的IP
         * @return 如果找到了,返回结束IP的偏移,如果没有找到,返回-1
         */
        private long locateIP(byte[] ip) {
            long m = 0;
            int r;
            // 比较第一个ip项
            readIP(ipBegin, b4);
            r = compareIP(ip, b4);
            if(r == 0) return ipBegin;
            else if(r < 0) return -1;
            // 开始二分搜索
            for(long i = ipBegin, j = ipEnd; i < j; ) {
                m = getMiddleOffset(i, j);
                readIP(m, b4);
                r = compareIP(ip, b4);
                // log.debug(Utils.getIpStringFromBytes(b));
                if(r > 0)
                    i = m;
                else if(r < 0) {
                    if(m == j) {
                        j -= IP_RECORD_LENGTH;
                        m = j;
                    } else
                        j = m;
                } else
                    return readLong3(m + 4);
            }
            // 如果循环结束了,那么i和j必定是相等的,这个记录为最可能的记录,但是并非
            //     肯定就是,还要检查一下,如果是,就返回结束地址区的绝对偏移
            m = readLong3(m + 4);
            readIP(m, b4);
            r = compareIP(ip, b4);
            if(r <= 0) return m;
            else return -1;
        }
    
        /**
         * 得到begin偏移和end偏移中间位置记录的偏移
         * @param begin
         * @param end
         * @return
         */
        private long getMiddleOffset(long begin, long end) {
            long records = (end - begin) / IP_RECORD_LENGTH;
            records >>= 1;
            if(records == 0) records = 1;
            return begin + records * IP_RECORD_LENGTH;
        }
    
        /**
         * 给定一个ip国家地区记录的偏移,返回一个IPLocation结构
         * @param offset 国家记录的起始偏移
         * @return IPLocation对象
         */
        private IPLocation getIPLocation(long offset) {
            try {
                // 跳过4字节ip
                ipFile.seek(offset + 4);
                // 读取第一个字节判断是否标志字节
                byte b = ipFile.readByte();
                if(b == REDIRECT_MODE_1) {
                    // 读取国家偏移
                    long countryOffset = readLong3();
                    // 跳转至偏移处
                    ipFile.seek(countryOffset);
                    // 再检查一次标志字节,因为这个时候这个地方仍然可能是个重定向
                    b = ipFile.readByte();
                    if(b == REDIRECT_MODE_2) {
                        loc.setCountry (  readString(readLong3()));
                        ipFile.seek(countryOffset + 4);
                    } else
                        loc.setCountry ( readString(countryOffset));
                    // 读取地区标志
                    loc.setArea( readArea(ipFile.getFilePointer()));
                } else if(b == REDIRECT_MODE_2) {
                    loc.setCountry ( readString(readLong3()));
                    loc.setArea( readArea(offset + 8));
                } else {
                    loc.setCountry (  readString(ipFile.getFilePointer() - 1));
                    loc.setArea( readArea(ipFile.getFilePointer()));
                }
                return loc;
            } catch (IOException e) {
                return null;
            }
        }
    
        /**
         * 给定一个ip国家地区记录的偏移,返回一个IPLocation结构,此方法应用与内存映射文件方式
         * @param offset 国家记录的起始偏移
         * @return IPLocation对象
         */
        private IPLocation getIPLocation(int offset) {
            // 跳过4字节ip
            mbb.position(offset + 4);
            // 读取第一个字节判断是否标志字节
            byte b = mbb.get();
            if(b == REDIRECT_MODE_1) {
                // 读取国家偏移
                int countryOffset = readInt3();
                // 跳转至偏移处
                mbb.position(countryOffset);
                // 再检查一次标志字节,因为这个时候这个地方仍然可能是个重定向
                b = mbb.get();
                if(b == REDIRECT_MODE_2) {
                    loc.setCountry (  readString(readInt3()));
                    mbb.position(countryOffset + 4);
                } else
                    loc.setCountry (  readString(countryOffset));
                // 读取地区标志
                loc.setArea(readArea(mbb.position()));
            } else if(b == REDIRECT_MODE_2) {
                loc.setCountry ( readString(readInt3()));
                loc.setArea(readArea(offset + 8));
            } else {
                loc.setCountry (  readString(mbb.position() - 1));
                loc.setArea(readArea(mbb.position()));
            }
            return loc;
        }
    
        /**
         * 从offset偏移开始解析后面的字节,读出一个地区名
         * @param offset 地区记录的起始偏移
         * @return 地区名字符串
         * @throws IOException
         */
        private String readArea(long offset) throws IOException {
            ipFile.seek(offset);
            byte b = ipFile.readByte();
            if(b == REDIRECT_MODE_1 || b == REDIRECT_MODE_2) {
                long areaOffset = readLong3(offset + 1);
                if(areaOffset == 0)
                    return UNKNOWN_AREA;
                else
                    return readString(areaOffset);
            } else
                return readString(offset);
        }
    
        /**
         * @param offset 地区记录的起始偏移
         * @return 地区名字符串
         */
        private String readArea(int offset) {
            mbb.position(offset);
            byte b = mbb.get();
            if(b == REDIRECT_MODE_1 || b == REDIRECT_MODE_2) {
                int areaOffset = readInt3();
                if(areaOffset == 0)
                    return UNKNOWN_AREA;
                else
                    return readString(areaOffset);
            } else
                return readString(offset);
        }
    
        /**
         * 从offset偏移处读取一个以0结束的字符串
         * @param offset 字符串起始偏移
         * @return 读取的字符串,出错返回空字符串
         */
        private String readString(long offset) {
            try {
                ipFile.seek(offset);
                int i;
                for(i = 0, buf[i] = ipFile.readByte(); buf[i] != 0; buf[++i] = ipFile.readByte());
                if(i != 0)
                    return IpTypeConversion.getString(buf, 0, i, "GBK");
            } catch (IOException e) {
    //            log.error(e.getMessage(), e);
            }
            return "";
        }
    
        /**
         * 从内存映射文件的offset位置得到一个0结尾字符串
         * @param offset 字符串起始偏移
         * @return 读取的字符串,出错返回空字符串
         */
        private String readString(int offset) {
            try {
                mbb.position(offset);
                int i;
                for(i = 0, buf[i] = mbb.get(); buf[i] != 0; buf[++i] = mbb.get());
                if(i != 0)
                    return IpTypeConversion.getString(buf, 0, i, "GBK");
            } catch (IllegalArgumentException e) {
    //            log.error(e.getMessage(), e);
            }
            return "";
        }
    
        public String getCity(final String ipAddress){
            try {
                if(ipAddress.startsWith("192.168.")){
    //                log.error("此IP[{}]段不进行处理!", ipAddress);
                    return null;
                }
                return getIPLocation(ipAddress).getCity();
            }catch (Exception e){
    //            log.error("根据IP[{}]获取省份失败:{}", ipAddress, e.getMessage());
                return null;
            }
        }
    
        public static void main(String[] args){
            IPAddressUtils ip = new IPAddressUtils();
            ip.init("E:/queryDistrictByIp/");
            String address = "195.75.193.255";
            System.out.println("IP地址["+address + "]获取到的区域信息:" + ip.getIPLocation(address).getProvince() + ", 获取到的城市:" + ip.getIPLocation(address).getCity() + ", 运营商:"+ip.getIPLocation(address).getArea());
        }
    
    }
    

    运行IPAddressUtils类,可得结果:

    注:参考博客:

    1)https://www.cnblogs.com/likea/p/4062553.html?utm_source=tuicool&utm_medium=referral

    2)https://www.cnblogs.com/pengcc/p/5294836.html

    3)https://blog.csdn.net/chwshuang/article/details/78027873

    展开全文
  • 通过ip查询详细地址

    万次阅读 2018-11-17 12:04:43
    通过ip查询详细地址 有时候需要跟同事对接工作,互传资料的时候, 就需要知道彼此的ip地址, 一般简单查询自己电脑的可能都知道怎么查, 比如说用本地连接查看、或者输入相关命令, 但如果要通过多种方法时,可能就...

    通过ip查询详细地址

    有时候需要跟同事对接工作,互传资料的时候,
    就需要知道彼此的ip地址,
    一般简单查询自己电脑的可能都知道怎么查,
    比如说用本地连接查看、或者输入相关命令,
    但如果要通过多种方法时,可能就不太会了,
    今天小编就跟大家分享下如何用ip查询详细地址,
    希望能够帮到大家。

    现在可以通过网页查询,地址:http://47.98.237.162/tool/getAddressByIp
    这里有一个lbs码,你点击网页可按提示获取lbs码,即可通过ip查询详细地址。

    https://ws1.sinaimg.cn/large

    1、邮件查询法

    使用这种方法查询对方计算机的IP地址时,首先要求对方先给你发一封电子邮件,然后你可以通过查看该邮件属性的方法,来获得邮件发送者所在计算机的IP地址;下面就是该方法的具体实施步骤:

    首先运行OutLook express程序,并单击工具栏中的“接受全部邮件”按钮,将朋友发送的邮件接受下来,再打开收件箱页面,找到朋友发送过来的邮件,并用鼠标右键单击之,从弹出的右键菜单中,执行“属性”命令;

    在其后打开的属性设置窗口中,单击“详细资料”标签,并在打开的标签页面中,你将看到“Received: from xiecaiwen(unknown [11.111.45.25])”这样的信息,其中的“11.111.45.25”就是对方好友的IP地址;当然,要是对方好友通过Internet中的WEB信箱给你发送电子邮件的话,那么你在这里看到的IP地址其实并不是他所在工作站的真实IP地址,而是WEB信箱所在网站的IP地址。

    当然,如果你使用的是其他邮件客户端程序的话,查看发件人IP地址的方法可能与上面不一样;例如要是你使用foxmail来接受好友邮件的话,那么你可以在收件箱中,选中目标邮件,再单击菜单栏中的“邮件”选项,从弹出的下拉菜单中选中“原始信息”命令,就能在其后的界面中看到对方好友的IP地址了。

    2、日志查询法

    这种方法是通过防火墙来对QQ聊天记录进行实时监控,然后打开防火墙的日志记录,找到对方好友的IP地址。为方便叙述,本文就以KV2004防火墙为例,来向大家介绍一下如何搜查对方好友的IP地址:

    考虑到与好友进行QQ聊天是通过UDP协议进行的,因此你首先要设置好KV防火墙,让其自动监控UDP端口,一旦发现有数据从UDP端口进入的话,就将它自动记录下来。在设置KV2004防火墙时,先单击防火墙界面中的“规则设置”按钮,然后单击“新建规则”按钮,弹出设置窗口;

    在该窗口的“名称”文本框中输入“搜查IP地址”,在“说明”文本框中也输入“搜查IP地址”;再在“网络条件”设置项处,选中“接受数据包”复选框,同时将“对方IP地址”设置为“任何地址”,而在“本地IP地址”设置项处不需要进行任何设置;

    下面再单击“UDP”标签,并在该标签页面下的“本地端口”设置项处,选中“端口范围”选项,然后在起始框中输入“0”,在结束框中输入“65535”;同样地,在“对方端口”设置项处,也选中“端口范围”选项,然后在起始框中输入“0”,在结束框中输入“65535”。

    接着在“当所有条件满足时”设置项处,选中“通行”选项,同时将“其他处理”处的“记录”选项选中,而“规则对象”设置项不需要进行任何设置;完成了上面的所有设置后,单击“确定”按钮,返回到防火墙的主界面;再在主界面中选中刚刚创建好的“搜查IP地址”规则,同时单击“保存”按钮,将前面的设置保存下来。

    完成好上面的设置后,KV防火墙将自动对QQ聊天记录进行全程监控,一旦对方好友给你发来QQ信息时,那么对方好友的IP地址信息就会自动出现在防火墙的日志文件中,此时你可以进入到KV防火墙的安装目录中,找到并打开“kvfwlog”文件,就能搜查到对方好友的IP地址。

    3、工具查询法

    这种方法是通过专业的IP地址查询工具,来快速搜查到对方计算机的IP地址。例如,借助一款名为WhereIsIP的搜查工具,你可以轻松根据对方好友的Web网站地址,搜查得到对方好友的IP地址,甚至还能搜查到对方好友所在的物理位置。在用WhereIsIP程序搜查对方IP地址时,首先启动该程序打开搜查界面,然后单击该界面的“Web site”按钮,在其后的窗口中输入对方好友的Web地址,再单击“next”按钮,这样该程序就能自动与Internet中的Domain Name Whois数据库联系,然后从该数据库中搜查到与该Web网站地址对应的IP地址了。当然,除了可以知道IP地址外,你还能知道对方好友所在的具体物理位置。专业客服78065066

    倘若要想查看局域网中某个工作站的IP地址时,可以使用“网络刺客II”之类的工具来帮忙;只要你运行该工具进入到它的主界面,然后执行工具栏中的“IP地址<->主机名”命令,在其后打开的对话框中,输入对方好友的计算机名称,再单击“转换成IP”按钮,就能获得对方好友所在计算机的IP地址了。

    如果你使用Oicqsniffer工具的话,那么查询QQ好友的IP地址就更简单了。只要你单击该程序界面中的“追踪”按钮,然后向对方好友发送一条QQ消息,那么Oicqsniffer工具就会自动将对方好友的IP地址以及端口号显示出来了。除此之外,还有许多可以查找IP地址的专业工具可以选择,例如IPsniper软件。

    4、命令查询法

    这种方法是通过Windows系统内置的网络命令“netstat”,来查出对方好友的IP地址,不过该方法需要你先想办法将对方好友邀请到QQ的“二人世界”中说上几句话才可以。下面就是该方法的具体实现步骤:

    首先单击“开始”/“运行”命令,在弹出的系统运行对话框中,输入“cmd”命令,单击“确定”按钮后,将屏幕切换到MS-DOS工作状态;然后在DOS命令行中执行“netstat -n”命令,在弹出的界面中,你就能看到当前究竟有哪些地址已经和你的计算机建立了连接(如果对应某个连接的状态为“Established”,就表明你的计算机和对方计算机之间的连接是成功的)

    其次打开QQ程序,邀请对方好友加入“二人世界”,并在其中与朋友聊上几句,这样你的计算机就会与对方好友的计算机之间建立好了TCP连接;此时,再在DOS命令行中执行“netstat-n”命令,看看现在又增加了哪个tcp连接,那个新增加的连接其实就是对方好友与你之间的UDP连接,查看对应连接中的“Foreign Address”就能知道对方好友的IP地址了。

    5、ping检查法

    这种方法就是利用“ping”命令,来检查当前计算机是否能与对方好友的网站连通,在检查的过程中该地址能自动获得对方网站的IP地址。比方说,要是你想搜查天极网站的IP地址时,可以先打开系统的运行对话框,然后在其中输入字符串命令,再单击“确定”按钮,在弹出的窗口中,就能知道网站的IP地址了。同样地,你也可以搜查其他网站的IP地址。

    以上就是小编跟大家分享的方法来进行查询ip的详细地址,不知道你学会了吗?其实步骤都挺简单的,关键看你怎么学。每台电脑都是靠ip来进行标记,起到定位的作用,因此当你需要帮助的时候,别人就可以轻易的找到你电脑位置,快速帮你解决问题,可以帮你节约很多时间。

    如需ip获取详细地址,可点击查看 http://47.98.237.162/tool/getAddressByIp

    https://ws1.sinaimg.cn/large

    展开全文
  • 外网/公网出口IP查询方法汇总

    千次阅读 2020-02-04 19:27:45
    因工作/生活需要,很多时候...截至发文时间,一下网址都是免费使用的,付费的IP查询网站叶轻眉说“愿终有一日,人人生而平等,再无贵贱之分,守护生命,追求光明,此为我心所愿”。 返回纯文本(干净的只有IP地址...

    因工作/生活需要,很多时候我们需要预先知道自己的电脑在发出请求的时候所使用的公网(外网)IP地址是什么。

    直接谷歌或百度可以搜索出来很多工具,但是为了减少不必要的尝试,这里根据每个IP网站返回结果的不同做一下罗列汇总。

    截至发文时间,一下网址都是免费使用的,付费的IP查询网站叶轻眉说“愿终有一日,人人生而平等,再无贵贱之分,守护生命,追求光明,此为我心所愿”。

    返回纯文本(干净的只有IP地址了):

    http://icanhazip.com/

    http://ipinfo.io/ip

    https://ipecho.net/plain

    http://members.3322.org/dyndns/getip

    http://myip.ipip.net/  (中文,包含地区和运营商)

    http://www.trackip.net/ip  (http://www.trackip.net/i 界面可以选择纯净IP或JSONhttp://www.trackip.net/ip?json)

    https://ifconfig.me/all (包含请求参数)

    返回JSON格式:

    httpbin.org/ip (只有IP地址)

    http://www.trackip.net/ip?json

    返回HTML:

    http://checkip.dyndns.org/  (只有IP地址)

    http://nstool.netease.com/  (有运营商和DNS地址,但是curl的时候发现源码中并无数据,是iFrame框架,有效url是http://only-329841-103-107-216-231.nstool.yqkk.link/

    http://www.ip138.com/ (emmmmm,中文,页面花哨)

    http://www.cip.cc/ (返回IP细节,运营商和地区等,中文)

    https://ifconfig.me/  (英文的,包括请求头参数)

    http://ifconfig.io/ (英文的,包括请求头参数)

    返回XML:

    https://ifconfig.me/all.xml  (包含UA等)

    功能比较丰富的一个站:

    https://www.ipip.net/   (http://www.ipip.net/ip.html)

     

    展开全文
  • 局域网IP查询

    千次阅读 2018-05-21 17:05:54
    1.linux局域网ip查询 nmap -sP 192.168.1.0/24 查询192.168.1段内可ping通的所有ip并打印到屏幕上,还有很多参数,具体如下: -iL &lt;inputfilename&gt;:从主机/网络列表中输入 -iR &lt;num ...

    1.linux局域网ip查询

    nmap -sP 192.168.1.0/24  查询192.168.1段内可ping通的所有ip并打印到屏幕上,还有很多参数,具体如下:

    -iL <inputfilename>:从主机/网络列表中输入

    -iR <num hosts>:选择随机目标

    --exclude <host1 [,host2] [,host3],...>:排除主机/网络

    --excludefile <exclude_file>:从文件中排除列表

    HOST DISCOVERY:

    -sL:列表扫描 - 仅列出要扫描的目标

    -sP:Ping扫描 - 不要进一步确定主机是否在线

    -P0:将所有主机视为在线 - 跳过主机发现

    -PS / PA / PU [portlist]:指定端口的TCP SYN / ACK或UDP发现探测

    -PE / PP / PM:ICMP回显,时间戳和网络掩码请求发现探测

    -n / -R:永远不要做DNS解析/始终解析[缺省:有时解析] 

    SCAN技术:

    -sS / sT / sA / sW / sM:TCP SYN / Connect()/ ACK / Window / Maimon扫描

    -sN / sF / sX:TCP Null,FIN和Xmas扫描

    - -scanflags <flags>:自定义TCP扫描标志

    -sI <zombie host [:probeport]>:idlescan 

    -sO:IP协议扫描

    -b <ftp中继主机>:FTP反弹扫描

    端口规范和扫描顺序:-p 

    <端口范围>:仅扫描指定的端口

    例如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080

    -F:快速 - 仅扫描nmap-services文件中列出的端口)

    -r:连续扫描端口 - 不随机化

    服务/版本检测:

    -sV:探测器打开端口以确定服务/版本信息 - 

    颠覆光源:限制为最可能的探测以便更快识别

    --version-all:尝试每个探测器进行版本检测

    --version-trace:显示详细版本扫描活动(用于调试)

    操作系统检测:

    -O:启用操作系统检测

    --osscan-限制:限制操作系统检测到有前途的目标

    --osscan-guess:更加积极地猜测操作系统

    时序和性能:

    -T [0-6]:设置时序模板(越快越快)

    --min-hostgroup / max-hostgroup <msec>:并行主机扫描组大小

    --min-parallelism / max-parallelism <msec>:探测器并行化

    --min-rtt-timeout / max-rtt-timeout / initial-rtt -timeout <msec>:指定

    探测往返时间。

    --host-timeout <msec>:在此长时间后放弃目标

    - 扫描延迟/ - 最大扫描延迟<msec>:调整探头之间的延迟

    防火墙/ IDS泄露和防范:

    -f; --mtu <val>:片段数据包(可选w /给定MTU)

    -D <decoy1,decoy2 [,ME],...>:用诱饵隐藏扫描

    -S <IP_Address>:欺骗源地址

    -e <iface >:使用指定的接口

    -g / - source-port <portnum>:

    --data-length <num>:将随机数据附加到发送的数据包

    --ttl <val>:设置IP生存时间字段

    --spoof-mac <MAC地址,前缀或供应商名称:欺骗您的MAC地址

    OUTPUT:

    -oN / -oX / -oS / -oG <file>:输出扫描分别以正常的XML,s | <rIpt kIddi3 

    和Grepable格式显示给定的文件名。

    -oA <basename>:一次输出三种主要格式

    -v:提高详细程度(使用两次以获得更多效果)

    -d [level]:设置或增加调试级别(最多9个有意义)-- 

    packet-trace :显示所有发送和接收的数据包

    --iflist:打印主机接口和路由(用于调试)

    --append-output:附加到而不是clobber指定的输出文件

    --resume <filename>:恢复中止扫描

    --stylesheet <path / URL>:XSL样式表将XML输出转换为HTML 

    --no-stylesheet:防止Nmap从关联带有XML输出的XSL样式表

    MISC:

    -6:启用IPv6扫描

    -A:启用操作系统检测和版本检测

    --datadir <dirname>:指定自定义Nmap数据文件位置

    --send-eth / - send-ip:使用原始以太网帧或IP数据包发送数据包

    --privileged:假定用户具有完全特权

    -V:打印版本号

    -h:打印此帮助摘要页面

    2.windows ip查询

        命令行下执行 arp -a  

    也可以使用Netscan.Chs软件查询

    展开全文
  • 根据客户和网友反馈,埃文科技把IP问问这款高精度IP定位|IP查询工具独立出来给大家使用,同时也给大家提供了手机查询的界面,方便大家使用。 鼓励大家内测发现问题,反馈给我们。 为了让大家最大程度查询到想要...
  • 根据ip查询真实地址

    千次阅读 多人点赞 2019-02-19 13:36:08
    电脑ip地址查询误差不大,基本可以在10几米范围内,因为手机是以省为中心获取去ip地址的,所以显示的很多都是以省会为中心的,所以大部分都会显示省会ip,当然如果连接wifi的手机就能够非常精准的定位了。...
  • 环境: centos 7.5 python 3.6 ...Python Django 搭建纯净IP地址返回服务(返回访问者IP地址) 记录用户访问页面 获取用户访问页面 server_name = request.META.get(‘SERVER_NAME’) def get_ip(...
  • 昨天写项目,突然看到需求上要求,根据ip获取ip的地理位置,顿时感觉很懵逼(本人是新手)...1.首先创建好,我们的查询ip地址的工具类: package com.zr.text; import java.io.BufferedReader; import java.io.Da...
  • 几个免费好用的IP查询接口

    万次阅读 2018-10-23 08:59:22
    在开发 IPinfo 之前xiaoz曾不断寻找免费好用的IP查询接口,目前IPinfo也基本完成,将收集到的IP查询接口整理分享出来,希望对开发人员有所帮助。 纯真IP 纯真官网 http://www.cz88.net/ 有提供IP数据库下载,可作为...
  • 使用淘宝的ip查询接口心得

    千次阅读 2018-09-11 12:27:11
    http://ip.taobao.com/service/getIpInfo.php 这是淘宝提供的接口,只需要在后面...查询结果如下: {"code":0,"data":{"ip":"192.168.1.30","country":"XX&qu
  • 局域网IP查询 局域网IP查询 局域网IP查询 局域网IP查询 局域网IP查询 非常实用的一个工具
  • docker默认ip查询

    千次阅读 2018-04-03 20:03:27
    docker默认ip命令 docker-machine ip default 获取docker默认ip
  • 用来实现如何获得本机的内网ip,外网ip和根据ip获得相应的地址。 花了几个小时才弄清,然后整理了一下,希望有用。 首先要明白以下三种ip地址的区别: (1)127.0.0.1也就是localhost,这是本地ip地址,是只能...
  • 数据库2.IP地址分类分析-饼图3.IP地址分布可视化-地图4.IP地址分布分析-饼图5.IP地址分布可视化-条形图6.IP地址运营商占比分析-饼图7.IP地址运营商占比可视化-条形图四.源代码1.get_ip_infos.py(IP地址信息爬虫)2...
  • 公网IP查询方法

    万次阅读 2017-05-20 15:06:11
    2. 如果是公司内或者学校内的局域网,要查询公网IP有以下方式: 1)查自己本机IP: 打开http://ip.cn/ ,显示的IP就是本机IP. 2. 打开 http://site.ip138.com/ , 可以查询任意域名的IP,注意每个域名可能有多个...
  • java根据IP查询所在地址(百度地图)

    万次阅读 2018-04-26 17:05:12
    1.在百度地图里面创建应用 ...2.应用IP定位服务(我们上传ip,百度地图告诉我们IP所在城市) 服务API说明地址:http://lbsyun.baidu.com/index.php?title=webapi/ip-api 这里选用:http://api.map.baidu.com/location...
  • 根据ip查询经纬度的接口

    千次阅读 2018-08-04 14:09:00
    http://ip-api.com/json/ 直接访问,结果如下 // 20180804140751 // http://ip-api.com/json/ { "as": "AS14061 DigitalOcean, LLC", "city": "London", &...
  • 设计蜂巢IP地址查询接口:http://www.hujuntao.com/api/ip/ip.php 腾讯IP地址查询接口:http://fw.qq.com/ipaddress 新浪IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php...
  • 以前项目中有需要用到过记录客户登入的IP地址,但是并木有...主要有两个IP查询接口:  1.新浪接口:http://counter.sina.com.cn/ip?ip=(参数)  2.淘宝接口:http://ip.taobao.com/service/getIpInfo.php?ip= (参数)
  • 根据服务器IP查询属于腾讯云还是阿里云
  • 一.网络协议相关: 1.持续的测试网络连通: ...2.查询本机IP: ipconfig ---加参数可获取更多信息--- ipconfig /all 详细的信息 ipconfig /release 释放当前ip ipconfig /renew 重新申请ip ...
  • 玩路由器、NAS和树莓派的朋友经常需要查看内网设备ip地址。尤其是树莓派,一般情况不用桌面系统,登录SSH时候经常需要知道树莓派的ip地址。登录路由器可以查看到局域网内设备的ip...
  • 通过IP查询计算机名

    千次阅读 2017-08-25 11:58:02
    知道对方ip查看对方的计算机名 方法:开始->运行->cmd->net view 对方ip或者 开始->运行->cmd->nbtstat -a 对方ip 知道对方计算机名查看对方ip 方法:开始->运行->cmd->ping 对方计算机名或者 开始->运行->cmd->...
  • JS调用免费接口根据ip查询位置

    千次阅读 2016-08-28 21:53:26
    新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 新浪多地域测试方法:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=218.192.3.42 搜狐IP地址查询接口...
  • linux 网络域名ip查询命令

    千次阅读 2016-03-01 11:40:25
    houst 域名 查询域名对应外网地址
  • 这个接口比其他网站提供的接口都好,查询限制是每个用户的访问频率需小于10qps,也就是说每秒限制10次查询,几乎可以说是无限制了 接口使用说明: 1. 请求接口(GET): ...
  • 通过ip查询自己电脑的共享文件夹

    千次阅读 2017-03-02 13:40:00
    选中本地连接,在窗口的左下方有详细信息,可以看到内网IP,记住IP地址。 直接在地址栏输入记住的IP地址格式如下:192.168.1.120,回车,就可以看到本机所有共享的文件或者文件夹。  方法二、 点击...
  • 批量查询域名解析的IP

    热门讨论 2011-10-13 15:05:55
    批量查询域名解析的IP。 1、把域名整理好,放在Domain.txt文件,域名每行一个不要有空格之类的; 2、打开run.bat等待窗口运行完自动关闭; 3、查询结果放在Result.txt文件。 注意:查询速度受网速、域名所解析IP...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 588,548
精华内容 235,419
关键字:

ip查询