准备环境
pip install flask
pip install requests
导入模块
import string
import random
from flask import request
from flask import Flask
import requests
import os
Python代码
app = Flask(__name__)
file_name = [] #存储所有文件名
@app.route('/',methods=['GET'])
def home_index():
if request.method == 'GET':
names = 'Welcome to the Struggle Junior API interface, you need to contact QQ:3266986273.'
return {'code':200 , 'message':names.encode('utf-8').decode('unicode_escape')}
else:
return {'code': 403, 'message': 'Request failed, website lost 403!'}
#注册用户
@app.route('/python_user_zhu',methods=['POST'])
def user_name():
qq = request.form['qq'] #要注册的QQ账号
names = request.form['user_name']
worlds = request.form['user_word']
d = os.chdir(r"c:\Users\Administrator\Desktop\python\qq")
os.mkdir(f'{qq}')
k = os.path.exists(f'{qq}')
print(k)
if k == "True":
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}".format(f'{k}',qq))
elif k == "False":
os.chdir(r"c:\Users\Administrator\Desktop\python\qq")
os.mkdir(f'{qq}')
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}".format(qq))
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}".format(qq))
os.mkdir('账号')
dsd = os.path.exists('账号')
if dsd == "True":
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}{}\账号".format(qq, qq))
elif dsd == "False":
os.mkdir('账号')
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}\账号".format(qq))
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}\账号".format(qq))
with open(f"{qq}.txt",'w',encoding='utf-8') as f :
k = f.write(f'{names}\n{worlds}\n{qq}')
f.close()
with open(f'{qq}.txt','r',encoding='utf-8') as fd :
s = fd.readlines()
a = {'code': 200, 'message': f'注册成功.','data':{'用户名':f'{s[0]}','密码':f'{s[1]}','qq':f'{s[2]}'}}
return a
#登录用户
@app.route('/python_user_login',methods=['POST'])
def user_names():
qq = request.form['qq']
word = request.form['user_word']
#读取python里面qq目录文件
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}\账号".format(qq))
dtd = []
dsd = []
with open(f'{qq}.txt','r',encoding='utf-8') as f :
d = f.readlines() #获取账号密码
count = -1
#循环检测
for k in d :
count += 1
a = k.strip()
if count == 2:
if qq == a :
dtd.append('qq正确')
else:
dtd.append('qq不正确')
elif count == 1:
if word == a :
dsd.append('密码正确')
else:
dtd.append('qq不正确')
else:
continue
if dtd[0] == 'qq正确' and dsd[0] == '密码正确':
a = {'code':200,'message':'登录成功'}
return a
else:
a = {'code':200,'message':'登录失败'}
return a
#创建Python文件
@app.route('/python_file',methods=['POST'])
def file():
qq = request.form['qq']
p = request.form['name']
aks = ''
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}".format(f'{qq}'))
os.mkdir(f'key')
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}\key".format(f'{qq}'))
try :
# 创建key
with open(f'{p}.txt', 'w', encoding='utf-8') as fs:
aks = f'{"".join(random.sample(string.ascii_lowercase + string.digits, 18))}'
fs.write(aks)
fs.close()
# 创建是谁创建的
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}".format(f'{qq}'))
os.mkdir(f'{qq}')
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}{}".format(f'{qq}',f'{qq}'))
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}\key".format(qq))
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}{}".format(f'{qq}', f'{qq}'))
with open(f'{p}.py', 'w', encoding='utf-8') as f:
if f'{p}.py'.strip()[0:-3] != '': # 去除空格 判断是否输入内容为空
a = {'code': 200, 'message': f'创建{p}文件成功咯.', 'data': {'key': aks}}
return a
else: # 否则
f.close()
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}{}".format(f'{qq}', f'{p}'))
os.remove(f'{p}.py')
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}\key".format(f'{qq}'))
os.remove(f'{p}.txt')
a = {'code': 200, 'message': f'创建{p}文件失败,文件名不能为空.', 'data': {'key': 'not fand key'}}
return a
except FileNotFoundError :
a = {'code': 404, 'message':'请先注册账号,再进行此操作.'}
return a
#运行Python文件代码 返回执行结果 - 状态码 : 200
@app.route('/python_run_file',methods=['POST'])
def run():
q = request.form['qq']
d = request.form['key']
p = request.form['name']
s = request.form['text']
ts = []
os.chdir(r"C:\Users\Administrator\Desktop\python\qq{}\key".format(f'{q}'))
with open(f'{p}.txt','r',encoding='utf-8') as fd:
dd = fd.readlines()
ts.append(dd[0].strip())
fd.close()
os.chdir(r"C:\Users\Administrator\Desktop\python\qq{}{}".format(f'{q}',f'{q}'))
with open(f'{p}.py','w',encoding='utf-8') as f:
for k in ts:
if d == k:
f.write(s)
a = {'code':200,'message':f'{s}','data':'python解释器由奋斗少年制作哦!'}
return a
else:
a = {'code':200,'message':f'写入代码失败','data':'python解释器由奋斗少年制作哦!'}
return a
#返回当前qq目录下创建的文件
@app.route('/python_my_list_name',methods=['POST'])
def my_list_names():
q = request.form['qq']
os.chdir(r"C:\Users\Administrator\Desktop\python\qq{}{}".format(q,q))
a = {'code': 200, 'message': f'{os.listdir()}', 'data': 'python解释器由奋斗少年制作哦!'}
return a
#调试一段代码
@app.route('/python_run_name',methods=['POST'])
def run_file_names():
p = request.form['name']
s = request.form['text']
headers = {
"Authorization": "Token 0123456-789a-bcde-f012-3456789abcde",
"content-type": "application/"
}
data = {
"files": [
{
"name": f"{p}.py",
"content": s
}
],
"stdin": "",
"command": ""
}
res = requests.post(url='https://glot.io/run/python?version=latest', headers=headers, json=data)
a = {'code':200,'message':res.json(),'data':'python解释器由奋斗少年制作哦!'}
return a
#运行整个Python文件
@app.route('/python_run_names',methods=['POST'])
def run_file_namesd():
p = request.form['name']
q = request.form['qq']
keys = request.form['key']
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}{}".format(q,q))
headers = {
"Authorization": "Token 0123456-789a-bcde-f012-3456789abcde",
"content-type": "application/"
}
kw = ''
quan = []
kes = []
os.chdir(r"C:\Users\Administrator\Desktop\python\qq{}\key".format(q))
with open(f'{p}.txt','r',encoding='utf-8') as fs:
s = fs.readlines()
quan.append(s[2].strip())
kes.append(s[0].strip())
fs.close()
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}{}".format(q,q))
odd = ''
with open(f'{p}.py','r',encoding='utf-8')as ds :
for d in kes:
if keys == d :
odd = 'key验证正确'
else:
odd = 'key验证失败'
for d in quan:
if q == d and odd == 'key验证正确':
ks = ds.read()
else:
pass
data = {
"files": [
{
"name": f"{p}.py",
"content": ks
}
],
"stdin": "",
"command": ""
}
res = requests.post(url='https://glot.io/run/python?version=latest', headers=headers, json=data)
if odd == 'key验证正确':
a = {'code': 200, 'message': res.json(), 'data': '您的拥有权已经验证成功'}
return a
else:
a = {'code': 200, 'message': res.json(), 'data': '您未拥有打开文件权限已经验证成功'}
return a
#打开你写的python文件代码
@app.route('/python_read_names',methods=['POST'])
def read_file_namesd():
p = request.form['name']
keys = request.form['key']
q = request.form['qq']
os.chdir(r"c:\Users\Administrator\Desktop\python")
m = ''
count = 0
d = []
ds = []
l = ''
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}\key".format(q))
with open(f'{p}.txt','r',encoding='utf-8') as fs:
l = fs.read()
ds.append(l)
fs.close()
os.chdir(r"c:\Users\Administrator\Desktop\python\qq{}{}".format(q,q))
with open(f'{p}.py','r',encoding='utf-8') as fd:
if keys == ds[0]:
m = fd.read()
a = {'code':200,'message':'key正确','data':m}
return a
else:
a = {'code':200,'message':'key不正确.'}
return a
#查询所有python文件
@app.route('/python_list_file',methods=['GET'])
def list_file():
os.chdir(r"c:\Users\Administrator\Desktop\python")
ac = os.listdir()
ts = len(ac)
a = {'code':200,'message':ac,'number':ts}
return a
#删除Python文件用的
@app.route('/python_del_file',methods=['post'])
def del_file():
mos = []
mosd = []
os.chdir(r"c:\Users\Administrator\Desktop\python")
p = request.form['name']
keys = request.form['key']
os.chdir(r"c:\Users\Administrator\Desktop\python\key")
with open(f'{p}.txt', 'r', encoding='utf-8') as f:
try :
if keys == f.read():
os.chdir(r"c:\Users\Administrator\Desktop\python")
s = f'{p}.py'
mos.append(s)
os.remove(s)
f.close()
os.chdir(r"c:\Users\Administrator\Desktop\python\key")
d = f'{p}.txt'
mosd.append(d)
os.remove(d)
a = {'code': 200, 'data':{f'{p}.py':'删除成功',f'{p}.txt':'删除成功','message':'技术由奋斗少年制作.'}}
return a
except TypeError:
a = {'code': 200, 'data': {f'{p}.py': '删除失败', f'{p}.txt': '删除失败', 'message': 'key不正确'}}
return a
#查询已经安装的pyhton库
@app.route('/python_list_pip',methods=['GET'])
def list_pips():
a = os.chdir(r"C:\Users\Administrator\PycharmProjects\我是神明\venv\Lib\site-packages")
filelist = os.listdir(a)
a = {'code':200,'message':filelist}
return a
#查询相应的Python库是否安装成功
@app.route('/python_query_pip',methods=['POST'])
def list_query_pips():
names = request.form['name']
a = os.chdir(r"C:\Users\Administrator\PycharmProjects\我是神明\venv\Lib\site-packages")
filelist = os.listdir(a)
if names in filelist:
a = {'code':200,'message':names + '库存在.'}
return a
else:
a = {'code':200,'message':names + '库不存在.'}
return a
#开始下载相应的Python库
@app.route('/python_pip_install',methods=['POST'])
def list_pip_install():
names = request.form['name']
os.system(f'pip install {names}')
a = {'code':200,'message':names + '库正在安装中.'}
return a
#清空python文件代码
@app.route('/python_clear_py',methods=['POST'])
def python_clear_pys():
names = request.form['name']
keys = request.form['key']
osd = ''
os.chdir(r"c:\Users\Administrator\Desktop\python\key")
with open(f'{names}.txt','r',encoding='utf-8') as f:
osd = f.read()
f.close()
os.chdir(r"c:\Users\Administrator\Desktop\python")
with open(f'{names}.py','w',encoding='utf-8') as d:
if keys == osd:
d.write('')
a = {'code':200,'message':f'已经删除了{names}.py文件所有内容.'}
return a
else:
a = {'code':200,'message':f'key不正确.'}
return a
#这里是程序的主入口 - port : 88 host : 0.0.0.0 已经开启内网测试
if __name__ == '__main__':
# 设置host,88。threaded=True 代表开启多线程
app.run(host='0.0.0.0', port=88, threaded=True)
服务器与本机访问机制
本机的话访问IP 127.0.0.1:程序设置的端口号/访问POST目录
服务器的话建议购买一个Windows系统2008的,然后安装Python环境,将代码粘贴进去.
无法请求接口,各种报错.
全部搞好开始操作
Windows系统桌面创建一个名字叫Python的文件夹里面套一个qq文件夹然后运行服务端打开APIFOX测试就行.
用途
功能太多了我就不一个一个发了,你们自行测试吧,可以用于Q群机器人,WX机器人,博客,论坛之类.