开源api_开源IP地理位置API

2023-11-04

开源api

Geo-location is the identification or estimation of the real-world geographic location of an Internet-connected computer terminal or device.

地理位置是对互联网连接的计算机终端或设备的真实地理位置的标识或估计。

Basically, we can get location data from their IP address.

基本上,我们可以从其IP地址获取位置数据。

Geo-location offers a lot of advantages and increase level of customization to a website. We can:

地理位置提供了很多优势,并提高了网站的自定义级别。 我们可以:

  • Give users data in their language.

    向用户提供其语言的数据。
  • With knowlege of cultural differences, properly represent data.

    具有文化差异的知识,可以正确地代表数据。
  • Build a security layer/firewall

    建立安全层/防火墙

and many, many more features.

还有很多其他功能

If you do a Google search, there are many services that offer Geo-location for a price. Or, companies like MaxMind that offer a subset of the data they’ve gathered over the years for free.

如果您进行Google搜索,则有许多服务可以按价格提供地理位置。 或者,像MaxMind这样的公司免费提供了这些年来收集的部分数据。

With companies like MaxMind, you have to download their database every now and then to make sure the data is up to date, manage your own servers, and all other house-keeping. That’s what IP Geolocation API will do for you.

对于像MaxMind这样的公司,您必须不时下载其数据库,以确保数据是最新的,管理自己的服务器以及所有其他整理工作。 这就是IP Geolocation API会为您做的。

什么是IP地理位置API及其如何工作 ( What is IP Geolocation API and How Does it Work )

IP Geolocation API, is a free to use Geo-location service.

IP Geolocation API ,是免费使用的Geo-location服务。

The code is open-source which means you can deploy your version of the product and let it run all the house keeping for you. It is written in Python. So, if you need to fork and modify, you probably need to know how to code in Python.

该代码是开源的 ,这意味着您可以部署产品的版本,并让它为您管理所有事务。 它是用Python编写的。 因此,如果您需要进行派生和修改,则可能需要了解如何使用Python进行编码。

When a request comes into the application,

当请求进入应用程序时,

如何部署独立版本 ( How to Deploy a Standalone Version )

Heroku is probably the best option since it’s managed.. If you already use Heroku, you can do a quick deploy by clicking this link.

Heroku可能是最好的选择,因为它已经被管理。如果您已经在使用Heroku,则可以通过单击此链接进行快速部署。

Another reason to use heroku is that whenever the database gets updated, deployment is very easy.

使用heroku的另一个原因是,每当数据库更新时,部署都很容易。

使用API ( Using the API )

Currently, the API has four HTTP endpoints. **Don’t leave the slash at the end of the URL**.

目前,API有四个HTTP端点。 **不要在网址末尾加斜杠**。

GET https://api.ipgeolocationapi.com/geolocate HTTP/1.1
GET https://api.ipgeolocationapi.com/geolocate/<ip> HTTP/1.1
GET https://api.ipgeolocationapi.com/countries HTTP/1.1
GET https://api.ipgeolocationapi.com/countries/<country_code> HTTP/1.1
  • /geolocate will automatically detect the users IP address and return the location data.

    /geolocate将自动检测用户的IP地址并返回位置数据。

  • /geolocate/<ip> requires you to supply the users IP address and returns the same data as /geolocate

    /geolocate/<ip>要求您提供用户IP地址并返回与/geolocate相同的数据

  • /countries returns a list of the countries in the database and all the information they have about them.

    /countries返回数据库中的国家/countries列表,以及有关它们的所有信息。

  • /countries/<country_code> returns the information about one country.

    /countries/<country_code>返回有关一个国家的信息。

Note: If you deployed your own version, you’ll want to replace _https://api.ipgeolocationapi.com with your own domain_

注意:如果您部署了自己的版本,则需要将_ https://api.ipgeolocationapi.com替换为您自己的domain_

Making a request to https://api.ipgeolocationapi.com/geolocate will give you:

https://api.ipgeolocationapi.com/geolocate发出请求将为您提供:

