fastAPI/huaweitest.py

146 lines
5.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from fastapi import FastAPI, Query, Request, HTTPException
from datetime import datetime
import random
app = FastAPI()
@app.get("/")
async def root(request: Request):
# 获取当前时间
now = datetime.now()
# 格式化时间为 年-月-日 时:分:秒 的格式
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print(f"请求IP地址: {request.client.host},请求时间{formatted_now},请求路径: /")
return "welcome to fastAPI!"
def random_bool():
return "true" if random.random() > 0.5 else "false"
@app.get("/script/getscriparam")
async def getscriparam(request: Request):
# 获取当前时间
now = datetime.now()
# 格式化时间为 年-月-日 时:分:秒 的格式
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print(f"请求IP地址: {request.client.host},请求时间{formatted_now},请求路径: /script/getscriparam")
language_list = ["English (United States)", "Spanish (Mexico)", "English (United Kingdom)", "English (Australia)"]
data = {
"interaction": {"from": 20, "to": 30},
"bounceRate": {"from": 0.3, "to": 0.4},
"pagesToViewPerSession": {"from": 2, "to": 3},
"sessionsPerUser": {"from": 2, "to": 3},
"ctr": {"from": 0.03, "to": 0.05},
"shouldDoClick": "true",
"shouldExecute": "true",
"shouldBounce": "false",
"languageFullName": random.choice(language_list),
}
return data
@app.get("/script/success")
async def do_success(request: Request):
# 获取当前时间
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 获取请求者的IP地址
client_host = request.client.host
# 打印上报成功的时间和IP地址
# print(f"请求IP地址: {client_host},上报成功时间: {current_time}")
print(f"请求IP地址: {client_host},请求时间{current_time},请求路径: /script/success")
data = {}
return {
"code": 0,
"msg": "ok",
"data": data
}
@app.get("/script/failed")
async def do_failed(request: Request, reason: str = None, errortype: str = None):
# 获取当前时间
now = datetime.now()
# 格式化时间为 年-月-日 时:分:秒 的格式
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print(f"请求IP地址: {request.client.host},请求时间{formatted_now},请求路径: /script/failed")
# 假设这里记录失败原因到日志或数据库
print(f"上报失败,Time: {formatted_now}, 失败原因: {reason},失败类型: {errortype}.") # 实际应用中应使用更专业的日志记录方式
return {
"code": 0,
"msg": "ok",
"data": {}
}
@app.get("/report/chrome/crash")
async def report_chrome_crash(id: str, timestamp: str = Query(None)):
# 获取当前时间
now = datetime.now()
# 格式化时间为 年-月-日 时:分:秒 的格式
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
# 假设这里记录失败原因到日志或数据库
print(f"Time: {formatted_now}, ID: {id}, 时间戳: {timestamp}") # 实际应用中应使用更专业的日志记录方式
return {
"code": 0,
"msg": "ok",
"data": {}
}
@app.get("/script/uploaddata")
async def upload_ads_status(impressions: str, clicks: str):
# 获取当前时间
now = datetime.now()
# 格式化时间为 年-月-日 时:分:秒 的格式
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
# 假设这里记录失败原因到日志或数据库
print(f"Time: {formatted_now}, impressions: {impressions}, clicks: {clicks}") # 实际应用中应使用更专业的日志记录方式
return {
"code": 0,
"msg": "ok",
"data": {}
}
@app.post("/api/account/")
async def get_account(request: Request):
server_token = "cT&Ur7AciCgL6P$2u!^mauI05r6jcD$A"
accounts = [
{"account": "reedavice8@gmail.com", "password": "L906lTeTlpelaq",
"auxiliary_mailbox": "tcmuffin56@mailexpire.com"},
{"account": "annist95g@gmail.com", "password": "28CUxUmygURereJ",
"auxiliary_mailbox": "b1youngster983@yahoo.ie"},
{"account": "vr8607864@gmail.com", "password": "J945YgaX", "auxiliary_mailbox": "sbqunmetal3@xtra.co.nz"},
{"account": "ShimoGuagliardo537@gmail.com", "password": "94Ss9YYx3",
"auxiliary_mailbox": "spigelmyerhalalikyzd185@yawua.us"},
]
# 从请求头中获取token
token = request.headers.get('Authorization')
# 获取当前时间
now = datetime.now()
# 格式化时间
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print(f"请求IP地址: {request.client.host}, 请求时间: {formatted_now}, 请求token: {token}, 请求路径: /api/account/")
# 检查token是否存在且匹配
if not token or token != server_token:
# 如果token不正确返回401未授权状态
raise HTTPException(status_code=401, detail="Unauthorized")
# 随机选择一个账户信息返回
selected_account = random.choice(accounts)
return selected_account