需求描述
有很多网站提供查询自己公网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的场景