获取客户端信息。从IP地址
#javascript #网络开发人员 #react #reactnative

IP代表“ Internet协议”。这是一组规则和协议,该规则和协议控制了数据包的发送,接收和路由在Internet上的网络。 IP地址是在使用Internet协议进行通信的网络上分配给设备(例如计算机,服务器和网络设备)的数值标签。

IP地址有两个主要目的:

  1. 主机标识:连接到网络(包括Internet)的每个设备都分配了一个唯一的IP地址。该地址用于识别和在网络上找到设备。它类似于物理位置的街道地址。

  2. 路由:路由器使用IP地址来路由不同网络上的设备之间的数据包。例如,当您将请求发送到网站时,您的请求将分解为数据包,路由器使用目标IP地址确定将每个数据包发送到何处以达到其预期的目的地。

IP地址的主要类型:

  1. ipv4(Internet协议版本4):这是您遇到的最常见的IP地址类型。 IPv4地址由四组数字组成,这些数字分隔为周期(例如,192.168.1.1)。

  2. ipv6(Internet协议版本6):随着连接到Internet的越来越多的设备,IPv6被引入以提供更大的地址空间。 IPv6地址更长,以十六进制格式编写(例如,2001:0db8:85A3:0000:0000:0000:8A2E:0370:7334)。

IP地址是互联网运作方式的基本部分,允许设备在网络上相互通信,并启用为网络,电子邮件,流媒体,在线游戏等提供动力的数据交换。


一体化:

步骤1:
转到Link并创建帐户,然后用令牌登录副本。此URL将用于获取客户信息。

Image description

步骤2:
要获取客户端IP地址,请致电API:
export const GET_IP_ADDRESS_API = 'https://api.bigdatacloud.net/data/client-ip'; //'https://api.ipify.org?format=json'

多数民众赞成,以下是完整的代码示例:


constants.js

export const GET_IP_ADDRESS_API = 'https://api.bigdatacloud.net/data/client-ip'; //'https://api.ipify.org?format=json'

const NEXT_PUBLIC_FIND_IP_KEY = 'dc2b------------1f'; // from https://www.findip.net/

export const getClientDataFromIP = ipAddress =>
  `https://api.findip.net/${ipAddress}/?token=${NEXT_PUBLIC_FIND_IP_KEY}`;

helperFunction.js

export const getIPDataClient = async () => {
  try {
    const response = await fetch(GET_IP_ADDRESS_API);
    const data = await response.json();
    if (data?.ipString) {
      const res = await fetch(getClientDataFromIP(data?.ipString));
      const dataIP = await res.json();
      if (data && dataIP) {
        return {...data, ...dataIP};
      }
    }
    return {};
  } catch (error) {
    return null;
  }
};

HomeScreen.js

    // Call the async function and handle the result
    (async () => {
      try {
        const result = await getIPDataClient();
        console.log('getIPDataClient', result);
        alert(JSON.stringify(result));
      } catch (error) {}
    })();
    // Call the async function and handle the result

响应:

[
  "getIPDataClient",
  {
    "ipString": "xxx.xxx.xxx.xxx",
    "ipNumeric": 34242432,
    "ipType": "IPv4",
    "isBehindProxy": false,
    "city": {
      "geoname_id": 4535342,
      "names": {
        "de": "Neu-Delhi",
        "en": "New Delhi",
        "es": "Nueva Delhi",
        "fr": "New Delhi",
        "ja": "ニューデリー",
        "ko": "뉴델리",
        "pt-BR": "Nova Deli",
        "ru": "Нью-Дели",
        "zh-CN": "新德里"
      }
    },
    "continent": {
      "code": "AS",
      "geoname_id": 4535345,
      "names": {
        "de": "Asien",
        "en": "Asia",
        "es": "Asia",
        "fa": " آسیا",
        "fr": "Asie",
        "ja": "アジア大陸",
        "ko": "아시아",
        "pt-BR": "Ásia",
        "ru": "Азия",
        "zh-CN": "亚洲"
      }
    },
    "country": {
      "geoname_id": 214343,
      "is_in_european_union": false,
      "iso_code": "IN",
      "names": {
        "de": "Indien",
        "en": "India",
        "es": "India",
        "fa": "هند",
        "fr": "Inde",
        "ja": "インド",
        "ko": "인도",
        "pt-BR": "Índia",
        "ru": "Индия",
        "zh-CN": "印度"
      }
    },
    "location": {
      "latitude": 28.6139,
      "longitude": 77.209,
      "time_zone": "Asia/Kolkata",
      "weather_code": "INXX0096"
    },
    "postal": {
      "code": "110001"
    },
    "subdivisions": [
      {
        "geoname_id": 1273293,
        "iso_code": "DL",
        "names": {
          "de": "Delhi",
          "en": "Delhi",
          "fr": "Delhi"
        }
      },
      {
        "geoname_id": 8347332,
        "names": {
          "en": "New Delhi"
        }
      }
    ],
    "traits": {
      "autonomous_system_number": 24560,
      "autonomous_system_organization": "Bharti Airtel Limited",
      "connection_type": "Cable/DSL",
      "isp": "Bharti Airtel",
      "organization": "Bharti Airtel Ltd.",
      "user_type": "residential"
    }
  }
]