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,
|
2023-06-06 07:29:39 -04:00
|
|
|
|
'是否开启备用应用':'N','是否开启测试':'N'}
|
2022-12-06 03:42:55 -05:00
|
|
|
|
|
|
|
|
|
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()
|