商品分类
IP地址转国家名称
通过IP地址获取国家名称,简化了数据包大小,非常适合网站需要Block的人群
价格
¥1

4人在使用

优质服务商家

7*8小时在线客服

专业测试保证品质

API文档

IP地址转国家名称

调用地址:https://service-kmskkjqh-1251396019.ap-shanghai.apigateway.myqcloud.com/release/IP/ToCountry

请求方式:GET

返回类型:JSON

API调用: API调用说明(secret_id & secret_key)

请求参数(Headers)

名称
类型
是否必须
描述
暂无数据

请求参数(Query)

名称
类型
是否必须
描述
IP
string
IP地址

请求参数(Body)

名称
类型
是否必须
描述
暂无数据

请求示例

# -*- coding: utf-8 -*-
from __future__ import print_function

import ssl, hmac, base64, hashlib
from datetime import datetime as pydatetime

try:
    from urllib import urlencode
    from urllib2 import Request, urlopen
except ImportError:
    from urllib.parse import urlencode
    from urllib.request import Request, urlopen

# 云市场分配的密钥Id
secretId = "xxxx"
# 云市场分配的密钥Key
secretKey = "xxxx"
source = "market"

# 签名
datetime = pydatetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')
signStr = "x-date: %s\nx-source: %s" % (datetime, source)
sign = base64.b64encode(hmac.new(secretKey.encode('utf-8'), signStr.encode('utf-8'), hashlib.sha1).digest())
auth = 'hmac id="%s", algorithm="hmac-sha1", headers="x-date x-source", signature="%s"' % (secretId, sign.decode('utf-8'))

# 请求方法
method = 'GET'
# 请求头
headers = {
    'X-Source': source,
    'X-Date': datetime,
    'Authorization': auth,
}
# 查询参数
queryParams = {
    'IP': ''}
# body参数(POST方法下存在)
bodyParams = {
}
# url参数拼接
url = 'https://service-kmskkjqh-1251396019.ap-shanghai.apigateway.myqcloud.com/release/IP/ToCountry'
if len(queryParams.keys()) > 0:
    url = url + '?' + urlencode(queryParams)

request = Request(url, headers=headers)
request.get_method = lambda: method
if method in ('POST', 'PUT', 'PATCH'):
    request.data = urlencode(bodyParams).encode('utf-8')
    request.add_header('Content-Type', 'application/x-www-form-urlencoded')
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
response = urlopen(request, context=ctx)
content = response.read()
if content:
    print(content.decode('utf-8'))
curl -v -X GET https://service-kmskkjqh-1251396019.ap-shanghai.apigateway.myqcloud.com/release/IP/ToCountry ?IP=-H 'Host:service-kmskkjqh-1251396019.ap-shanghai.apigateway.myqcloud.com' -H 'Source:source' -H 'Date:Mon, 19 Mar 2018 12:08:40 GMT' -H 'Authorization:hmac id = "AKIDi6qE41WgJ9w8h4h9zq68Vq24d1beIuN0qIwU", algorithm = "hmac-sha1", headers = "date source", signature = yMCxXNytW5nvVGNZ8aBtRxmiLJ4=' -H 'X-Requested-With:XMLHttpRequest' 
//请用云市场分配给您的密钥计算签名并放入请求头,Date为当前的GMT时间
<?php
// 云市场分配的密钥Id
$secretId = 'xxxx';
// 云市场分配的密钥Key
$secretKey = 'xxxx';
$source = 'market';

// 签名
$datetime = gmdate('D, d M Y H:i:s T');
$signStr = sprintf("x-date: %s\nx-source: %s", $datetime, $source);
$sign = base64_encode(hash_hmac('sha1', $signStr, $secretKey, true));
$auth = sprintf('hmac id="%s", algorithm="hmac-sha1", headers="x-date x-source", signature="%s"', $secretId, $sign);

// 请求方法
$method = 'GET';
// 请求头
$headers = array(
    'X-Source' => $source,
    'X-Date' => $datetime,
    'Authorization' => $auth,
);
// 查询参数
$queryParams = array (
    'IP' => '',
);
// body参数(POST方法下)
$bodyParams = array (
);
// url参数拼接
$url = 'https://service-kmskkjqh-1251396019.ap-shanghai.apigateway.myqcloud.com/release/IP/ToCountry';
if (count($queryParams) > 0) {
    $url .= '?' . http_build_query($queryParams);
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_HTTPHEADER, array_map(function ($v, $k) {
    return $k . ': ' . $v;
}, array_values($headers), array_keys($headers)));
if (in_array($method, array('POST', 'PUT', 'PATCH'), true)) {
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($bodyParams));
}

