365Tools
发布时间:2024-07-17 16:02:00
Flask是一个轻量级的Python Web框架,被称为微型框架。它提供了一个稳健的核心,并通过扩展实现其他功能,这使得Flask既灵活又易于使用。
目的:创建一个简单的Hello World网页,用于展示Flask的基本用法。
步骤:
导入Flask模块。
创建一个Flask应用实例。
定义一个路由和对应的视图函数,用于处理请求并返回响应。
运行应用。
轻量级:Flask保持核心功能简单,易于理解和使用。
灵活性:通过扩展机制,可以根据项目需求添加所需功能。
社区支持:Flask拥有庞大的社区和丰富的文档,便于学习和解决问题。
from flask import Flask,request
import time, datetime, requests,json,os
from urllib.parse import urlparse, parse_qs
from selenium import webdriver
app=Flask(__name__)
'''
需要扩展包:
pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple
'''
@app.route('/')
def index():
password = request.args.get("password")
url = request.args.get("url")
if not password:
return api_return(401, 'Password is null')
if not url:
return api_return(401, 'url is null')
if password != 'c32':
return api_return(401, 'Password Is Error')
else:
try:
apk = milu_apk_url(url)
data = {'apk': apk,'status':'ok'}
if apk:
if apk==2:
data = {'apk': '', 'status': 'no'}
return api_return(200, 'success', 0, data)
milu_apk_del(apk)
return api_return(200,'success',0, data)
else:
return api_return(404, '获取下载包异常', 0, {})
except Exception as e:
return api_return(404, str(e), 0, {})
def api_return(code=200,message='success',count=0,data={}):
result = {
'code' : code if code is not None else '0',
'msg' : message if message is not None else 'success',
'count': count if count is not None else '0',
'data' : data if data is not None else [],
}
return json.dumps(result)
def milu_apk_del(apk):
parsed_url = urlparse(apk)
path = parsed_url.path
filename = path.split('/')[-1]
file_path = 'C:/Users/Administrator/Downloads/'+filename
# 文件存在,删除它
if os.path.exists(file_path):
os.remove(file_path)
if os.path.exists(file_path+'.crdownload'):
os.remove(file_path+'.crdownload')
def milu_apk_url(url):
is_webdriver = False
i = 0
while True:
if i>3:
return False
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'Custom-Header': 'Custom-Value',
'Host': 'and.milu.com'
}
response = requests.get(url, headers=headers, allow_redirects=False)
if response.status_code == 302:
return response.headers['Location']
elif '游戏已经下线' in response.content.decode('utf-8'):
return 2
else:
if is_webdriver == False:
opt = webdriver.ChromeOptions()
# opt.add_argument("--headless")
# opt.add_argument("--no-sandbox")
# opt.add_argument("--disable-gpu")
# opt.add_argument("--disable-dev-shm-usage")
# # opt.add_argument('--host-resolver-rules=MAP report.huatuo.qq.com 127.0.0.1')
# opt.add_argument('--hide-scrollbars')
# opt.add_argument('blink-settings=imagesEnabled=false')
browser = webdriver.Chrome(options=opt)
browser.get(url)
time.sleep(10) # 加载等待
is_webdriver = True
time.sleep(5)
i = i+1
if __name__ == "__main__":
app.debug = True
app.run(host='0.0.0.0', port=1216)