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