发布时间: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)