Python/PHP:免费IP归属地查询接口和通过ip获取大致位置信息

简介: Python/PHP:免费IP归属地查询接口和通过ip获取大致位置信息

1、淘宝API接口:


文档:http://ip.taobao.com/instructions


示例:


GET http://ip.taobao.com/outGetIpInfo?ip=221.218.209.125&accessKey=alibaba-inc
{
    data: {
        area: "",
        country: "中国",
        isp_id: "100026",
        queryIp: "221.218.209.125",
        city: "北京",
        ip: "221.218.209.125",
        isp: "联通",
        county: "",
        region_id: "110000",
        area_id: "",
        county_id: null,
        region: "北京",
        country_id: "CN",
        city_id: "110100"
    },
    msg: "query success",
    code: 0
}

2、IP-API接口:


文档:https://ip-api.com/docs/api:json


示例:


GET http://ip-api.com/json/221.218.209.125?lang=zh-CN
{
    status: "success",
    country: "中国",
    countryCode: "CN",
    region: "BJ",
    regionName: "北京市",
    city: "北京",
    zip: "",
    lat: 39.9285,
    lon: 116.385,
    timezone: "Asia/Shanghai",
    isp: "China Unicom Beijing Province Network",
    org: "",
    as: "AS4808 China Unicom Beijing Province Network",
    query: "221.218.209.125"
}

3、太平洋IP接口:


文档:http://whois.pconline.com.cn/


示例:


GET http://whois.pconline.com.cn/ipJson.jsp?ip=221.218.209.125&json=true


{

   ip: "221.218.209.125",

   pro: "北京市",

   proCode: "110000",

   city: "北京市",

   cityCode: "110000",

   region: "海淀区",

   regionCode: "110108",

   addr: "北京市海淀区 联通ADSL",

   regionNames: "",

   err: ""

}

参考

免费IP归属地查询接口汇总


代码实现

网络请求库,使用 Requests(PHP:rmccue/requests进行网络请求)


通过ip获取位置信息不太准确,需要对获取的省市县三级区域码做判断处理


<?php
namespace app\service;
use app\common\AppException;
use Requests;
class IpService
{
    public static function getIpInfo($ip)
    {
        $base_url = 'http://whois.pconline.com.cn/ipJson.jsp';
        $params = [
            'ip'   => $ip,
            // 注意,此处不能写boolean值,需要给string
            'json' => 'true'
        ];
        $url = $base_url . '?' . http_build_query($params);
        $response = Requests::get($url);
        if ($response->success) {
            // 编码转换处理,并移除字符串两边的空白
            $body=iconv("GBK", "UTF-8", trim($response->body));
            $data = json_decode($body, true);
            // 优先取区县码
            $code = $data['regionCode'];
            // 其次取城市码
            if (!self::isRegionCode($code)) {
                $code = $data['cityCode'];
            }
            //再次取省份码
            if (!self::isRegionCode($code)) {
                $code = $data['proCode'];
            }
            return [
                'ip'   => $data['ip'],
                'code' => $code
            ];
            // 此处仅返回区位码即可
            return [
                'ip'   => $data['ip'],
                'code' => $data['regionCode'],
            ];
        } else {
            throw new AppException('ip信息获取失败');
        }
    }
    public static function isRegionCode($code)
    {
        if (empty($code) || count($code) != 6) {
            return false;
        } else {
            return true;
        }
    }
}

异常类


<?php
namespace app\common;
use Exception;
/**
 * 自定义的业务异常
 * Class AppException
 * @package app\common
 */
class AppException extends Exception
{
}
相关文章
|
4月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
5月前
|
缓存 监控 算法
唯品会item_search - 按关键字搜索 VIP 商品接口深度分析及 Python 实现
唯品会item_search接口支持通过关键词、分类、价格等条件检索商品,广泛应用于电商数据分析、竞品监控与市场调研。结合Python可实现搜索、分析、可视化及数据导出,助力精准决策。
|
5月前
|
缓存 监控 算法
苏宁item_get - 获得商品详情接口深度# 深度分析及 Python 实现
苏宁易购item_get接口可实时获取商品价格、库存、促销等详情,支持电商数据分析与竞品监控。需认证接入,遵守调用限制,适用于价格监控、销售分析等场景,助力精准营销决策。(238字)
|
5月前
|
监控 算法 数据安全/隐私保护
唯品会 item_get - 获得 VIP 商品详情接口深度分析及 Python 实现
唯品会item_get接口通过商品ID获取商品详情,支持价格、库存、促销等数据抓取,适用于电商分析、竞品监控与价格追踪,结合Python实现可高效完成数据获取、分析与可视化,助力精准营销决策。
|
5月前
|
JSON 缓存 供应链
电子元件 item_search - 按关键字搜索商品接口深度分析及 Python 实现
本文深入解析电子元件item_search接口的设计逻辑与Python实现,涵盖参数化筛选、技术指标匹配、供应链属性过滤及替代型号推荐等核心功能,助力高效精准的电子元器件搜索与采购决策。
|
5月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
5月前
|
关系型数据库 MySQL PHP
PHP和Mysql前后端交互效果实现
本文介绍了使用PHP连接MySQL数据库的基本函数及其实现案例。内容涵盖数据库连接、选择数据库、执行查询、获取结果等常用操作,并通过用户登录和修改密码的功能实例,展示了PHP与MySQL的交互过程及代码实现。
392 0
PHP和Mysql前后端交互效果实现
|
10月前
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
507 17
|
11月前
|
关系型数据库 MySQL PHP
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
333 18

推荐镜像

更多