app.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. from typing import Text
  2. import ipdb, ipaddress, requests, re, json
  3. from flask import Flask, request, render_template, jsonify
  4. from socket import gethostbyname
  5. app = Flask(__name__)
  6. from ips import *
  7. from getmd import *
  8. @app.route("/")
  9. def hello():
  10. ip = getip()
  11. ipaddr = iplocated(ip)
  12. if is_Mozilla():
  13. return render_template('hello.html', ip=ip, ipaddr=ipaddr, city=getcity(ip)) + \
  14. "<div class=\"label label-default\" style=\"text-align:center;\">" + request.headers["User-Agent"] + "</div>"
  15. else:
  16. return ip
  17. @app.route("/ip/maps/")
  18. def maps():
  19. ip = getip()
  20. # bdgps = ip2bdgps(ip) # 百度地图 IP 定位 API 比较慢 ,换用 免费 高德定位
  21. bdgps = ip2gdgps(ip)
  22. return render_template('maps.html', bdgps=bdgps)
  23. @app.route("/ip/bdmaps/")
  24. def bdmaps():
  25. ip = getip()
  26. bdgps = ip2bdgps(ip) # 百度地图 IP 定位 API 比较慢
  27. return render_template('maps.html', bdgps=bdgps)
  28. @app.route("/ip/")
  29. @app.route("/ip/<ipaddr>")
  30. def show_ip(ipaddr=None):
  31. # ip 地址为空获得浏览器客户端IP
  32. if ipaddr is None:
  33. ip = getip()
  34. ipaddr = iplocated(ip)
  35. if is_Mozilla():
  36. return render_template('hello.html', ip=ip, ipaddr=ipaddr, city=getcity(ip))
  37. else:
  38. return ip
  39. else:
  40. ip = ipaddr
  41. # ip地址 从纯真IP数据库 搜索城市定位
  42. try:
  43. ipaddress.ip_address(ip).is_global
  44. ipaddr = iplocated(ip)
  45. except:
  46. try:
  47. ip = gethostbyname(ip) # 域名反解析得到的IP
  48. ipaddr = iplocated(ip)
  49. except Exception as e:
  50. print(e)
  51. return ipaddr
  52. @app.route("/ips/", methods=['POST', 'GET'])
  53. def getips():
  54. if request.method == 'POST':
  55. ips_text = request.form['ips']
  56. ips = select_ips(ips_text)
  57. return render_template('ips.html', ips=ips)
  58. else:
  59. return render_template('ips.html')
  60. @app.route("/getmd/", methods=['POST', 'GET'])
  61. def getmd():
  62. if request.method == 'POST' and request.form['passkey'] == make_passkey('262235.xyz') :
  63. urls = request.form['urls']
  64. urls_list = check_urls(urls)
  65. urls = urls_lines(urls_list)
  66. if len(urls_list) < 5 :
  67. texts = '测试 PASSKEY 一次只允许最多抓取5篇文章,当前数量:' + str(len(urls_list))
  68. texts += pull_urls(urls_list)
  69. return render_template('getmd.html', urls=urls, texts=texts, passkey=make_passkey('262235.xyz'))
  70. else:
  71. texts = '文章大于5: 测试 PASSKEY 一次只允许最多抓取5篇文章,当前数量:' + str(len(urls_list))
  72. return render_template('getmd.html', urls=urls, texts=texts, passkey=make_passkey('262235.xyz'))
  73. else:
  74. if request.method == 'POST' and request.form['passkey'] == 'UUID-1234-5678-1234' :
  75. urls = request.form['urls']
  76. urls_list = check_urls(urls)
  77. urls = urls_lines(urls_list)
  78. texts = '授权 PASSKEY 无限制,当前数量:' + str(len(urls_list))
  79. texts += pull_urls(urls_list)
  80. return render_template('getmd.html', urls=urls, texts=texts)
  81. pass
  82. return render_template('getmd.html', passkey=make_passkey('262235.xyz'))
  83. if __name__ == '__main__':
  84. # app.run(host='0.0.0.0')
  85. app.run(host='0.0.0.0', debug=True, port=80)
  86. # export FLASK_ENV=development # 调试模式: 修改代码不用重启服务
  87. # flask run --host=0.0.0.0 # 监听所有公开的 IP