制作获取当前设备公网地址IP的API接口,基于FLASK实现的栗子 2021-3-27

需求描述
有很多网站提供查询自己公网IP的服务,但是鉴于部分网络的隔离,部分服务的异常,还是自己弄一个比较稳定,于是有了下面的基于Flask的API

购买了一台便宜的云服务器,不管国内还是海外的
默认安装了ubuntu系统,环境需求为Python3和 Flask框架。FLASK框架很简单小巧,适合这个场景。

安装python3-pip 命令

apt-get install python3-pip 

安装flask 命令

pip3 install flask

程序源代码如下,将如下的源代码写入程序run_flask_api.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import flask

app = flask.Flask(__name__)

@app.route('/ip')
def index():
    ip_address = flask.request.remote_addr + '\n'
    return ip_address

if __name__ == "__main__":
    app.run(host='0.0.0.0',port=18039)

运行程序run_flask_api.py

ubuntu@server:~$ python3 ./run_flask_api.py
 * Serving Flask app "run_flask_api" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:18039/ (Press CTRL+C to quit)

在其他服务器GET方法测试程序API

client@serverX:~$ curl http://12.33.236.181:18039/ip
45.257.14.277
client@serverX:~$ 

备注
1. 以上文章中出现的IP,为了安全,已全部修改到不存在的IP
2. 我自己只需要对IPv6的返回,有需要的可以增加IPv6的场景

Donate
云乞讨

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注