{
       "continent":"Europe",
       "address_format":"{{recipient}}\n{{street}}\n{{postalcode}} {{city}}\n{{country}}",
       "alpha2":"DE",
       "alpha3":"DEU",
       "country_code":"49",
       "international_prefix":"00",
       "ioc":"GER",
       "gec":"GM",
       "name":"Germany",
       "national_destination_code_lengths":[
          2,
          3,
          4,
          5
       ],
       "national_number_lengths":[
          6,
          7,
          8,
          9,
          10,
          11
       ],
       "national_prefix":"0",
       "number":"276",
       "region":"Europe",
       "subregion":"Western Europe",
       "world_region":"EMEA",
       "un_locode":"DE",
       "nationality":"German",
       "eu_member":true,
       "eea_member":true,
       "vat_rates":{
          "standard":19,
          "reduced":[
             7
          ],
          "super_reduced":null,
          "parking":null
       },
       "postal_code":true,
       "unofficial_names":[
          "Germany",
          "Deutschland",
          "Allemagne",
          "Alemania",
          "ドイツ",
          "Duitsland"
       ],
       "languages_official":[
          "de"
       ],
       "languages_spoken":[
          "de"
       ],
       "geo":{
          "latitude":51.165691,
          "latitude_dec":"51.20246505737305",
          "longitude":10.451526,
          "longitude_dec":"10.382203102111816",
          "max_latitude":55.0815,
          "max_longitude":15.0418962,
          "min_latitude":47.2701115,
          "min_longitude":5.8663425,
          "bounds":{
             "northeast":{
                "lat":55.0815,
                "lng":15.0418962
             },
             "southwest":{
                "lat":47.2701115,
                "lng":5.8663425
             }
          }
       },
       "currency_code":"EUR",
       "start_of_week":"monday"
    }

With one request, the API can infer that my Iocation is Germany, the currency, longitude and latitude and so much more.

通过一个请求,API可以推断出我的Iocation是德国,货币,经度和纬度等等。

结论 ( Conclusion )

If you find this project useful, be sure to give them a star on Github, make contributions and support the author however you can. Thanks!

如果您觉得这个项目有用,请确保在Github上给他们一个星,并尽力为作者提供支持。 谢谢!

翻译自: https://scotch.io/tutorials/open-source-ip-geo-location-api

开源api

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开源api_开源IP地理位置API 的相关文章

  • Hazelcast:连接到远程集群

    我们有一组 Hazelcast 节点 全部运行在一个远程系统 具有许多节点的单个物理系统 上 我们希望从外部客户端连接到该集群 一个 Java 应用程序 它使用如下代码连接到 Hazelcast ClientConfig clientCon
  • EJB 中 @Stateless 相对于 @Singleton 的真正用例是什么

    如果我正确理解EJB Singleton实际上与普通Java中的Singleton相同 也是spring中的单例 gt 一个实例 每个调用同时通过同一个实例 Stateless 声明一个 bean 它可以 但不得 具有多个实例 但限制是一个
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • Tensorflow 与 Keras 的兼容性

    我正在使用 Python 3 6 和 Tensorflow 2 0 并且有一些 Keras 代码 import keras from keras models import Sequential from keras layers impo
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h)

    我正在尝试使用 GTK 构建一个 hello world 其中包括以下行 include
  • 在片段之间切换时底部导航栏会向下推

    在我的活动中 我有一个底部导航栏和框架布局来显示片段 一切正常 但问题是当我开始按顺序从 1 4 移动时 底部导航栏保持在其位置 但当我突然从 4 跳到2 然后底部导航栏就会超出屏幕 当再次单击同一项目时 它就会回到正常位置 该视频将清楚地
  • 使用 Pandas 计算 delta 列

    我有一个数据框 如下所示 Name Variable Field A 2 3 412 A 2 9 861 A 3 5 1703 B 3 5 1731 A 4 0 2609 B 4 0 2539 A 4 6 2821 B 4 6 2779 A
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • Java给定长度的随机数

    我需要在 Java 中生成一个恰好 6 位数字的随机数 我知道我可以在随机发生器上循环 6 次 但是在标准 Java SE 中还有其他方法可以做到这一点吗 要生成 6 位数字 Use Random http download oracle
  • 线程上下文类加载器和普通类加载器的区别

    线程的上下文类加载器和普通类加载器有什么区别 也就是说 如果Thread currentThread getContextClassLoader and getClass getClassLoader 返回不同的类加载器对象 将使用哪一个
  • Anaconda 无法导入 ssl 但 Python 可以

    Anaconda 3 Jupyter笔记本无法导入ssl 但使用Atom终端导入ssl没有问题 我尝试在 Jupyter 笔记本中导入 ssl 但出现以下错误 C ProgramData Anaconda3 lib ssl py in
  • Javac 版本 1.7 无法为目标 1.7 构建

    我试图在 Linux Mint 系统上使用 Sun Java JDK 1 7 0 17 编译 Java 代码 但遇到了这个问题 javac version target 1 7 javac 1 7 0 17 javac invalid ta
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 检查 Java 字符串实例是否可能包含垃圾邮件数据的最简单方法

    我有一个迭代 String 实例的过程 每次迭代对 String 实例执行很少的操作 最后 String 实例被持久化 现在 我想为每次迭代添加一个检查 String 实例是否可能是垃圾邮件的检查 我只需验证 String 实例不是 成人材
  • 双击打开 ipython 笔记本

    相关文章 通过双击 osx 打开 ipython 笔记本 https stackoverflow com questions 16158893 open an ipython notebook via double click on osx
  • 从 pandas DataFrame 中删除少于 K 个连续 NaN

    我正在处理时间序列数据 我在从数据帧列中删除小于或等于阈值的连续 NaN 时遇到问题 我尝试查看一些链接 例如 标识连续 NaN 出现的位置以及计数 Pandas NaN 孔的游程长度 https stackoverflow com que
  • 查找总和为给定数字的值组合的函数

    这个帖子查找提供的 Sum 值的组合 https stackoverflow com a 20194023 1561176呈现函数subsets with sum 它在数组中查找总和等于给定值的值的组合 但由于这个帖子已经有6年多了 我发这

