网站LOGO
静若安然
页面加载中
11月11日
网站LOGO 静若安然
记录个人学习生活和成长历程
菜单
  • 热评
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    利用api获取访客ip
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。

    利用api获取访客ip

    Akria · 原创 ·
    Web开发 · API接口开发
    共 4594 字 · 约 1 分钟 · 4394
    本文最后更新于2024年03月07日,已经过了248天没有更新,若内容或图片失效,请留言反馈

    演示

    • 利用太平洋网络ip接口返回访客城市
    • 不建议使用这种,网站启用https时pc端会拦截从不安全源加载链接
    • 页面输出,在合适的位置加入
    html 代码:
    <span class="area_city"></span>
    • 以下是js代码,在首尾加上script标签
    js 代码:
    function IPCallBack(data){
                document.querySelector(".area_city").innerHTML = data.city;
            }
            function guid() {
                return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
                    let r = Math.random() * 16 | 0,
                        v = c === 'x' ? r : (r & 0x3 | 0x8);
                    return v.toString(16);
                });
            }
            function onScriptLoaded(id){
                // 删除添加的script标签
                document.body.removeChild(document.getElementById(id));
            }
            function sendReq(url){
                let script = document.createElement("script");
                script.src = url;
                script.type = "text/javascript";
                let ranId = guid();
                script.setAttribute("id", ranId);
                if(script.readyState){
                    // ie
                    script.onreadystatechange = function(){
                        if(this.readyState === "complete" || this.readyState === "loaded"){
                            onScriptLoaded(ranId);
                        }
                    }
                }else{
                    // 其他
                    script.onload = function(){
                        onScriptLoaded(ranId);
                    }
                }
                document.body.appendChild(script);
            }
            sendReq("http://whois.pconline.com.cn/ipJson.jsp");
    • 利用私人api接口输出访客城市
    • 将上面的js代码换为以下即可
    js 代码:
    function getCity(){
                return new Promise((resolve, reject) => {
                    fetch("https://api.gmit.vip/Api/IP").then((res) => {
                        return res.json();
                    }).then((data) => {
                        resolve(data);
                    }).catch((e) => {
                        reject(e);
                    });
                });
            }
            async function setCity(){
                let city = await getCity();
                try{
                    document.querySelector(".area_city").innerHTML = city.data.location.country.split(" ")[2];
                }catch (e) {
                }
            }
            setCity();
    • 建议使用第二种,使用fetch,https

    • 利用iframe输出
    html 代码:
    <iframe width="300" height="30" frameborder="0" scrolling="no" src="http://whois.pconline.com.cn/ip.jsp"></iframe>

    ip归属地查询API

    json 代码:
    {
        "status": "0",
        "t": "",
        "set_cache_time": "",
        "data": [
            {
                "location": "广东省广州市 移动",
                "titlecont": "IP地址查询",
                "origip": "117.136.12.79",
                "origipquery": "117.136.12.79",
                "showlamp": "1",
                "showLikeShare": 1,
                "shareImage": 1,
                "ExtendedLocation": "",
                "OriginQuery": "117.136.12.79",
                "tplt": "ip",
                "resourceid": "6006",
                "fetchkey": "117.136.12.79",
                "appinfo": "",
                "role_id": 0,
                "disp_type": 0
            }
        ]
    }
    json 代码:
    {
        "ip": "117.136.12.79",
        "pro": "广东省",
        "proCode": "440000",
        "city": "佛山市",
        "cityCode": "440600",
        "region": "",
        "regionCode": "0",
        "addr": "广东省佛山市 移动",
        "regionNames": "",
        "err": ""
    }

    json 代码:
    {"timestamp":1662911888472,"client_ips":["114.45.4.209"],"client_ip":"114.45.4.209"}
    json 代码:
    {"success":true,
    "Ip":"122.139.228.123",
    "Country":"中国",
    "Province":"吉林省",
    "County":"二道区",
    "City":"长春市",
    "adcode":220105,
    "Latitude":43.86497,
    "Longitude":125.37427}
    声明:本文由 Akria(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    现在已有

    2

    条评论
    我要发表评论
    1. 头像
      吕舒君
      • 等级:Lv.1
      • 角色:访客
      • 在线:很久之前

      想问博主现在您这个IP属地是怎么实现的?

      · · · 浙江-杭州
      1. 头像
        Anran 吕舒君

        ip离线库获取的

        · · · 海外
    博客logo 静若安然 记录个人学习生活和成长历程 51统计 百度统计
    ICP 蜀ICP备2023037012号-1

    💻️ Akria 昨天 17:15 在线

    🕛

    本站已运行 7 年 77 天 19 小时 24 分
    静若安然. © 2017 ~ 2024.
    网站logo

    静若安然 记录个人学习生活和成长历程