1

我在 MySQL 数据库中有大约 30K IP 地址(IPv4)。

我想获取与这些 IP 相关的信息,例如

乡村城市等

我尝试过 IP 到国家/地区的数据库,这些数据库不是很准确,而且对于许多 IP 来说都是错误的。

Web API 不允许这么多 IP 查询,也可能不准确。

我想得到准确的信息。(至少国家应该是准确的)

我在后端有 Java,用于显示的 PHP/HTML5

请帮忙 。

4

2 回答 2

3

我认为 maxmind 可能是事实上的 geoip 数据库。他们提供免费的,在国家一级准确率为 99.5%,在城市一级准确率为 78%。

他们有 php 和 java 库。 http://www.maxmind.com/app/ip-location

于 2012-08-17T15:19:57.303 回答
0

试试这个,它就像魔术一样............

密钥和秘密:

private final String key = "86b780aec0cee918718d7eb2fa084df412771c17";
private final String secret = "d3e3fa0a1fc6a35ac02aa591ed32ecaa750df9a7";

创建会话的方法:

public void xmlCreateSession(){

             String createSession = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"\n"+"<request>"+"\n"+"<token>"+"</token>"+"\n"+"<key>"+this.getKey()+"</key>"+"\n"+"<secret>"+this.getSecret()+"</secret>"+"\n"+"</request>";
            firingUrl = "https://int.yumzing.com/index.php?func=sessionCreate";
            // firingUrl = "http://199.87.235.147/sessionCreate";

          //firingUrl = "https://int.yumzing.com/sessionCreate";

             String tempCreate = postData(firingUrl, createSession);
             this.getMToken(tempCreate);
             System.out.println("getToken value "+this.getToken()); 

    }

查找IP的方法:

public void xmlUserIp(){

           String userIp = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"\n"+"<request>"+"\n"+"<token>"+this.getToken()+"</token>"+"\n"+"</request>";

           firingUrl = "https://int.yumzing.com/index.php?func=userIp";

           String tempIp = postData(firingUrl, userIp);
           this.getMIp(tempIp);
           System.out.println("getToken value "+this.getIp()); 

    }

基于IP获取Info的方法:

public void xmlUserLocation(){

        this.xmlUserIp();
        System.out.println("With in xmlUserLocation-"+this.getToken()+" "+this.getIp());

           String userLocation = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"\n"+"<request>"+"\n"+"<token>"+this.getToken()+"</token>"+"\n"+"<ip>"+this.getIp()+"</ip>"+"\n"+"</request>";
           firingUrl = "https://int.yumzing.com/?func=userLocation";



          System.out.println("With in xmlUserLocation-"+this.getToken()+" "+this.getIp());
           String tempLoc = postData(firingUrl, userLocation);
           System.out.println("In xmluserLoc"+tempLoc);
           this.getMLocation(tempLoc);

           System.out.println("getToken value "+this.getCountry()); 
           System.out.println("getToken value "+this.getState()); 
           System.out.println("getToken value "+this.getCity()); 
           System.out.println("getToken value "+this.getLatitude()); 
           System.out.println("getToken value "+this.getLongitude()); 
    }
于 2012-08-17T15:30:50.200 回答