$data = curl_exec($ch);
if (curl_errno($ch)) {
    echo "Error: " . curl_error($ch);
} else {
    print_r($data);
}
curl_close($ch);
/**
 * npm install crypto-js request
 */
var CryptoJS = require("crypto-js");
var request = require('request');
var querystring = require('querystring');

// 云市场分配的密钥Id
var secretId = "xxx";
// 云市场分配的密钥Key
var secretKey = "xxx";
var source = "market";

// 签名
var datetime = (new Date()).toGMTString();
var signStr = "x-date: " + datetime + "\n" + "x-source: " + source;
var sign = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA1(signStr, secretKey))
var auth = 'hmac id="' + secretId + '", algorithm="hmac-sha1", headers="x-date x-source", signature="' + sign + '"';

// 请求方法
var method = 'GET';
// 请求头
var headers = {
    "X-Source": source,
    "X-Date": datetime,
    "Authorization": auth,
}
// 查询参数
var queryParams = {
    'IP': ''}
// body参数(POST方法下)
var bodyParams = {
}
// url参数拼接
var url = 'https://service-kmskkjqh-1251396019.ap-shanghai.apigateway.myqcloud.com/release/IP/ToCountry';
if (Object.keys(queryParams).length > 0) {
    url += '?' + querystring.stringify(queryParams);
}

var options = {
    url: url,
    timeout: 5000,
    method: method,
    headers: headers
}
if (['POST', 'PUT', 'PATCH'].indexOf(method) != -1) {
    options['body'] = querystring.stringify(bodyParams);
    options['headers']['Content-Type'] = "application/x-www-form-urlencoded";
}

request(options, function (error, response, body) {
    if (error !== null) {
        console.log('error:', error);
        return;
    }
    console.log(body);
});
package main

import (
    "crypto/hmac"
    "crypto/sha1"
    "encoding/base64"
    "fmt"
    "io"
    "io/ioutil"
    "net/http"
    gourl "net/url"
    "strings"
    "time"
)

func calcAuthorization(source string, secretId string, secretKey string) (auth string, datetime string, err error) {
    timeLocation, _ := time.LoadLocation("Etc/GMT")
    datetime = time.Now().In(timeLocation).Format("Mon, 02 Jan 2006 15:04:05 GMT")
    signStr := fmt.Sprintf("x-date: %s\nx-source: %s", datetime, source)

    // hmac-sha1
    mac := hmac.New(sha1.New, []byte(secretKey))
    mac.Write([]byte(signStr))
    sign := base64.StdEncoding.EncodeToString(mac.Sum(nil))

    auth = fmt.Sprintf("hmac id=\"%s\", algorithm=\"hmac-sha1\", headers=\"x-date x-source\", signature=\"%s\"",
        secretId, sign)

    return auth, datetime, nil
}

func urlencode(params map[string]string) string {
    var p = gourl.Values{}
    for k, v := range params {
        p.Add(k, v)
    }
    return p.Encode()
}

func main() {
    // 云市场分配的密钥Id
    secretId := "xxxx"
    // 云市场分配的密钥Key
    secretKey := "xxxx"
    source := "market"

    // 签名
    auth, datetime, _ := calcAuthorization(source, secretId, secretKey)

    // 请求方法
    method := "GET"
    // 请求头
    headers := map[string]string{"X-Source": source, "X-Date": datetime, "Authorization": auth}

    // 查询参数
    queryParams := make(map[string]string)
    queryParams["IP"] = ""
    // body参数
    bodyParams := make(map[string]string)

    // url参数拼接
    url := "https://service-kmskkjqh-1251396019.ap-shanghai.apigateway.myqcloud.com/release/IP/ToCountry"
    if len(queryParams) > 0 {
        url = fmt.Sprintf("%s?%s", url, urlencode(queryParams))
    }

    bodyMethods := map[string]bool{"POST": true, "PUT": true, "PATCH": true}
    var body io.Reader = nil
    if bodyMethods[method] {
        body = strings.NewReader(urlencode(bodyParams))
        headers["Content-Type"] = "application/x-www-form-urlencoded"
    }

    client := &http.Client{
        Timeout: 5 * time.Second,
    }
    request, err := http.NewRequest(method, url, body)
    if err != nil {
        panic(err)
    }
    for k, v := range headers {
        request.Header.Set(k, v)
    }
    response, err := client.Do(request)
    if err != nil {
        panic(err)
    }
    defer response.Body.Close()

    bodyBytes, err := ioutil.ReadAll(response.Body)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(bodyBytes))
}
using System.IO;
using System.Text;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System;


