これにはGeoIPを使用できます。
彼らはあなたが使用できる無料のCOM APIを持っている:
<%
if Request.Form("values") = "Test Values" then
hostname = "www.yahoo.com"
else
hostname = Request.Form("hostname")
end if
if Request.Form("submit") = "Submit" then
set geoip = Server.CreateObject("GeoIPCOMEx.GeoIPEx")
geoip.set_db_path("C:\Program Files\GeoIP\")
geoip.find_by_name(hostname)
city = geoip.city
Response.Write("<table cellpadding=2 border=1><tr><th colspan=2>Results</th></tr>")
Response.Write("<tr><td>Hostname</td><td>" + hostname + "</td></tr>")
Response.Write("<tr><td>GeoIP City Value</td><td>" + city + "</td></tr>")
Response.Write("</table>")
end if
%>
http://www.maxmind.com/app/com
http://www.maxmind.com/GeoIP-COM-1.3.zip
彼らのCOM APIには、次のことを公開します。
Methods:
bool set_db_path(string path) (must be set before any other operations, true if all dbs found)
bool find_by_addr(string ipvalue) (return true if address found, sets all properties)
bool find_by_name(string dns_name) (-"-)
あなたのデータ検索後に受け取る:
Properties:
country_code (2 chars; "LN" if non-routed addr, "LH" if localhost)
country_code3 (3 chars)
country_name ("Local Area Network" if non-routed addr,"Localhost" if localhost)
region (2 chars, state abbrev for US/Canada, FIPS 10-4 region code for others)
city
postal_code (max 6 chars, US and Canada only)
latitude (real number)
longitude (real number)
dma_code (integer)
area_code (integer)
したがって、find_by_nameを使用する代わりに、find_by_addrを使用します。どちらがIPv4アドレスに基づいて国を検索するか。
これは、リモートのサードパーティプロバイダに頼っていると危険である可能性があるため、これは優れたソリューションです。
http://www.maxmind.com/app/geolitecountry
:自分のサイトには、
あなたがここに自分のIP /カントリーデータベースの無料版をダウンロードすることができますなど、高負荷の下でも、下がるかもしれません