改成每个edge带4个ip

This commit is contained in:
wangqifan 2025-10-29 18:27:28 +08:00
parent 657188dc27
commit 46931d005d
5 changed files with 418 additions and 47 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@ app/__pycache__/__init__.*.pyc
app/__pycache__/eip_client.*.pyc
app/__pycache__/*.pyc
app/routers/__pycache__/*.pyc
line_status.json

View File

@ -4,7 +4,7 @@ EIP_PASSWORD=Hnz3HuWCqEX9vdzpBodY304T6CEJJJ
# EIP 基础配置
EIP_BASE_URL=https://smart.jdbox.xyz:58001
EIP_GATEWAY_MAC=525400CE3FA3
EIP_GATEWAY_MAC=525400989391
# 轮换默认参数(如不指定,请在请求体传递 cityhash
EIP_DEFAULT_CITYHASH=20c5485e25a2f55681fa38f3598b34a6876e60c3188e4b5174042e4e390a1808
@ -17,9 +17,9 @@ REDIS_URL=redis://127.0.0.1:6379/5
LOG_LEVEL=INFO
# 端口数==条数 从172.30.168.2开始
PORT_NUM=10
PORT_NUM=40
MAX_ONLINE=10000
MAX_ONLINE=80000
ADMIN_USERNAME=heping
ADMIN_PASSWORD=He_Ping551

View File

@ -43,32 +43,34 @@ def _extract_device_ip_and_id(device: Dict[str, Any]) -> Tuple[Optional[str], Op
return (str(ip), str(macaddr))
def select_unused_ip(devices: List[Dict[str, Any]]) -> Tuple[Optional[str], Optional[str]]:
def select_unused_ip(devices: List[Dict[str, Any]], limit: int = 4) -> List[Tuple[str, str]]:
"""
从设备列表中选择今天未使用的IP地址
从设备列表中选择今天未使用的最多 N IP 地址
遍历设备列表找到第一个今天未使用的IP地址和对应的边缘设备ID
遍历设备列表收集今天未使用且在线数量未达上限的设备 IP 与对应的边缘设备 ID
最多返回 `limit` 个候选
Args:
devices: 设备信息列表
limit: 返回的候选数量上限默认 4
Returns:
Tuple[Optional[str], Optional[str]]: (IP地址, 边缘设备ID)如果没找到则返回(None, None)
List[Tuple[str, str]]: 列表元素为 (IP地址, 边缘设备ID)
"""
candidates: List[Tuple[str, str]] = []
for d in devices.get('edges'):
# print(settings.max_online)
# print(d)
if d['online'] < settings.max_online:
ip, edge_id = _extract_device_ip_and_id(d)
if not ip:
# 没有可识别的IP跳过此设备
continue
if not kv.is_ip_used_today(ip):
return ip, edge_id
return None, None
candidates.append((ip, edge_id))
if len(candidates) >= limit:
break
return candidates
def apply_gateway_route(edge_id: Optional[str], ip: str, geo: str, client_id:str) -> Dict[str, Any]:
def apply_gateway_route(edge_ids: Optional[str], ips: str, geo: str, client_id:str) -> Dict[str, Any]:
"""
将选中的边缘设备配置到网关路由规则中
@ -90,7 +92,7 @@ def apply_gateway_route(edge_id: Optional[str], ip: str, geo: str, client_id:str
rule.append({
"table": client_id, # 路由表ID
"enable": True, # 启用规则
"edge": [edge_id] if edge_id else [], # 边缘设备列表
"edge": edge_ids, # 边缘设备列表
"network": [client_infos[str(client_id)]], # 网络配置(当前为空)
"cityhash": geo or "", # 城市哈希值
})
@ -139,22 +141,30 @@ def rotate(client_id,cities) -> Dict[str, Any]:
# 获取设备列表
devices = eip.list_devices(geo=geo, offset=0, num=n)
# 选择未使用的IP
ip, edge_id = select_unused_ip(devices)
if not ip:
# 选择未使用的最多 4 个 IP
candidates = select_unused_ip(devices, limit=4)
if not candidates:
return {"changed": False, "reason": "没有可用且今天未使用的 IP"}
# 取第一个用于生效,其余作为候选缓存
# ip, edge_id = candidates[0]
ips = [ip for ip, _ in candidates]
edge_ids = [edge_id for _, edge_id in candidates]
# 应用网关路由配置
_ = apply_gateway_route(edge_id=edge_id, ip=ip, geo= geo,client_id=client_id)
_ = apply_gateway_route(edge_ids=edge_ids, ips=ips, geo= geo,client_id=client_id)
# 记录使用情况
kv.add_used_ip_today(ip) # 标记IP为今天已使用
kv.set_current(ip=ip, edge_id=edge_id) # 设置当前使用的IP和设备
# 记录使用情况(仅首个生效 IP 计入已使用;其余作为候选缓存)
for num,ip in enumerate(ips):
kv.add_used_ip_today(ip)
kv.set_current(ip=ip, edge_id=edge_ids[num])
try:
kv.cache_candidates([ip])
except Exception:
pass
# 获取网关状态
status = eip.gateway_status(settings.eip_gateway_mac)
return {"changed": True, "ip": ip, "edge": edge_id, "status": status, "geo": geo}
return {"changed": True, "ip": ','.join(ips), "edges": ','.join(edge_ids), "status": status, "geo": geo, "candidates": [c[0] for c in candidates]}
def citie_list():

View File

@ -35,7 +35,7 @@ def rotate(
current_ip=result.get("ip"),
last_rotate_time=datetime.now().isoformat(),
status="active",
edge_device=result.get("edge"),
edge_device=result.get("edges"),
geo_location=result.get("geo")
)
status_manager.increment_rotate_count(client_id)

View File

@ -1,42 +1,402 @@
{
"1": {
"id": 1,
"current_ip": "61.170.158.231",
"last_rotate_time": "2025-10-23T15:55:44.394507",
"current_ip": "223.149.198.216,223.149.179.192,223.149.241.71,223.149.124.190",
"last_rotate_time": "2025-10-29T17:29:41.546318",
"status": "active",
"edge_device": "DCD87C401959",
"geo_location": "f8a5e9b04178490cf8e71f5b273538aa75ef2c978ecac974a176d93af966ef53",
"rotate_count": 9,
"last_update_time": "2025-10-23T15:55:44.406606"
"edge_device": "DCD87C5C0CDB,1004C103E7A0,DCD87C5C4183,DCD87C4AE984",
"geo_location": "20c5485e25a2f55681fa38f3598b34a6876e60c3188e4b5174042e4e390a1808",
"rotate_count": 3,
"last_update_time": "2025-10-29T17:29:41.557286"
},
"2": {
"id": 2,
"current_ip": "61.170.152.180",
"last_rotate_time": "2025-10-23T15:57:39.942336",
"current_ip": "125.68.15.81,183.221.235.185,118.120.190.251,139.205.31.233",
"last_rotate_time": "2025-10-29T17:30:29.552282",
"status": "active",
"edge_device": "DCD87C45BD5A",
"geo_location": "f8a5e9b04178490cf8e71f5b273538aa75ef2c978ecac974a176d93af966ef53",
"rotate_count": 6,
"last_update_time": "2025-10-23T15:57:39.951883"
"edge_device": "1004C1031358,DCD87C5C466F,DCD87C08073E,DCD87C5C7ED3",
"geo_location": "01c2d1acf783b5ac014f87dfe06d9a731c654d42aef402dc68965b9194ee7b2a",
"rotate_count": 1,
"last_update_time": "2025-10-29T17:30:29.563279"
},
"3": {
"id": 3,
"current_ip": "119.55.16.172",
"last_rotate_time": "2025-10-22T14:34:16.421955",
"current_ip": "1.60.98.175,113.8.204.165,113.7.153.78,1.60.97.69",
"last_rotate_time": "2025-10-29T17:32:09.925637",
"status": "active",
"edge_device": "DCD87C44F885",
"geo_location": "bc41d34110c2989b29f7521133d605e7a8aa6e9edb488217c5c0d087603a753c",
"rotate_count": 2,
"last_update_time": "2025-10-22T14:34:16.436191"
"edge_device": "DCD87C5FB0C5,DCD87C238453,DCD87C238BE3,DCD87C23820A",
"geo_location": "58370ef051a7f4a3d5d40a3f505bb109420c2b347ba09b579b06c774cc3fbc3e",
"rotate_count": 1,
"last_update_time": "2025-10-29T17:32:09.938471"
},
"4": {
"id": 4,
"current_ip": "123.156.121.103,115.210.70.155,111.2.253.40,112.12.78.150",
"last_rotate_time": "2025-10-29T17:32:18.701089",
"status": "active",
"edge_device": "DCD87C5BFF53,DCD87C231486,DCD87C3FD5B5,DCD87C5FDD29",
"geo_location": "8f5a04e833a5ad0b1edf00ba9229a3b0d706eb3340c40ec8fb383e9949e6cdda",
"rotate_count": 1,
"last_update_time": "2025-10-29T17:32:18.714086"
},
"5": {
"id": 5,
"current_ip": "111.23.251.160,120.227.137.133,175.12.231.161,113.223.25.7",
"last_rotate_time": "2025-10-29T17:32:32.143608",
"status": "active",
"edge_device": "DCD87C49633C,DCD87C44F479,DCD87C5F6E8D,DCD87C53DAFA",
"geo_location": "08397b1ba554e93dedaa897b474ea24f2965766fe880f6c00652756574287a19",
"rotate_count": 1,
"last_update_time": "2025-10-29T17:32:32.154684"
},
"6": {
"id": 6,
"current_ip": "120.239.76.220",
"last_rotate_time": "2025-10-24T14:42:24.742464",
"current_ip": "39.182.57.145,39.190.117.189,125.126.170.171,39.184.75.129",
"last_rotate_time": "2025-10-29T17:35:20.339325",
"status": "active",
"edge_device": "DCD87C5682D8",
"geo_location": "ef26cdf15454e2aaba125512dcb6b509f0a9c02e0807ac13d4b77cbff52fe05d",
"edge_device": "DCD87C2378EF,DCD87C127CC8,DCD87C13B376,DCD87C2C12E5",
"geo_location": "80df907846f7b37e4af59437aa78c329b67e567c6a2fb33477e990d20cf5ed39",
"rotate_count": 1,
"last_update_time": "2025-10-29T17:35:20.351402"
},
"7": {
"id": 7,
"current_ip": "1.25.239.238,58.18.61.187,39.154.102.214,110.18.103.169",
"last_rotate_time": "2025-10-29T17:38:49.665536",
"status": "active",
"edge_device": "1004C103DD9C,DCD87C079FF9,DCD87C5DE435,DCD87C22E8DC",
"geo_location": "debb9c9c4f109b8c5a9213e980632f708ff13eed666a6d73c546566fd0ebb815",
"rotate_count": 3,
"last_update_time": "2025-10-29T17:38:49.687046"
},
"8": {
"id": 8,
"current_ip": "111.25.250.163,122.137.205.240,124.234.86.1,124.234.60.67",
"last_rotate_time": "2025-10-29T17:38:52.467697",
"status": "active",
"edge_device": "DCD87C067855,DCD87C0CD531,DCD87C5BC23F,DCD87C2DD58D",
"geo_location": "94fdf6d0a0701120800c12ddf2cc5a09f47d5f228e2089987c074df79187dd99",
"rotate_count": 2,
"last_update_time": "2025-10-24T14:42:24.754469"
"last_update_time": "2025-10-29T17:38:52.492693"
},
"9": {
"id": 9,
"current_ip": "171.95.247.167,171.95.215.227,171.95.215.84,112.44.92.6",
"last_rotate_time": "2025-10-29T17:38:55.642615",
"status": "active",
"edge_device": "DCD87C4D4474,DCD87C2DCBB1,DCD87C55A0BA,DCD87C5C5937",
"geo_location": "4a04a1900273abaddc0ac4cda52d50fa84816c30a50467c1fb85c294736c114e",
"rotate_count": 2,
"last_update_time": "2025-10-29T17:38:55.662643"
},
"10": {
"id": 10,
"current_ip": "112.1.144.133,223.107.238.20,223.107.251.133,114.233.46.98",
"last_rotate_time": "2025-10-29T17:38:58.685610",
"status": "active",
"edge_device": "DCD87C11B895,DCD87C486FC0,DCD87C2041FA,DCD87C2490F6",
"geo_location": "f873b74b459064838e58248d1d266ac3071a374a77719b5c8b64eb30366dc27a",
"rotate_count": 2,
"last_update_time": "2025-10-29T17:38:58.700120"
},
"11": {
"id": 11,
"current_ip": "223.102.237.89,123.189.186.252,175.166.62.231,223.102.228.159",
"last_rotate_time": "2025-10-29T17:39:01.260403",
"status": "active",
"edge_device": "DCD87C5998EB,DCD87C457789,DCD87C61697C,1004C1031B60",
"geo_location": "80658a4556dbd03947ee01f3e47acdd2a03251f2b79715a6a645a21734ea0fbd",
"rotate_count": 2,
"last_update_time": "2025-10-29T17:39:01.286412"
},
"12": {
"id": 12,
"current_ip": "117.189.182.252,116.171.188.131,58.16.191.154,117.188.179.183",
"last_rotate_time": "2025-10-29T17:39:03.786253",
"status": "active",
"edge_device": "DCD87C57D541,1004C10028B4,DCD87C5873D8,DCD87C42B5FD",
"geo_location": "7a0ce626537da17533822b9b193e7e52cc81a72e6635f94157a3e3dd9f43e7b3",
"rotate_count": 2,
"last_update_time": "2025-10-29T17:39:03.802836"
},
"13": {
"id": 13,
"current_ip": "36.142.169.101,36.142.165.40,36.142.160.158,36.142.167.10",
"last_rotate_time": "2025-10-29T17:39:06.069184",
"status": "active",
"edge_device": "DCD87C5ECA31,DCD87C5A6723,DCD87C450C05,DCD87C5B853F",
"geo_location": "3ccd3850f97058d8d2b0068dc6581f0e65e939e92c5c91718330bd634c712844",
"rotate_count": 2,
"last_update_time": "2025-10-29T17:39:06.090915"
},
"14": {
"id": 14,
"current_ip": "171.39.170.167,171.110.79.49,117.182.67.237,113.17.114.16",
"last_rotate_time": "2025-10-29T17:39:09.126752",
"status": "active",
"edge_device": "DCD87C407495,DCD87C592FD8,DCD87C453001,DCD87C21CC47",
"geo_location": "722fb89a1e888d9aadb67d055be3f412e82e4d8e3b8904c14db23ccdc19e0449",
"rotate_count": 2,
"last_update_time": "2025-10-29T17:39:09.144336"
},
"15": {
"id": 15,
"current_ip": "120.69.101.245,110.155.179.132,223.114.173.51,120.69.101.170",
"last_rotate_time": "2025-10-29T17:39:11.576494",
"status": "active",
"edge_device": "DCD87C256B72,DCD87C12EFE4,DCD87C42AFB5,DCD87C0CD4B4",
"geo_location": "828d503f3d3ece9d927167a1bdf07887ce6d49093d94b143d35cda83e93365b2",
"rotate_count": 2,
"last_update_time": "2025-10-29T17:39:11.589625"
},
"16": {
"id": 16,
"current_ip": "120.217.80.223,222.142.51.244,182.125.159.186,120.217.90.193",
"last_rotate_time": "2025-10-29T17:38:32.763555",
"status": "active",
"edge_device": "DCD87C127214,DCD87C284280,DCD87C269380,DCD87C1FADDB",
"geo_location": "cef3d46ea594a50a5ce6bd7398b9d24670bf9c4b6d3557bc0826ae0665559f18",
"rotate_count": 2,
"last_update_time": "2025-10-29T17:38:32.781610"
},
"17": {
"id": 17,
"current_ip": "42.243.235.247,220.164.233.221,183.225.239.62,39.128.197.118",
"last_rotate_time": "2025-10-29T17:38:46.994968",
"status": "active",
"edge_device": "DCD87C5A602F,DCD87C4D1F1C,DCD87C5894CC,DCD87C53298A",
"geo_location": "16dd42f4b8a5e5c8929e64a59015249c1e6728f5f6f1cc5376ebadd08b193c62",
"rotate_count": 2,
"last_update_time": "2025-10-29T17:38:47.008981"
},
"18": {
"id": 18,
"current_ip": "116.178.27.66,223.114.80.20,124.119.101.241,116.178.24.48",
"last_rotate_time": "2025-10-29T17:38:29.348455",
"status": "active",
"edge_device": "1004C1019E38,DCD87C54709B,DCD87C5F7791,DCD87C050FED",
"geo_location": "c1d66a1666d57799f809cb02cd6a74bb65b1aa3b70fe21d38fcbce3025e45937",
"rotate_count": 3,
"last_update_time": "2025-10-29T17:38:29.362461"
},
"19": {
"id": 19,
"current_ip": "112.122.180.227,183.162.114.121,120.243.185.127,183.162.114.80",
"last_rotate_time": "2025-10-29T17:38:26.668254",
"status": "active",
"edge_device": "DCD87C5AB583,DCD87C2DBDE1,DCD87C49BDF0,DCD87C4709EC",
"geo_location": "5767c29a9bd74c6ac408abb53c93a14e79c9635e439bbc52c399d19745bf336f",
"rotate_count": 2,
"last_update_time": "2025-10-29T17:38:26.684507"
},
"20": {
"id": 20,
"current_ip": "120.207.136.179,60.221.153.255,118.73.229.47,118.73.225.63",
"last_rotate_time": "2025-10-29T17:38:22.494642",
"status": "active",
"edge_device": "DCD87C11C069,DCD87C27D2E6,DCD87C453455,DCD87C4D7C2C",
"geo_location": "be75cfd425cc9865b56e59bef1a18a1ebb42cfc4eeadfe1e54656618ec5d21d6",
"rotate_count": 2,
"last_update_time": "2025-10-29T17:38:22.519190"
},
"21": {
"id": 21,
"current_ip": "183.209.22.16,122.193.119.121,122.193.164.174,116.147.65.83",
"last_rotate_time": "2025-10-29T18:05:58.301389",
"status": "active",
"edge_device": "DCD87C460E8C,DCD87C21956B,DCD87C0CCE35,DCD87C579FCD",
"geo_location": "915467a82c43b854da8194cc405143ecd0e4a1dd95aa7624437ed94d3fbadeca",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:05:58.317931"
},
"22": {
"id": 22,
"current_ip": "183.194.153.224,183.194.153.48,218.78.180.215,112.65.37.206",
"last_rotate_time": "2025-10-29T18:06:02.269370",
"status": "active",
"edge_device": "DCD87C2482F2,DCD87C42A07D,DCD87C5917EC,DCD87C22EDE3",
"geo_location": "f8a5e9b04178490cf8e71f5b273538aa75ef2c978ecac974a176d93af966ef53",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:02.287463"
},
"23": {
"id": 23,
"current_ip": "182.84.19.32,113.195.58.187,111.77.93.138,182.111.10.46",
"last_rotate_time": "2025-10-29T18:06:05.808484",
"status": "active",
"edge_device": "DCD87C24A636,DCD87C2B93F9,DCD87C557144,DCD87C250AF9",
"geo_location": "f9d7d1453fb46ad290295fefc2857341d7f7085711d1cc6ccecb1ab67f0e80bc",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:05.825071"
},
"24": {
"id": 24,
"current_ip": "182.99.92.84,117.162.120.21,39.158.42.212,106.226.102.156",
"last_rotate_time": "2025-10-29T18:06:11.753229",
"status": "active",
"edge_device": "DCD87C2D3F5D,DCD87C21D86B,DCD87C13CBF9,DCD87C628130",
"geo_location": "7eb867dcd8b62172f075b2bbb7e87b31702e3eaa0f09dadbd004541ab486b59f",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:11.772569"
},
"25": {
"id": 25,
"current_ip": "117.170.82.251,182.84.140.250,182.84.153.217,117.170.67.208",
"last_rotate_time": "2025-10-29T18:06:15.233554",
"status": "active",
"edge_device": "DCD87C426415,DCD87C56D171,DCD87C52380E,DCD87C4B12DD",
"geo_location": "bf4f5193031c3a3abc76db98bb9aaabcdda63b7f4b6bbc2acbc2049153eefc49",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:15.256407"
},
"26": {
"id": 26,
"current_ip": "112.0.15.244,112.3.34.157,117.93.0.177,180.117.120.22",
"last_rotate_time": "2025-10-29T18:06:19.001945",
"status": "active",
"edge_device": "DCD87C067E3E,DCD87C07FA9E,DCD87C23087B,DCD87C280006",
"geo_location": "d01d03a7047f2ce60e4f278976784e1ada32cea72ad1b276573ede5455a14755",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:19.019036"
},
"27": {
"id": 27,
"current_ip": "183.160.122.211,183.162.126.15,60.168.244.58,36.33.37.60",
"last_rotate_time": "2025-10-29T18:06:22.428474",
"status": "active",
"edge_device": "DCD87C57D61D,DCD87C5E20B1,DCD87C5F7A4D,DCD87C5A9E03",
"geo_location": "f6a209bd0da8c0049c35d48deb56569f79f662a9202b814ce019055cb1b3bb5c",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:22.442503"
},
"28": {
"id": 28,
"current_ip": "223.67.16.39,183.211.251.204,114.233.102.60,221.230.164.96",
"last_rotate_time": "2025-10-29T18:06:25.680298",
"status": "active",
"edge_device": "DCD87C130465,DCD87C45E83D,DCD87C067F2A,DCD87C4AA69F",
"geo_location": "f873b74b459064838e58248d1d266ac3071a374a77719b5c8b64eb30366dc27a",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:25.694360"
},
"29": {
"id": 29,
"current_ip": "139.227.153.240,183.194.155.186,117.135.92.225,183.194.152.6",
"last_rotate_time": "2025-10-29T18:06:29.205803",
"status": "active",
"edge_device": "DCD87C58295C,DCD87C2E6EC9,DCD87C204BFA,DCD87C4D4808",
"geo_location": "f8a5e9b04178490cf8e71f5b273538aa75ef2c978ecac974a176d93af966ef53",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:29.221953"
},
"30": {
"id": 30,
"current_ip": "114.232.47.197,114.232.108.68,112.2.145.140,49.67.157.186",
"last_rotate_time": "2025-10-29T18:06:33.419878",
"status": "active",
"edge_device": "DCD87C293090,DCD87C56162B,DCD87C477434,DCD87C3FD505",
"geo_location": "f8af0c3ec1d5c2809e49817171d723e88612f0ce3b71f5aa9360ffc0d454a980",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:33.436462"
},
"31": {
"id": 31,
"current_ip": "58.242.169.107,36.161.20.9,36.159.179.227,220.205.14.100",
"last_rotate_time": "2025-10-29T18:06:36.482729",
"status": "active",
"edge_device": "DCD87C42A765,DCD87C20BDE8,DCD87C569D21,DCD87C44DF05",
"geo_location": "2eab90f937b71898e7697554140eeef83fe0b5301a6e992b234c791821be5b5b",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:36.498734"
},
"32": {
"id": 32,
"current_ip": "112.32.187.116,36.62.31.131,114.105.80.3,36.35.81.99",
"last_rotate_time": "2025-10-29T18:06:40.859598",
"status": "active",
"edge_device": "1004C10012FC,DCD87C2A7694,DCD87C617AC8,DCD87C0D7F31",
"geo_location": "33695ad43b73cc70f93d1313ae1dc0b254feeebffd3d3ace3c6d3b27487c1a59",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:40.884098"
},
"33": {
"id": 33,
"current_ip": "183.162.118.122,223.247.48.140,36.161.68.61,183.162.118.100",
"last_rotate_time": "2025-10-29T18:06:43.846374",
"status": "active",
"edge_device": "DCD87C5165CE,DCD87C402455,DCD87C412595,DCD87C40FC39",
"geo_location": "1fbbebf5e91217f53c75298927ce763887243c14d1567f7218ecfa5fba5c6d96",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:43.865206"
},
"34": {
"id": 34,
"current_ip": "36.35.138.229,112.26.8.17,36.62.151.39,58.242.254.92",
"last_rotate_time": "2025-10-29T18:06:47.417179",
"status": "active",
"edge_device": "DCD87C58C23C,DCD87C1285CE,DCD87C4DC728,DCD87C51CEB6",
"geo_location": "fdd9d1b2da2f8379173fb46ff753ef7a9a4a4d531132594fad1ef9e02f63beda",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:47.437093"
},
"35": {
"id": 35,
"current_ip": "117.143.155.109,117.185.153.172,183.195.30.206,183.193.139.187",
"last_rotate_time": "2025-10-29T18:06:50.711942",
"status": "active",
"edge_device": "DCD87C473B64,DCD87C0CCF16,DCD87C531826,DCD87C080595",
"geo_location": "f8a5e9b04178490cf8e71f5b273538aa75ef2c978ecac974a176d93af966ef53",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:50.737440"
},
"36": {
"id": 36,
"current_ip": "117.44.163.97,59.62.66.173,171.34.216.29,59.53.33.52",
"last_rotate_time": "2025-10-29T18:06:54.486010",
"status": "active",
"edge_device": "DCD87C11F03E,DCD87C5BD5BB,DCD87C5E214D,DCD87C5F58D1",
"geo_location": "44ee84d6b4acec5d65d468f3b968e1dada861c0a1c4009fb769a813ea5357b83",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:54.502676"
},
"37": {
"id": 37,
"current_ip": "183.208.214.244,49.75.79.210,112.20.126.156,183.208.214.244",
"last_rotate_time": "2025-10-29T18:06:57.970035",
"status": "active",
"edge_device": "DCD87C58182C,DCD87C5BBD9F,DCD87C59CB81,DCD87C211897",
"geo_location": "def92baf4c44a2a758c6bba8d4720942497441a057fea35e26563f9baa75c4a6",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:06:57.985698"
},
"38": {
"id": 38,
"current_ip": "120.243.72.6,112.123.18.163,112.123.184.159,36.34.234.34",
"last_rotate_time": "2025-10-29T18:07:01.310905",
"status": "active",
"edge_device": "DCD87C51F252,DCD87C5191D2,DCD87C5144EE,DCD87C222BDF",
"geo_location": "ce4db8b85e6e87fc099516d0c00ef12810899e01d6398f6d7dc5267110f6c5b2",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:07:01.327447"
},
"39": {
"id": 39,
"current_ip": "223.67.17.35,223.67.53.219,223.107.237.120,121.230.4.197",
"last_rotate_time": "2025-10-29T18:07:05.158239",
"status": "active",
"edge_device": "DCD87C4B3BE1,DCD87C5DDF29,DCD87C22D414,DCD87C2A6834",
"geo_location": "f873b74b459064838e58248d1d266ac3071a374a77719b5c8b64eb30366dc27a",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:07:05.174325"
},
"40": {
"id": 40,
"current_ip": "183.251.169.145,175.42.232.237,220.162.137.3,183.251.117.35",
"last_rotate_time": "2025-10-29T18:07:08.669459",
"status": "active",
"edge_device": "DCD87C4B69F4,DCD87C61DE60,DCD87C0B399D,DCD87C61B840",
"geo_location": "14fc7fa4ca25513cc50460f17ac2a42f932f55fcd95690f10788ace672d8bf7e",
"rotate_count": 1,
"last_update_time": "2025-10-29T18:07:08.687303"
}
}