随机推荐

  • 测试项目:车牌检测,行人检测,红绿灯检测,人流检测,目标识别

    本项目为2020年中国软件杯 组第一批赛题 基于计算机视觉的交通场景智能应用 项目用python实现 主要使用YOLO模型实现道路目标如人 车 交通灯等物体的识别 使用开源的 中文车牌识别HyperLPR 项目实现车牌识别功能 github
  • OpenWRT UCI介绍及相关处理库

    OpenWRT UCI介绍及相关处理库 文章目录 OpenWRT UCI介绍及相关处理库 1 前言 2 概念 3 UCI配置文件 4 文件语法 5 命令行实用工具 5 1 用法 5 2 示例 导出整个配置 查看所有配置项的值 查看特定选项的
  • [Dotween] 介绍与使用,和坑

    Dotween 是在unity里实现各种动画效果 比如 位移 transform DoMove 旋转 transform DoRotation 缩放 transform DoScale 颜色改变 image DoColor 延时调用 Dov
  • QT中的QVariant类型-万能变量

    转自 https blog csdn net xiaopei yan article details 81410092 前言 QVariant这个类很神奇 或者说方便 很多时候 需要几种不同的数据类型需要传递 如果用结构体 又不大方便 容器
  • Vue前端自动化测试-Vue Test Utils

    Vue Test Utils简介 vue test utils是vue官方的单元测试框架 提供了一系列非常方便的工具 使我们更轻松地为vue构建的应用来编写单元测试 主流的JavaScript测试运行器有很多 但vue test utils
  • 中国人民大学和加拿大女王大学,学历的提升也是竞争力的提升

    如果想要读研提升自己在工作岗位上的竞争力和专业能力 报考在职研究生是一共非常不错的方式 在职研究生顾名思义就说国家计划内 以在职人员的身份 部分时间在职工作 部分时间在校学习的一种研究生类型 也是我国高等教育的重要组成部分 中国人民大学和加
  • 西洋经济史的趣味-赖建诚

    1990年代 台湾清华大学西洋经济史的老师 将的都是一些趣味性和严肃性的东西 明白一些经济学常识 1 经济学史到1993年 两个人获得诺贝尔经济学奖之后 才收到重视 2 这本书讲到了经济学史的重要性 3 火车轨道为什么是四尺八寸 因为这是国
  • web前端笔记

    web前端笔记 css选择器 标记选择器 如 div p 标签p id选择器 id class选择器 类名 通配符选择器 css文件外部链接 属性与属性之间用空格隔开 不是用逗号 HTML标签 双标签 p p 段落标签 标题标签 p h1
  • 微信开发 接口配置失败的坑新手注意

    申请的SAE 用来微信开发 填写完URL TOKEN后总会莫名其妙的爆出配置失败 如下的错误 出现这种原因有如下的原因 看你中招了没 1 最基本的检查这两个地方是否正确 怎么检查 不用我说吧 2 当发现上面的填写没问题 那就看这个你中招没
  • pandoc(markdown、latex、pdf、word相互转换的命令行工具)

    Markdown Pandoc 打通写作界的任督二脉 duqi yc的专栏 博客频道 CSDN NET http blog csdn net duqi yc article details 8974041 中文markdown转pdf Fl
  • java堆年轻代_Java堆(年轻代 -- 老年代 -- 永久代)

    JVM所管理的内存空间中 Java堆是最大的一块 主要用于存放各类实例对象 如下图 JVM中的堆被划分为两个不同区域 新生代Young 老年代Old 新生代又划分为Eden 伊甸 标志新生 Survivor0 s0 Survivor s1
  • 使用IDEA打包springcloud项目的jar包并发布至linux服务器

    前言 首先保证自己的springcloud项目在本地跑的通的 使用springcloud有可能缺少依赖的jar包 报 Java 程序包xxxx不存在 出现这种情况 因为配置Java的程序包这块出现了错误 同时可能你还没有设置让IDEA自动加
  • 【2023知乎爬虫】批量获取问题的全部回答

    一 需求 爬取任意问题下的所有回答 如下图 1 根据问题 批量获取问题下的所有回答 与对应问题的关系到answer csv文件 2 保存当前问题基本信息到quesiton info csv文件 二 展示爬取结果 三 讲解步骤 3 1 新建项
  • 《动手学深度学习 Pytorch版》 4.4 模型选择、欠拟合和过拟合

    4 4 1 训练误差和泛化误差 整节理论 详见书本 4 4 2 模型选择 整节理论 详见书本 4 4 3 欠拟合还是过拟合 整节理论 详见书本 4 4 4 多项回归 import math import numpy as np import
  • 表格嵌套表格数据

    表格嵌套表格数据 通常我们做联表查询 为了接收返回的数据我们往往需要书写一个类 这个类包含着接收两张表的数据字段 如下图 这是一种写法 但是如果面对一张表里的字段太多 那就得一个个去将这些字段写进类里 这种写法还可能让你的代码看上去比较繁杂
  • 手把手教你搭建ROS阿克曼转向小车之(霍尔编码器数据读取与速度计算)

    上一篇文章已经介绍了如何驱动直流有刷电机转动起来 这篇文章讲解如何获取编码器的计数值 并且计算出速度信息 在实际的运行中 随着机器的重量不一样 电机受到的阻力就会不一样 给定同样的PWM在不同载重的情况下速度会不一样 要解决这个问题就需要引
  • RFID自助借还书机给图书馆带来的优势

    自助借还书机系统是智慧图书馆的主要组成部分 自助借还书机系统主要通过对粘贴有电子标签或条形码的图书进行扫描识别 将其信息反馈到自助借还书机系统当中进行处理 自动完成借阅与归还 自助借还书机的操作页面简洁 用户操作快捷方便 而且其硬件设备简洁
  • 李沐大神动手学深度学习——学习笔记(不定期连载)

    最近在看李沐大佬的动手学深度学习 讲的非常基础 从很基础的开始讲 很易懂 这里记一些在之前没碰到过的在他代码里出现过的写法 and一些问题 当做学习记录 不定期连载更新 简单的目录 前12集 1 torch的tensor高级索引用法 2 p
  • 《machine learning》3线性代数

    3 1 矩阵和向量 矩阵Matrix Recrangular array of numbers R 4 2 R 4 2 R4 2 4行2列矩阵 矩阵的项
  • 开源api_开源IP地理位置API

    开源api Geo location is the identification or estimation of the real world geographic location of an Internet connected co