23

c# を使用して、特定の IP アドレスの発信元の国を特定する方法を教えてください。これを使用して、接続が特定の国から発信されているかどうかを確認する必要があります。

4

12 に答える 12

28

プロジェクトでこの SQL データを使用して、次のことを判断できます。 IP アドレス ジオロケーション SQL データベース。そのデータをダウンロードしてデータベースにインポートし、ローカルでチェックを実行します。

または、国コードと国名を含む XML を返す無料の API を使用することもできます。次の例に示すように、確認したい IP アドレスを使用して次の URL にリクエストを送信します。

http://ipinfodb.com/ip_query_country.php?ip=74.125.45.100

戻り値:

<Response>
<Ip>74.125.45.100</Ip>
<Status>OK</Status>
<CountryCode>US</CountryCode>
<CountryName>United States</CountryName>
</Response>
于 2009-08-13T05:01:35.477 に答える
6

単純なAPI呼び出し (例: https://ipapi.co/8.8.8.8/country/)

私たち

これは、フィドルが機能する C# の例です。

using System;
using System.Net;
using System.IO;
using System.Text;


public class Program
{
    public static void Main()
    {

      ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

      HttpWebRequest request   = (HttpWebRequest)WebRequest.Create("https://ipapi.co/8.8.8.8/country/");
      HttpWebResponse response = (HttpWebResponse)request.GetResponse();

      var reader = new System.IO.StreamReader(response.GetResponseStream(), ASCIIEncoding.ASCII);
      Console.WriteLine(reader.ReadToEnd());

    }
}
于 2016-07-05T06:54:06.150 に答える
2

Google に依頼することができます。

必要な料金を支払うことができるサービスもあります。

于 2009-08-13T05:02:44.633 に答える
2

これは国データベースへの無料のIP アドレスです。

于 2009-08-13T05:04:00.760 に答える
1

ip2cc - 最新の公式データからデータベースを作成するためのスクリプトを備えた Python モジュール.

このユーティリティは、ソースに示されているように、 Regional Internet Registryサイト ( 、、、)Pythonから最新の情報を (好きなだけ頻繁に) ロードします。arinripenccapniclacnicafrinic

url_template = 'ftp://ftp.ripe.net/pub/stats/%s/delegated-%s-latest'
sources = {}
for name in ('arin', 'ripencc', 'apnic', 'lacnic', 'afrinic'):
    sources[name] = url_template % (name, name)

データがロードされると、クエリはオフラインで非常に迅速に回答できます。元の質問に直接回答するように簡単に変更したり、コマンド ラインから使用して国を返すことができIP addressます。

于 2009-08-13T05:27:35.050 に答える
1

おそらく hostip.info のような API を使用したくない場合は、maxmind にサブスクライブし、ローカルでホスト ルックアップ データベースを実行することをお勧めします。

于 2009-08-13T05:02:17.550 に答える
0

使用できる別のサービスは、場所、組織、およびその他の情報を返す、私自身のhttp://ipinfo.ioです。

$ curl ipinfo.io/8.8.8.8
{
  "ip": "8.8.8.8",
  "hostname": "google-public-dns-a.google.com",
  "loc": "37.385999999999996,-122.0838",
  "org": "AS15169 Google Inc.",
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "phone": 650
}

詳細については、 http://ipinfo.io/developersを参照してください。

于 2014-08-30T02:40:45.433 に答える
0

IPAddress を UInt32 に変換するための拡張クラスを次に示します。@vlamの回答からリファクタリングされたコード

using System.Net;

namespace Module.IP2Location.Core.Extensions;

public static class IPAddressExtensions
{

    public static UInt32 ToUInt(this IPAddress address)
    {

        byte[] addrBytes = address.GetAddressBytes();
        if (BitConverter.IsLittleEndian)
        {
            List<byte> byteList = new List<byte>(addrBytes);
            byteList.Reverse();
            addrBytes = byteList.ToArray();
        }
        UInt32 ipno = 0;
        ipno = BitConverter.ToUInt32(addrBytes, 0);
        return ipno;
    }

}
于 2021-12-06T10:06:05.200 に答える
0

これは、 IP Geolocation APIを使用して簡単に行うことができます。

国、州、都市、タイムゾーン、および郵便番号を返します。また、https://geo.ipify.org/docsにアクセスして、無料でお試しください。それがどうなるか教えてください。

于 2019-11-24T10:48:38.183 に答える