public class CsharpTest
{
    public static String HMACSHA1Text(String EncryptText, String EncryptKey)
    {
            HMACSHA1 hmacsha1 = new HMACSHA1();
            hmacsha1.Key = System.Text.Encoding.UTF8.GetBytes(EncryptKey);

            byte[] dataBuffer = System.Text.Encoding.UTF8.GetBytes(EncryptText);
            byte[] hashBytes = hmacsha1.ComputeHash(dataBuffer);
            return Convert.ToBase64String(hashBytes);
    }

    public static void Main(String[] args)
    {
        String url = "https://service-kmskkjqh-1251396019.ap-shanghai.apigateway.myqcloud.com/release/IP/ToCountry";
        String method = "GET";
        String querys = "IP=";
        String source = "market";

        //云市场分配的密钥Id
        String  secretId = "xxx";
        //云市场分配的密钥Key
        String  secretKey = "xxx";

        String dt = DateTime.UtcNow.GetDateTimeFormats('r')[0];
        url = url + "?" + querys;

        String signStr = "x-date: " + dt + "\n" + "x-source: " + source;
        String sign = HMACSHA1Text(signStr, secretKey);

        String auth = "hmac id=\"" + secretId + "\", algorithm=\"hmac-sha1\", headers=\"x-date x-source\", signature=\"";
        auth = auth + sign + "\"";
        Console.WriteLine(auth + "\n");

        HttpWebRequest httpRequest = null;
        HttpWebResponse httpResponse = null;

        if (url.Contains("https://"))
        {
            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
            httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
        }
        else
        {
            httpRequest = (HttpWebRequest)WebRequest.Create(url);
        }

        httpRequest.Method = method;
        httpRequest.Headers.Add("Authorization", auth);
        httpRequest.Headers.Add("X-Source", source);
        httpRequest.Headers.Add("X-Date", dt);

        try
        {
            httpResponse = (HttpWebResponse)httpRequest.GetResponse();
        }
        catch (WebException ex)
        {
            httpResponse = (HttpWebResponse)ex.Response;
        }

        Console.WriteLine(httpResponse.StatusCode);
        Console.WriteLine(httpResponse.Headers);
        Stream st = httpResponse.GetResponseStream();
        StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8"));
        Console.WriteLine(reader.ReadToEnd());
        Console.WriteLine("\n");

    }

    public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
    {
        return true;
    }
}
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Encoder;


