|
@@ -1,74 +1,19 @@
|
|
|
+from typing import Text
|
|
|
import ipdb, ipaddress, requests, re, json
|
|
|
from flask import Flask, request, render_template, jsonify
|
|
|
from socket import gethostbyname
|
|
|
|
|
|
-db = ipdb.BaseStation("qqwry.ipdb")
|
|
|
app = Flask(__name__)
|
|
|
-
|
|
|
-def iplocated(ip):
|
|
|
- city = db.find(ip, "CN")
|
|
|
- return ip + " @" + city[0] + city[1] + city[2] + city[3] + "\n"
|
|
|
-
|
|
|
-def getcity(ip):
|
|
|
- city = db.find(ip, "CN")
|
|
|
- return city[2] + '市'
|
|
|
-
|
|
|
-def getip():
|
|
|
- ip = request.remote_addr
|
|
|
- try:
|
|
|
- _ip = request.headers["X-Real-IP"]
|
|
|
- if _ip is not None:
|
|
|
- ip = _ip
|
|
|
- except Exception as e:
|
|
|
- print(e)
|
|
|
- return ip
|
|
|
-
|
|
|
-def is_Mozilla():
|
|
|
- # Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36
|
|
|
- ua = request.headers["User-Agent"]
|
|
|
- if (ua.find("Mozilla") != -1):
|
|
|
- return True
|
|
|
- else:
|
|
|
- return False
|
|
|
-
|
|
|
-## 百度免费的 IP 普通定位 API 接口
|
|
|
-def ip2bdgps(ip):
|
|
|
- url = 'https://api.map.baidu.com/location/ip?ak=>>>百度AK码<<<&coor=bd09ll&ip=' + ip
|
|
|
- try:
|
|
|
- r = requests.get(url)
|
|
|
- data = r.json()
|
|
|
- except :
|
|
|
- return
|
|
|
-
|
|
|
- if data['status'] != 0 :
|
|
|
- return (116.39564504, 39.92998578 , data['status']) # 查不到返回 北京 x,y
|
|
|
- else:
|
|
|
- x = data['content']['point']['x']
|
|
|
- y = data['content']['point']['y']
|
|
|
- return (x, y, data['status'], data)
|
|
|
-
|
|
|
-## 免费试用500次, 1元能使用1万次 IP定位 API 接口 https://market.aliyun.com/products/57002002/cmapi00035184.html
|
|
|
-def ip2gdgps(ip):
|
|
|
- url = 'http://ips.market.alicloudapi.com/iplocaltion?ip=' + ip
|
|
|
- headers = {"Authorization":"APPCODE <<<IP定位APPCODE>>>" ,"Content-Type":"application/json; charset=utf-8" }
|
|
|
- try:
|
|
|
- r = requests.get(url=url , headers=headers)
|
|
|
- data = r.json()
|
|
|
- except :
|
|
|
- return
|
|
|
- # print(data)
|
|
|
- if data['code'] != 100:
|
|
|
- return (116.39564504, 39.92998578 , data['code']) # 查不到返回 北京 x,y
|
|
|
- elif data['message'] == "success":
|
|
|
- x = data['result']['lng']
|
|
|
- y = data['result']['lat']
|
|
|
- return (x, y, data['code'], data)
|
|
|
+from ips import *
|
|
|
+from getmd import *
|
|
|
|
|
|
@app.route("/")
|
|
|
def hello():
|
|
|
ip = getip()
|
|
|
+ ipaddr = iplocated(ip)
|
|
|
if is_Mozilla():
|
|
|
- return ip + render_template('hello.html', ip=ip) + "\n\n" + request.headers["User-Agent"]
|
|
|
+ return render_template('hello.html', ip=ip, ipaddr=ipaddr, city=getcity(ip)) + \
|
|
|
+ "<div class=\"label label-default\" style=\"text-align:center;\">" + request.headers["User-Agent"] + "</div>"
|
|
|
else:
|
|
|
return ip
|
|
|
|
|
@@ -112,17 +57,6 @@ def show_ip(ipaddr=None):
|
|
|
|
|
|
return ipaddr
|
|
|
|
|
|
-def select_ips(ips_text):
|
|
|
- ret =''
|
|
|
- iplist = re.findall(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b", ips_text)
|
|
|
- for ip in iplist:
|
|
|
- try:
|
|
|
- one = iplocated(ip)
|
|
|
- ret+=one
|
|
|
- except:
|
|
|
- pass
|
|
|
- return ret
|
|
|
-
|
|
|
@app.route("/ips/", methods=['POST', 'GET'])
|
|
|
def getips():
|
|
|
if request.method == 'POST':
|
|
@@ -132,8 +66,33 @@ def getips():
|
|
|
else:
|
|
|
return render_template('ips.html')
|
|
|
|
|
|
[email protected]("/getmd/", methods=['POST', 'GET'])
|
|
|
+def getmd():
|
|
|
+ if request.method == 'POST' and request.form['passkey'] == make_passkey('262235.xyz') :
|
|
|
+ urls = request.form['urls']
|
|
|
+ urls_list = check_urls(urls)
|
|
|
+ urls = urls_lines(urls_list)
|
|
|
+ if len(urls_list) < 5 :
|
|
|
+ texts = '测试 PASSKEY 一次只允许最多抓取5篇文章,当前数量:' + str(len(urls_list))
|
|
|
+ texts += pull_urls(urls_list)
|
|
|
+ return render_template('getmd.html', urls=urls, texts=texts, passkey=make_passkey('262235.xyz'))
|
|
|
+ else:
|
|
|
+ texts = '文章大于5: 测试 PASSKEY 一次只允许最多抓取5篇文章,当前数量:' + str(len(urls_list))
|
|
|
+ return render_template('getmd.html', urls=urls, texts=texts, passkey=make_passkey('262235.xyz'))
|
|
|
+ else:
|
|
|
+ if request.method == 'POST' and request.form['passkey'] == 'UUID-1234-5678-1234' :
|
|
|
+ urls = request.form['urls']
|
|
|
+ urls_list = check_urls(urls)
|
|
|
+ urls = urls_lines(urls_list)
|
|
|
+ texts = '授权 PASSKEY 无限制,当前数量:' + str(len(urls_list))
|
|
|
+ texts += pull_urls(urls_list)
|
|
|
+ return render_template('getmd.html', urls=urls, texts=texts)
|
|
|
+ pass
|
|
|
+ return render_template('getmd.html', passkey=make_passkey('262235.xyz'))
|
|
|
+
|
|
|
if __name__ == '__main__':
|
|
|
- app.run(host='0.0.0.0', debug=True, port=80)
|
|
|
+ # app.run(host='0.0.0.0')
|
|
|
+ app.run(host='0.0.0.0', debug=True, port=80)
|
|
|
|
|
|
# export FLASK_ENV=development # 调试模式: 修改代码不用重启服务
|
|
|
# flask run --host=0.0.0.0 # 监听所有公开的 IP
|