AutoApiSS/testapi.py

236 lines
10 KiB
Python
Raw Normal View History

2022-12-06 03:42:55 -05:00
# -*- coding: UTF-8 -*-
import requests as req
import json,sys,time,random
#注册后一定要再点代表xxx授予管理员同意,否则outlook api无法调用
#以下空行不要删除,以便运行时插入机密
id_list2 = [1]
secret_list2 = [1]
config_list = {'每次轮数':6,
'是否启动随机时间':'Y','延时范围起始':600,'结束':1200,
'是否开启随机api顺序':'Y',
'是否开启各api延时':'N','api延时范围开始':2,'api延时结束':5,
'是否开启各账号延时':'Y','账号延时范围开始':60,'账号延时结束':120,
'是否开启备用应用':'N','是否开启测试':'N'}
num1 = [0]*len(id_list)
path2=sys.path[0]+r'/config/randomapi.txt'
path3=sys.path[0]+r'/config/buconfig.txt'
rapi = {'1':r'https://graph.microsoft.com/v1.0/me/',
'2':r'https://graph.microsoft.com/v1.0/users',
'3':r'https://graph.microsoft.com/v1.0/me/people',
'4':r'https://graph.microsoft.com/v1.0/groups',
'5':r'https://graph.microsoft.com/v1.0/me/contacts',
'6':r'https://graph.microsoft.com/v1.0/me/drive/root',
'7':r'https://graph.microsoft.com/v1.0/me/drive/root/children',
'8':r'https://graph.microsoft.com/v1.0/drive/root',
'9':r'https://graph.microsoft.com/v1.0/me/drive',
'10':r'https://graph.microsoft.com/v1.0/me/drive/recent',
'11':r'https://graph.microsoft.com/v1.0/me/drive/sharedWithMe',
'12':r'https://graph.microsoft.com/v1.0/me/calendars',
'13':r'https://graph.microsoft.com/v1.0/me/events',
'14':r'https://graph.microsoft.com/v1.0/sites/root',
'15':r'https://graph.microsoft.com/v1.0/sites/root/sites',
'16':r'https://graph.microsoft.com/v1.0/sites/root/drives',
'17':r'https://graph.microsoft.com/v1.0/sites/root/columns',
'18':r'https://graph.microsoft.com/v1.0/me/onenote/notebooks',
'19':r'https://graph.microsoft.com/v1.0/me/onenote/sections',
'20':r'https://graph.microsoft.com/v1.0/me/onenote/pages',
'21':r'https://graph.microsoft.com/v1.0/me/messages',
'22':r'https://graph.microsoft.com/v1.0/me/mailFolders',
'23':r'https://graph.microsoft.com/v1.0/me/outlook/masterCategories',
'24':r'https://graph.microsoft.com/v1.0/me/mailFolders/Inbox/messages/delta',
'25':r'https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messageRules',
'26':r"https://graph.microsoft.com/v1.0/me/messages?$filter=importance eq 'high'",
'27':r'https://graph.microsoft.com/v1.0/me/messages?$search="hello world"',
'28':r'https://graph.microsoft.com/beta/me/messages?$select=internetMessageHeaders&$top',
'29':r'https://api.powerbi.com/v1.0/myorg/apps'}
rapi2 = {'1':r'https://graph.microsoft.com/v1.0/me/drive/root',
'2':r'https://graph.microsoft.com/v1.0/me/drive',
'3':r'https://graph.microsoft.com/v1.0/drive/root',
'4':r'https://graph.microsoft.com/v1.0/users',
'5':r'https://graph.microsoft.com/v1.0/me/messages',
'6':r'https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messageRules',
'7':r'https://graph.microsoft.com/v1.0/me/mailFolders/Inbox/messages/delta',
'8':r'https://graph.microsoft.com/v1.0/me/drive/root/children',
'9':r'https://graph.microsoft.com/v1.0/me/mailFolders',
'10':r'https://graph.microsoft.com/v1.0/me/outlook/masterCategories',
'11':r'https://api.powerbi.com/v1.0/myorg/apps'}
fc = open(path2, "r+")
randapi = fc.read()
fc.close()
fh = open(path3, "r+")
buconfig = fh.read()
fh.close()
randomapi = randapi.split(',')
def gettoken(refresh_token,a):
headers={'Content-Type':'application/x-www-form-urlencoded'
}
data={'grant_type': 'refresh_token',
'refresh_token': refresh_token,
'client_id':id_lists[a],
'client_secret':secret_lists[a],
'redirect_uri':'http://localhost:53682/'
}
html = req.post('https://login.microsoftonline.com/common/oauth2/v2.0/token',data=data,headers=headers)
jsontxt = json.loads(html.text)
refresh_token = jsontxt['refresh_token']
access_token = jsontxt['access_token']
return access_token
def testapi(path,a,ls):
fo = open(path, "r+")
refresh_token = fo.read()
fo.close()
localtime = time.asctime( time.localtime(time.time()) )
access_token=gettoken(refresh_token,a)
headers={
'Authorization':access_token,
'Content-Type':'application/json'
}
print('账号 '+str(a)+'\n'+str(ls)+' 轮运行开始时间为 :', localtime)
if config_list['是否开启随机api顺序'] == 'Y':
print('总api数13个请自行确认个数')
for ra in range(14):
rana = str(randomapi[ra])
try:
if req.get(rapi[rana],headers=headers).status_code == 200:
num1[a]+=1
print("账号"+str(a)+""+rana+"号api调用成功,所有api总成功"+str(num1[a])+'')
if config_list['是否开启各api延时'] != 'N':
gg = random.randint(config_list['api延时范围开始'],config_list['api延时结束'])
time.sleep(gg)
except:
print("pass")
pass
else:
print('总api数10个请自行确认个数')
for ra in range(1,12):
rana = str(ra)
try:
if req.get(rapi2[rana],headers=headers).status_code == 200:
num1[a]+=1
print("账号"+str(a)+""+rana+"号api调用成功,所有api总成功"+str(num1[a])+'')
if config_list['是否开启各api延时'] != 'N':
gg = random.randint(config_list['api延时范围开始'],config_list['api延时结束'])
time.sleep(gg)
except:
print("pass")
pass
def testapi2(path,a,ls):
fo = open(path, "r+")
refresh_token = fo.read()
fo.close()
localtime = time.asctime( time.localtime(time.time()) )
access_token=gettoken(refresh_token,a)
headers={
'Authorization':access_token,
'Content-Type':'application/json'
}
print('账号 '+str(a)+' 备用应用\n'+str(ls)+' 轮运行开始时间为 :', localtime)
if config_list['是否开启随机api顺序'] == 'Y':
print('总api数13个请自行确认个数')
else:
print('总api数10个请自行确认个数')
if config_list['是否开启随机api顺序'] == 'Y':
for ra in range(14):
rana = str(randomapi[ra])
try:
if req.get(rapi[rana],headers=headers).status_code == 200:
num1[a]+=1
print("账号"+str(a)+"备用的"+rana+"号api调用成功,所有api总成功"+str(num1[a])+'')
if config_list['是否开启各api延时'] != 'N':
gg = random.randint(config_list['api延时范围开始'],config_list['api延时结束'])
time.sleep(gg)
except:
print("pass")
pass
else:
for ra in range(1,12):
rana = str(ra)
try:
if req.get(rapi2[rana],headers=headers).status_code == 200:
num1[a]+=1
print("账号"+str(a)+"备用的"+rana+"号api调用成功,所有api总成功"+str(num1[a])+'')
if config_list['是否开启各api延时'] != 'N':
gg = random.randint(config_list['api延时范围开始'],config_list['api延时结束'])
time.sleep(gg)
except:
print("pass")
pass
def main():
if config_list['是否启动随机时间'] == 'Y':
for ls in range(config_list['每次轮数']):
b=random.randint(config_list['延时范围起始'],config_list['结束'])
time.sleep(b)
for a in range(0, len(id_lists)):
if config_list['是否开启各账号延时'] == 'Y':
c = random.randint(config_list['账号延时范围开始'],config_list['账号延时结束'])
time.sleep(c)
path=sys.path[0]+r'/token/'+str(a)+'.txt'
testapi(path,a,ls)
else:
for ls in range(config_list['每次轮数']):
for a in range(0, len(id_lists)):
if config_list['是否开启各账号延时'] == 'Y':
c = random.randint(config_list['账号延时范围开始'],config_list['账号延时结束'])
time.sleep(c)
path=sys.path[0]+r'/token/'+str(a)+'.txt'
testapi(path,a,ls)
def main2():
if config_list['是否启动随机时间'] == 'Y':
for ls in range(config_list['每次轮数']):
b=random.randint(config_list['延时范围起始'],config_list['结束'])
time.sleep(b)
for a in range(0, len(id_lists)):
if config_list['是否开启各账号延时'] == 'Y':
c = random.randint(config_list['账号延时范围开始'],config_list['账号延时结束'])
time.sleep(c)
path=sys.path[0]+r'/backuptoken/'+str(a)+'.txt'
testapi2(path,a,ls)
else:
for ls in range(config_list['每次轮数']):
for a in range(0, len(id_lists)):
if config_list['是否开启各账号延时'] == 'Y':
c = random.randint(config_list['账号延时范围开始'],config_list['账号延时结束'])
time.sleep(c)
path=sys.path[0]+r'/backuptoken/'+str(a)+'.txt'
testapi2(path,a,ls)
if config_list['是否开启测试'] == 'Y':
config_list = {'每次轮数':1,'是否启动随机时间':'N','延时范围起始':600,'结束':1200,'是否开启随机api顺序':'Y','是否开启各api延时':'N','api延时范围开始':2,'api延时结束':5,'是否开启各账号延时':'N','账号延时范围开始':60,'账号延时结束':120,'是否开启备用应用':'N','是否开启测试':'N'}
id_lists=id_list
secret_lists=secret_list
main()
if id_list2 != [1]:
id_lists=id_list2
secret_lists=secret_list2
main2()
else:
if config_list['是否开启备用应用'] == 'Y':
if buconfig == 'Y':
id_lists=id_list
secret_lists=secret_list
main()
else:
if id_list2 == [1]:
id_lists=id_list
secret_lists=secret_list
main()
else:
id_lists=id_list2
secret_lists=secret_list2
main2()
else:
id_lists=id_list
secret_lists=secret_list
main()