class Demo {
    public static String calcAuthorization(String source, String secretId, String secretKey, String datetime)
            throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {
        String signStr = "x-date: " + datetime + "\n" + "x-source: " + source;
        Mac mac = Mac.getInstance("HmacSHA1");
        Key sKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), mac.getAlgorithm());
        mac.init(sKey);
        byte[] hash = mac.doFinal(signStr.getBytes("UTF-8"));
        String sig = new BASE64Encoder().encode(hash);

        String auth = "hmac id=\"" + secretId + "\", algorithm=\"hmac-sha1\", headers=\"x-date x-source\", signature=\"" + sig + "\"";
        return auth;
    }

    public static String urlencode(Map<?, ?> map) throws UnsupportedEncodingException {
        StringBuilder sb = new StringBuilder();
        for (Map.Entry<?, ?> entry : map.entrySet()) {
            if (sb.length() > 0) {
                sb.append("&");
            }
            sb.append(String.format("%s=%s",
                    URLEncoder.encode(entry.getKey().toString(), "UTF-8"),
                    URLEncoder.encode(entry.getValue().toString(), "UTF-8")
            ));
        }
        return sb.toString();
    }

    public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {
        //云市场分配的密钥Id
        String secretId = "xxxx";
        //云市场分配的密钥Key
        String secretKey = "xxxx";
        String source = "market";

        Calendar cd = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US);
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        String datetime = sdf.format(cd.getTime());
        // 签名
        String auth = calcAuthorization(source, secretId, secretKey, datetime);
        // 请求方法
        String method = "GET";
        // 请求头
        Map<String, String> headers = new HashMap<String, String>();
        headers.put("X-Source", source);
        headers.put("X-Date", datetime);
        headers.put("Authorization", auth);

        // 查询参数
        Map<String, String> queryParams = new HashMap<String, String>();
        queryParams.put("IP", "");
        // body参数
        Map<String, String> bodyParams = new HashMap<String, String>();

        // url参数拼接
        String url = "https://service-kmskkjqh-1251396019.ap-shanghai.apigateway.myqcloud.com/release/IP/ToCountry";
        if (!queryParams.isEmpty()) {
            url += "?" + urlencode(queryParams);
        }

        BufferedReader in = null;
        try {
            URL realUrl = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
            conn.setConnectTimeout(5000);
            conn.setReadTimeout(5000);
            conn.setRequestMethod(method);

            // request headers
            for (Map.Entry<String, String> entry : headers.entrySet()) {
                conn.setRequestProperty(entry.getKey(), entry.getValue());
            }

            // request body
            Map<String, Boolean> methods = new HashMap<>();
            methods.put("POST", true);
            methods.put("PUT", true);
            methods.put("PATCH", true);
            Boolean hasBody = methods.get(method);
            if (hasBody != null) {
                conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

                conn.setDoOutput(true);
                DataOutputStream out = new DataOutputStream(conn.getOutputStream());
                out.writeBytes(urlencode(bodyParams));
                out.flush();
                out.close();
            }

            // 定义 BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            String result = "";
            while ((line = in.readLine()) != null) {
                result += line;
            }

            System.out.println(result);
        } catch (Exception e) {
            System.out.println(e);
            e.printStackTrace();
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
    }
}

正常返回示例

                                                                    {

     "message": "成功",
     "code": 1,
     "value": "中国"
}
                                                                

失败返回示例

                                                                    {
     "message": "失败",
     "code": 0
}
                                                                

返回码定义

返回码
返回信息
描述
无参数

商品介绍

提供全球IP的国家名称查询,定期更新。  

功能特性:

通过IP地址查询返回的数据包极小,网络传输速度快。


应用场景:
各种需要显示用户国家的、需要Block国家的场合

使用指南:
输入IP地址后返回JSON对象,国家名称见下表

