app.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import ipdb, ipaddress
  2. from flask import Flask, request, render_template, jsonify
  3. from socket import gethostbyname
  4. db = ipdb.BaseStation("qqwry.ipdb")
  5. app = Flask(__name__)
  6. def iplocated(ip):
  7. city = db.find(ip, "CN")
  8. return ip + " @" + city[0] + city[1] + city[2] + city[3] + "\n"
  9. @app.route("/ip/")
  10. @app.route("/ip/<ipaddr>")
  11. def show_ip(ipaddr=None):
  12. # ip 地址为空获得浏览器客户端IP
  13. if ipaddr is None:
  14. ip = request.remote_addr
  15. try:
  16. _ip = request.headers["X-Real-IP"]
  17. if _ip is not None:
  18. ip = _ip
  19. except Exception as e:
  20. print(e)
  21. ipaddr = iplocated(ip)
  22. return render_template('hello.html', ip=ip, ipaddr=ipaddr)
  23. else:
  24. ip = ipaddr
  25. # ip地址 从纯真IP数据库 搜索城市定位
  26. try:
  27. ipaddress.ip_address(ip).is_global
  28. ipaddr = iplocated(ip)
  29. except:
  30. try:
  31. ip = gethostbyname(ip) # 域名反解析得到的IP
  32. ipaddr = iplocated(ip)
  33. except Exception as e:
  34. print(e)
  35. return ipaddr
  36. # export FLASK_ENV=development # 调试模式: 修改代码不用重启服务
  37. # flask run --host=0.0.0.0 # 监听所有公开的 IP