2012-08-17 126 views
1

我在MySQL數據庫中有大約30K的IP地址(IPv4)。獲取有關IP地址的數據

我想獲得有關這些IP信息,如

國家 市等

我試圖IP到國家數據庫,它們不是很準確,是錯誤的多個IP。

Web API不允許這些IP查詢,也可能不準確。

我想要準確的信息。 (ATLEAST國家應準確)

我對Java的後端,PHP/HTML5顯示

請幫助。

+0

你也許可以得到該國,但你不會得到任何東西到準確。 – romo 2012-08-17 15:19:53

+4

我以前使用Maxmind GeoIP,它工作得很好。 http://www.maxmind.com/app/city如果你想要更多的準確性,你將不得不支付$$$ – mpen 2012-08-17 15:20:05

回答

3

我認爲maxmind可能是事實上的geoip數據庫。他們offer a free one在國家層面上準確率爲99.5%,在城市層面上準確率爲78%。

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

+1

我不知道「非常」準確。他們聲稱「在40公里半徑範圍內,美國在全國範圍內超過99.5%,在美國城市範圍內達到78%」,但在我所在地區表現良好。 – mpen 2012-08-17 15:21:11

+0

國家信息對於一些「國際」互聯網提供商是準確的(例如美國在線,它們是否還存在?)。 AOL通過它們向用戶提供美國IP地址和/或通過代理的數據。對於大多數客戶,國家信息應該是正確的。你也會得到ISP。您可以從「特殊」ISP過濾IP,並根據需要以不同的方式處理它們。 – SDwarfs 2012-08-17 15:27:43

+0

我正在使用[鏈接] http://firestats.cc/wiki/ip2c這是多次錯誤我手動檢查。我現在試試Maxmind geoip。但我已經看到即使在經緯度和互聯網服務提供商也能獲得確切信息的在線網站。 – User1234 2012-08-17 15:33:12

1

試試這個,它就像魔法 ...........

Key和Secret:

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:

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()); 
    } 
+0

非常感謝我會試試這個:) – User1234 2012-08-17 15:40:39