美国 US
中国 CN
日本 JP
英国 GB
德国 DE
韩国 KR
法国 FR
巴西 BR
加拿大 CA
意大利 IT
澳大利亚 AU
荷兰 NL
俄罗斯 RU
印度 IN
台湾 TW
瑞典 SE
西班牙 ES
墨西哥 MX
比利时 BE
南非 ZA
波兰 PL
瑞士 CH
阿根廷 AR
印度尼西亚 ID
埃及 EG
哥伦比亚 CO
土耳其 TR
越南 VN
挪威 NO
芬兰 FI
丹麦 DK
乌克兰 UA
奥地利 AT
伊朗 IR
香港 HK
智利 CL
罗马尼亚 RO
捷克 CZ
泰国 TH
沙特阿拉伯 SA
以色列 IL
新西兰 NZ
委内瑞拉 VE
摩洛哥 MA
马来西亚 MY
葡萄牙 PT
爱尔兰 IE
新加坡 SG
欧洲联盟 EU
匈牙利 HU
希腊 GR
菲律宾 PH
巴基斯坦 PK
保加利亚 BG
肯尼亚 KE
阿拉伯联合酋长国 AE
阿尔及利亚 DZ
塞舌尔 SC
突尼斯 TN
秘鲁 PE
哈萨克斯坦 KZ
斯洛伐克 SK
斯洛文尼亚 SI
厄瓜多尔 EC
哥斯达黎加 CR
乌拉圭 UY
立陶宛 LT
塞尔维亚 RS
尼日利亚 NG
克罗地亚 HR
科威特 KW
巴拿马 PA
毛里求斯 MU
白俄罗斯 BY
拉脱维亚 LV
多米尼加共和国 DO
卢森堡 LU
爱沙尼亚 EE
苏丹 SD
格鲁吉亚 GE
安哥拉 AO
玻利维亚 BO
赞比亚 ZM
孟加拉国 BD
巴拉圭 PY
波多黎各 PR
坦桑尼亚 TZ
塞浦路斯 CY
摩尔多瓦 MD
阿曼 OM
冰岛 IS
叙利亚 SY
卡塔尔 QA
波黑 BA
加纳 GH
阿塞拜疆 AZ
马其顿 MK
约旦 JO
萨尔瓦多 SV
伊拉克 IQ
亚美尼亚 AM
马耳他 MT
危地马拉 GT
巴勒斯坦 PS
斯里兰卡 LK
特立尼达和多巴哥 TT
黎巴嫩 LB
尼泊尔 NP
纳米比亚 NA
巴林 BH
洪都拉斯 HN
莫桑比克 MZ
尼加拉瓜 NI
卢旺达 RW
加蓬 GA
阿尔巴尼亚 AL
澳门 MO
利比亚 LY
吉尔吉斯坦 KG
柬埔寨 KH
古巴 CU
喀麦隆 CM
乌干达 UG
塞内加尔 SN
乌兹别克斯坦 UZ
黑山 ME
关岛 GU
牙买加 JM
蒙古 MN
文莱 BN
英属维尔京群岛 VG
留尼旺 RE
库拉索岛 CW
科特迪瓦 CI
开曼群岛 KY
巴巴多斯 BB
马达加斯加 MG
伯利兹 BZ
新喀里多尼亚 NC
海地 HT
马拉维 MW
斐济 FJ
巴哈马 BS
博茨瓦纳 BW
刚果(金) CD
阿富汗 AF
莱索托 LS
百慕大群岛 BM
埃塞俄比亚 ET
美属维尔京群岛 VI
列支敦士登 LI
津巴布韦 ZW
直布罗陀 GI
苏里南 SR
马里 ML
也门 YE
老挝 LA
塔吉克斯坦 TJ
安提瓜和巴布达 AG
贝宁 BJ
法属玻利尼西亚 PF
圣基茨和尼维斯 KN
圭亚那 GY
布基纳法索 BF
马尔代夫 MV
泽西岛 JE
摩纳哥 MC
巴布亚新几内亚 PG
刚果 CG
塞拉利昂 SL
吉布提 DJ
斯威士兰 SZ
缅甸 MM
毛里塔尼亚 MR
法罗群岛 FO
尼日尔 NE
安道尔共和国 AD
阿鲁巴 AW
布隆迪 BI
圣马力诺 SM
利比里亚 LR
冈比亚 GM
不丹 BT
几内亚 GN
圣文森特岛 VC
荷兰加勒比区 BQ
多哥 TG
格陵兰 GL
佛得角 CV
马恩岛 IM
索马里 SO
法属圭亚那 GF
西萨摩亚 WS
土库曼斯坦 TM
瓜德罗普 GP
马里亚那群岛 MP
瓦努阿图 VU
马提尼克 MQ
赤道几内亚 GQ
南苏丹 SS
梵蒂冈 VA
格林纳达 GD
所罗门群岛 SB
特克斯和凯科斯群岛 TC
多米尼克 DM
乍得 TD
汤加 TO
瑙鲁 NR
圣多美和普林西比 ST
安圭拉岛 AI
法属圣马丁 MF
图瓦卢 TV
库克群岛 CK
密克罗尼西亚联邦 FM
根西岛 GG
东帝汶 TL
中非共和国 CF
几内亚比绍 GW
帕劳 PW
东萨摩亚(美) AS
圣皮埃尔和密克隆 PM
厄立特里亚 ER
科摩罗 KM
瓦利斯和富图纳 WF
英属印度洋领地 IO
托克劳 TK
马绍尔群岛 MH
基里巴斯 KI
纽埃 NU
诺福克岛 NF
蒙特塞拉特岛 MS
朝鲜 KP
马约特 YT
圣卢西亚 LC
圣巴泰勒米岛 BL

使用指南

1购买完成后,点击进入控制台

2在控制台点击”管理“查看详情”

3获得API的SecretID和SecretKey后,即可按照商品介绍里的方式调用API

累计评价(0)

为保障您的权益,请勿线下交易!90%的欺诈、纠纷、资金盗窃均由线下交易导致。腾讯云市场为您提供以下服务保障:

优质服务商家

严格准入 提供海量上云服务

7*8小时在线客服

全程在线咨询 助您安心购物

专业测试保证品质

安全监测 保障商品质量

退款售后无忧

不满意可退款 保障售后无忧

卖家服务时间

为保障您的权益,请勿线下交易!90%的欺诈、纠纷、资金盗窃均由线下交易导致。