146 lines
5.0 KiB
Python
146 lines
5.0 KiB
Python
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
|