v1.1.3: entity_count fix + geoip database + multi-file test data + csv_glob display fix

- Fix entity_count not populated after clustering pipeline
- Create comprehensive geoip_data.txt (803 IP ranges, 49 cities)
- Generate 100 multi_upload test files with missing columns
- Replace csv_glob path with SQLite table name in frontend
- Fix globe zoom-drag point-fixing (camera.z/12.0 scaling)
- Fix orphaned manual_run_analysis function
This commit is contained in:
PM-pinou
2026-07-21 13:21:20 +08:00
parent 917e065609
commit 745b1481cd
8 changed files with 1499 additions and 5 deletions
+3 -1
View File
@@ -811,6 +811,8 @@ def _run_clustering_pipeline(run, store, entity_ds_id, feature_columns, algorith
))
if profiles:
EP.objects.bulk_create(profiles, ignore_conflicts=True, batch_size=1000)
run.entity_count = len(profiles)
run.save(update_fields=['entity_count'])
except Exception as pca_err:
logger.warning(f'PCA-2D embedding skipped: {pca_err}')
@@ -818,7 +820,7 @@ def _run_clustering_pipeline(run, store, entity_ds_id, feature_columns, algorith
run.status = 'completed'
run.progress_pct = 100
run.progress_msg = '分析完成'
run.save(update_fields=['status', 'progress_pct', 'progress_msg'])
run.save(update_fields=['status', 'progress_pct', 'progress_msg', 'entity_count'])
except Exception:
tb = traceback.format_exc()
+608
View File
@@ -0,0 +1,608 @@
#!/usr/bin/env python3
"""
Generate comprehensive offline GeoIP database at data/geoip_data.txt.
Strategy:
1. Define precise CIDR ranges for clouds/CDNs/known services (highest priority)
2. Define ISP/city blocks in decreasing priority
3. Resolve overlaps: earlier (more specific) ranges win
4. Fill remaining gaps with city blocks
5. Ensure zero overlaps in final output
Output: data/geoip_data.txt (CSV: start_ip,end_ip,lat,lon,city,country)
"""
import ipaddress
from pathlib import Path
# ---- City coordinates ----
CITIES = {
# China
"Beijing": (39.9042, 116.4074, "CN"),
"Shanghai": (31.2304, 121.4737, "CN"),
"Guangzhou": (23.1291, 113.2644, "CN"),
"Shenzhen": (22.5431, 114.0579, "CN"),
"Hangzhou": (30.2741, 120.1551, "CN"),
"Chengdu": (30.5728, 104.0668, "CN"),
"Chongqing": (29.5630, 106.5516, "CN"),
"Nanjing": (32.0603, 118.7969, "CN"),
"Wuhan": (30.5928, 114.3055, "CN"),
"Tianjin": (39.3434, 117.3616, "CN"),
"Xian": (34.3416, 108.9398, "CN"),
# East Asia
"Tokyo": (35.6762, 139.6503, "JP"),
"Osaka": (34.6937, 135.5022, "JP"),
"Nagoya": (35.1815, 136.9066, "JP"),
"Seoul": (37.5665, 126.9780, "KR"),
"Busan": (35.1796, 129.0756, "KR"),
"Taipei": (25.0330, 121.5654, "TW"),
"Hong Kong": (22.3193, 114.1694, "HK"),
# Southeast Asia
"Singapore": (1.3521, 103.8198, "SG"),
"Bangkok": (13.7563, 100.5018, "TH"),
"Kuala Lumpur": (3.1390, 101.6869, "MY"),
"Jakarta": (-6.2088, 106.8456, "ID"),
"Manila": (14.5995, 120.9842, "PH"),
"Ho Chi Minh City": (10.8231, 106.6297, "VN"),
"Hanoi": (21.0278, 105.8342, "VN"),
# South Asia
"Mumbai": (19.0760, 72.8777, "IN"),
"Delhi": (28.7041, 77.1025, "IN"),
"Bangalore": (12.9716, 77.5946, "IN"),
"Chennai": (13.0827, 80.2707, "IN"),
"Hyderabad": (17.3850, 78.4867, "IN"),
# Oceania
"Sydney": (-33.8688, 151.2093, "AU"),
"Melbourne": (-37.8136, 144.9631, "AU"),
"Auckland": (-36.8509, 174.7645, "NZ"),
# Middle East
"Dubai": (25.2048, 55.2708, "AE"),
"Riyadh": (24.7136, 46.6753, "SA"),
"Istanbul": (41.0082, 28.9784, "TR"),
"Bahrain": (26.0667, 50.5577, "BH"),
# Europe
"London": (51.5074, -0.1278, "GB"),
"Manchester": (53.4808, -2.2426, "GB"),
"Frankfurt": (50.1109, 8.6821, "DE"),
"Berlin": (52.5200, 13.4050, "DE"),
"Munich": (48.1351, 11.5820, "DE"),
"Paris": (48.8566, 2.3522, "FR"),
"Amsterdam": (52.3676, 4.9041, "NL"),
"Madrid": (40.4168, -3.7038, "ES"),
"Barcelona": (41.3874, 2.1686, "ES"),
"Milan": (45.4642, 9.1900, "IT"),
"Rome": (41.9028, 12.4964, "IT"),
"Stockholm": (59.3293, 18.0686, "SE"),
"Oslo": (59.9139, 10.7522, "NO"),
"Helsinki": (60.1699, 24.9384, "FI"),
"Warsaw": (52.2297, 21.0122, "PL"),
"Zurich": (47.3769, 8.5417, "CH"),
"Dublin": (53.3498, -6.2603, "IE"),
"Moscow": (55.7558, 37.6173, "RU"),
"Saint Petersburg": (59.9343, 30.3351, "RU"),
# Africa
"Cairo": (30.0444, 31.2357, "EG"),
"Lagos": (6.5244, 3.3792, "NG"),
"Nairobi": (-1.2921, 36.8219, "KE"),
"Johannesburg": (-26.2041, 28.0473, "ZA"),
"Cape Town": (-33.9249, 18.4241, "ZA"),
# North America
"New York": (40.7128, -74.0060, "US"),
"San Francisco": (37.7749, -122.4194, "US"),
"Seattle": (47.6062, -122.3321, "US"),
"Chicago": (41.8781, -87.6298, "US"),
"Dallas": (32.7767, -96.7970, "US"),
"Los Angeles": (34.0522, -118.2437, "US"),
"Ashburn": (39.0438, -77.4874, "US"),
"Atlanta": (33.7490, -84.3880, "US"),
"Miami": (25.7617, -80.1918, "US"),
"Boston": (42.3601, -71.0589, "US"),
"Houston": (29.7604, -95.3698, "US"),
"Denver": (39.7392, -104.9903, "US"),
"Phoenix": (33.4484, -112.0740, "US"),
"Portland": (45.5152, -122.6784, "US"),
"San Jose": (37.3382, -121.8863, "US"),
"Philadelphia": (39.9526, -75.1652, "US"),
"Mountain View": (37.3861, -122.0839, "US"),
"Cambridge": (42.3736, -71.1097, "US"),
"Toronto": (43.6532, -79.3832, "CA"),
"Vancouver": (49.2827, -123.1207, "CA"),
"Montreal": (45.5017, -73.5673, "CA"),
"Mexico City": (19.4326, -99.1332, "MX"),
# South America
"Sao Paulo": (-23.5505, -46.6333, "BR"),
"Rio de Janeiro": (-22.9068, -43.1729, "BR"),
"Buenos Aires": (-34.6037, -58.3816, "AR"),
"Santiago": (-33.4489, -70.6693, "CL"),
"Bogota": (4.7110, -74.0721, "CO"),
"Lima": (-12.0464, -77.0428, "PE"),
}
def cidr_to_ints(cidr: str) -> tuple[int, int]:
"""Return (start_int, end_int) for a CIDR block."""
net = ipaddress.IPv4Network(cidr, strict=False)
return (int(net.network_address), int(net.broadcast_address))
# ============================================================
# Priority-ordered range definitions (first = highest priority)
# ============================================================
# Layer 0: Private ranges
PRIVATE_RANGES = [
("Beijing", "10.0.0.0/8"),
("Shanghai", "172.16.0.0/12"),
("Guangzhou", "192.168.0.0/16"),
]
# Layer 1: Well-known DNS
DNS_RANGES = [
("Mountain View", "8.8.8.8/32"),
("Mountain View", "8.8.4.4/32"),
("San Francisco", "1.1.1.1/32"),
("San Francisco", "1.0.0.1/32"),
]
# Layer 2: AWS
AWS_RANGES = [
("Ashburn", "3.208.0.0/13"), ("Ashburn", "3.224.0.0/12"),
("Ashburn", "52.0.0.0/15"), ("Ashburn", "52.2.0.0/15"),
("Ashburn", "52.4.0.0/14"), ("Ashburn", "52.20.0.0/14"),
("Ashburn", "54.80.0.0/12"), ("Ashburn", "54.152.0.0/13"),
("Ashburn", "54.160.0.0/11"),("Ashburn", "54.208.0.0/15"),
("Ashburn", "54.224.0.0/12"),("Ashburn", "18.232.0.0/14"),
("Ashburn", "44.192.0.0/11"),
("San Francisco", "13.52.0.0/14"), ("San Francisco", "13.56.0.0/14"),
("San Francisco", "54.176.0.0/12"),("San Francisco", "54.183.0.0/16"),
("San Francisco", "54.241.0.0/16"),("San Francisco", "184.72.0.0/15"),
("San Francisco", "50.18.0.0/15"),
("Portland", "34.208.0.0/12"),("Portland", "44.224.0.0/11"),
("Portland", "50.112.0.0/16"),("Portland", "54.68.0.0/14"),
("Portland", "54.244.0.0/15"),
("Dublin", "34.240.0.0/13"),("Dublin", "52.16.0.0/14"),
("Dublin", "52.48.0.0/14"), ("Dublin", "54.72.0.0/13"),
("Dublin", "54.154.0.0/15"),("Dublin", "63.32.0.0/14"),
("London", "3.8.0.0/13"), ("London", "18.168.0.0/14"),
("London", "18.170.0.0/15"),("London", "35.176.0.0/15"),
("London", "35.178.0.0/15"),
("Frankfurt", "3.64.0.0/12"), ("Frankfurt", "18.184.0.0/14"),
("Frankfurt", "18.194.0.0/15"),("Frankfurt", "35.156.0.0/14"),
("Frankfurt", "52.28.0.0/14"), ("Frankfurt", "52.57.0.0/16"),
("Paris", "15.188.0.0/16"),("Paris", "35.180.0.0/14"),
("Paris", "52.47.0.0/16"),
("Stockholm", "13.48.0.0/14"), ("Stockholm", "16.16.0.0/16"),
("Stockholm", "16.170.0.0/15"),
("Milan", "15.160.0.0/16"),("Milan", "35.152.0.0/16"),
("Singapore", "3.0.0.0/15"), ("Singapore", "13.212.0.0/14"),
("Singapore", "13.228.0.0/15"),("Singapore", "18.136.0.0/14"),
("Singapore", "46.137.0.0/17"),("Singapore", "52.74.0.0/16"),
("Singapore", "54.179.0.0/16"),
("Tokyo", "3.112.0.0/14"), ("Tokyo", "13.112.0.0/14"),
("Tokyo", "13.230.0.0/15"),("Tokyo", "18.176.0.0/15"),
("Tokyo", "54.64.0.0/15"), ("Tokyo", "54.92.0.0/16"),
("Tokyo", "54.168.0.0/15"),("Tokyo", "54.238.0.0/15"),
("Osaka", "13.208.0.0/16"),("Osaka", "15.152.0.0/16"),
("Seoul", "3.34.0.0/15"), ("Seoul", "13.124.0.0/16"),
("Seoul", "13.209.0.0/16"),("Seoul", "15.164.0.0/16"),
("Seoul", "52.78.0.0/16"),
("Mumbai", "3.6.0.0/15"), ("Mumbai", "13.126.0.0/15"),
("Mumbai", "15.206.0.0/16"),("Mumbai", "35.154.0.0/15"),
("Mumbai", "52.66.0.0/16"),
("Sydney", "3.24.0.0/14"), ("Sydney", "13.54.0.0/15"),
("Sydney", "13.210.0.0/15"),("Sydney", "52.62.0.0/16"),
("Sydney", "54.66.0.0/16"), ("Sydney", "54.206.0.0/16"),
("Sao Paulo", "15.228.0.0/15"),("Sao Paulo", "18.228.0.0/15"),
("Sao Paulo", "54.94.0.0/16"), ("Sao Paulo", "54.232.0.0/15"),
("Montreal", "3.96.0.0/14"), ("Montreal", "15.222.0.0/15"),
("Montreal", "35.182.0.0/14"),("Montreal", "52.60.0.0/16"),
("Montreal", "99.79.0.0/16"),
("Hong Kong", "18.162.0.0/15"),
("Bahrain", "15.184.0.0/15"),("Bahrain", "157.175.0.0/16"),
("Cape Town", "13.244.0.0/15"),
]
# Layer 3: Azure
AZURE_RANGES = [
("Ashburn", "20.0.0.0/11"), ("Ashburn", "40.64.0.0/10"),
("Ashburn", "52.224.0.0/11"),("Ashburn", "52.145.0.0/16"),
("Ashburn", "104.40.0.0/13"),
("San Francisco", "13.64.0.0/11"), ("San Francisco", "40.112.0.0/13"),
("San Francisco", "104.42.0.0/16"),("San Francisco", "138.91.0.0/16"),
("Chicago", "23.96.0.0/13"), ("Chicago", "40.80.0.0/12"),
("Dallas", "13.84.0.0/15"), ("Dallas", "23.100.0.0/15"),
("Dallas", "40.117.0.0/16"),
("London", "20.49.0.0/16"), ("London", "51.140.0.0/14"),
("London", "51.105.0.0/16"),
("Frankfurt", "20.52.0.0/16"), ("Frankfurt", "40.115.0.0/16"),
("Frankfurt", "51.103.0.0/16"),
("Amsterdam", "20.56.0.0/16"), ("Amsterdam", "40.119.0.0/16"),
("Amsterdam", "52.232.0.0/13"),
("Paris", "20.43.0.0/16"), ("Paris", "40.89.0.0/16"),
("Tokyo", "20.44.0.0/15"), ("Tokyo", "40.74.0.0/15"),
("Tokyo", "52.185.0.0/16"),
("Singapore", "20.184.0.0/15"),("Singapore", "40.82.0.0/16"),
("Singapore", "52.139.0.0/16"),
("Seoul", "20.41.0.0/16"), ("Seoul", "52.141.0.0/16"),
("Mumbai", "20.192.0.0/16"),("Mumbai", "104.211.0.0/16"),
("Sydney", "20.36.0.0/14"), ("Sydney", "40.126.0.0/16"),
("Sydney", "52.147.0.0/16"),
("Sao Paulo", "191.232.0.0/15"),("Sao Paulo", "20.197.0.0/16"),
("Toronto", "20.38.0.0/15"),
("Hong Kong", "20.196.0.0/16"),
]
# Layer 4: Google Cloud
GCP_RANGES = [
("Ashburn", "34.0.0.0/8"), ("Ashburn", "35.224.0.0/12"),
("Ashburn", "104.196.0.0/14"),
("San Francisco", "35.230.0.0/15"),("San Francisco", "104.198.0.0/14"),
("Chicago", "35.222.0.0/15"),("Chicago", "104.154.0.0/15"),
("Dallas", "35.220.0.0/15"),
("London", "35.240.0.0/13"),("London", "104.199.0.0/14"),
("Frankfurt", "35.234.0.0/15"),("Frankfurt", "104.155.0.0/14"),
("Amsterdam", "35.204.0.0/14"),
("Tokyo", "35.200.0.0/13"),
("Singapore", "34.80.0.0/15"), ("Singapore", "34.87.0.0/16"),
("Seoul", "35.216.0.0/14"),("Seoul", "34.64.0.0/11"),
("Mumbai", "34.93.0.0/16"),
("Sydney", "35.201.0.0/16"),
("Sao Paulo", "35.199.0.0/16"),("Sao Paulo", "34.95.0.0/16"),
("Taipei", "35.194.0.0/14"),
("Hong Kong", "34.92.0.0/16"),
("Zurich", "34.65.0.0/16"),
("Helsinki", "34.88.0.0/15"),
("Warsaw", "34.118.0.0/16"),
]
# Layer 5: Alibaba Cloud
ALIBABA_RANGES = [
("Beijing", "39.96.0.0/13"), ("Beijing", "47.92.0.0/14"),
("Beijing", "101.200.0.0/15"),("Beijing", "120.24.0.0/14"),
("Beijing", "120.48.0.0/15"),("Beijing", "182.92.0.0/16"),
("Beijing", "59.110.0.0/16"),
("Shanghai", "47.100.0.0/14"),("Shanghai", "101.132.0.0/16"),
("Shanghai", "106.14.0.0/15"),("Shanghai", "120.55.0.0/16"),
("Shanghai", "139.196.0.0/14"),("Shanghai", "47.103.0.0/16"),
("Hangzhou", "47.96.0.0/15"), ("Hangzhou", "120.26.0.0/16"),
("Hangzhou", "120.76.0.0/15"),("Hangzhou", "121.40.0.0/14"),
("Hangzhou", "121.196.0.0/14"),("Hangzhou", "47.98.0.0/15"),
("Shenzhen", "47.106.0.0/16"),("Shenzhen", "120.78.0.0/15"),
("Shenzhen", "47.115.0.0/16"),
("Guangzhou", "120.80.0.0/15"),
("Chengdu", "47.108.0.0/15"),
("Hong Kong", "47.52.0.0/14"), ("Hong Kong", "47.89.0.0/16"),
("Hong Kong", "47.56.0.0/15"),
("Singapore", "47.74.0.0/15"), ("Singapore", "47.88.0.0/16"),
("Singapore", "149.129.0.0/16"),
("Tokyo", "47.91.0.0/16"), ("Tokyo", "47.117.0.0/16"),
("Frankfurt", "47.254.0.0/16"),("Frankfurt", "47.116.0.0/16"),
("London", "47.118.0.0/16"),
("San Francisco", "47.57.0.0/16"), ("San Francisco", "47.76.0.0/15"),
("San Francisco", "47.253.0.0/16"),
("Sydney", "47.114.0.0/16"),
("Kuala Lumpur", "47.120.0.0/16"),
("Jakarta", "47.122.0.0/16"),
("Mumbai", "47.112.0.0/16"),
("Dubai", "47.119.0.0/16"),
]
# Layer 6: Cloudflare CDN
CLOUDFLARE_RANGES = [
("San Francisco", "173.245.48.0/20"), ("San Francisco", "103.21.244.0/22"),
("San Francisco", "103.22.200.0/22"), ("San Francisco", "103.31.4.0/22"),
("San Francisco", "141.101.64.0/18"), ("San Francisco", "108.162.192.0/18"),
("San Francisco", "190.93.240.0/20"), ("San Francisco", "188.114.96.0/20"),
("San Francisco", "197.234.240.0/22"), ("San Francisco", "198.41.128.0/17"),
("San Francisco", "162.158.0.0/15"), ("San Francisco", "104.16.0.0/13"),
("San Francisco", "104.24.0.0/14"), ("San Francisco", "172.64.0.0/13"),
("San Francisco", "131.0.72.0/22"),
]
# Layer 7: Akamai CDN
AKAMAI_RANGES = [
("Cambridge", "23.0.0.0/12"), ("Cambridge", "23.32.0.0/11"),
("Cambridge", "23.64.0.0/14"), ("Cambridge", "23.72.0.0/13"),
("Cambridge", "23.192.0.0/11"), ("Cambridge", "23.208.0.0/12"),
("Cambridge", "72.246.0.0/15"), ("Cambridge", "92.122.0.0/15"),
("Cambridge", "95.100.0.0/15"), ("Cambridge", "96.6.0.0/15"),
("Cambridge", "96.16.0.0/15"), ("Cambridge", "104.64.0.0/10"),
("Cambridge", "184.24.0.0/13"), ("Cambridge", "184.84.0.0/14"),
("Cambridge", "2.16.0.0/13"), ("Cambridge", "2.20.0.0/14"),
("Cambridge", "2.22.0.0/16"),
]
# Layer 8: Fastly CDN
FASTLY_RANGES = [
("San Francisco", "151.101.0.0/16"), ("San Francisco", "157.52.64.0/18"),
("San Francisco", "157.52.128.0/17"), ("San Francisco","167.82.0.0/17"),
("San Francisco", "167.82.128.0/18"), ("San Francisco","172.111.64.0/18"),
("San Francisco", "185.31.16.0/22"), ("San Francisco","199.27.72.0/21"),
("San Francisco", "199.232.0.0/16"),
]
# Layer 9: Chinese ISPs
CN_ISP_RANGES = [
("Shanghai", "1.0.0.0/8"), ("Beijing", "14.0.0.0/8"),
("Shanghai", "27.0.0.0/8"), ("Guangzhou","36.0.0.0/8"),
("Beijing", "42.0.0.0/8"), ("Shenzhen", "58.0.0.0/8"),
("Shanghai", "59.0.0.0/8"), ("Beijing", "60.0.0.0/8"),
("Shanghai", "61.0.0.0/8"), ("Beijing", "101.0.0.0/8"),
("Guangzhou","110.0.0.0/8"), ("Shanghai", "111.0.0.0/8"),
("Beijing", "112.0.0.0/8"), ("Shanghai", "113.0.0.0/8"),
("Beijing", "114.0.0.0/8"), ("Shanghai", "115.0.0.0/8"),
("Beijing", "116.0.0.0/8"), ("Shanghai", "117.0.0.0/8"),
("Beijing", "118.0.0.0/8"), ("Shanghai", "119.0.0.0/8"),
("Beijing", "120.0.0.0/8"), ("Shanghai", "121.0.0.0/8"),
("Beijing", "122.0.0.0/8"), ("Shanghai", "123.0.0.0/8"),
("Beijing", "124.0.0.0/8"), ("Shanghai", "125.0.0.0/8"),
("Guangzhou","139.0.0.0/8"), ("Shanghai", "180.0.0.0/8"),
("Beijing", "182.0.0.0/8"), ("Shanghai", "183.0.0.0/8"),
("Beijing", "202.0.0.0/8"), ("Beijing", "203.0.0.0/8"),
("Shanghai", "210.0.0.0/8"), ("Beijing", "211.0.0.0/8"),
("Shanghai", "218.0.0.0/8"), ("Beijing", "219.0.0.0/8"),
("Guangzhou","220.0.0.0/8"), ("Shanghai", "221.0.0.0/8"),
("Beijing", "222.0.0.0/8"), ("Beijing", "223.0.0.0/8"),
]
# Layer 10: US ISPs
US_ISP_RANGES = [
("New York", "24.0.0.0/8"), ("Chicago", "50.128.0.0/9"),
("Denver", "50.160.0.0/11"),("Philadelphia", "67.160.0.0/11"),
("Boston", "69.136.0.0/13"),("Seattle", "69.248.0.0/12"),
("San Francisco", "71.192.0.0/10"),("Atlanta", "73.0.0.0/8"),
("Houston", "76.0.0.0/8"), ("New York", "96.224.0.0/11"),
("Chicago", "98.192.0.0/10"),
("Dallas", "12.0.0.0/8"), ("Atlanta", "32.0.0.0/8"),
("New York", "45.0.0.0/8"), ("Chicago", "64.0.0.0/8"),
("San Francisco", "65.0.0.0/8"), ("Dallas", "66.0.0.0/8"),
("Miami", "67.0.0.0/8"), ("New York", "69.0.0.0/8"),
("Chicago", "70.0.0.0/8"), ("San Francisco","75.0.0.0/8"),
("New York", "99.0.0.0/8"), ("Dallas", "104.0.0.0/8"),
("Atlanta", "107.0.0.0/8"), ("Chicago", "108.0.0.0/8"),
("New York", "71.160.0.0/12"),("Dallas", "72.64.0.0/10"),
("Atlanta", "74.96.0.0/11"), ("San Francisco","96.240.0.0/12"),
("Chicago", "100.0.0.0/10"), ("New York", "108.16.0.0/12"),
("Dallas", "141.144.0.0/12"),("Miami", "173.48.0.0/12"),
]
# Layer 11: European ISPs
EU_ISP_RANGES = [
("Frankfurt", "79.192.0.0/10"), ("Berlin", "80.128.0.0/11"),
("Munich", "87.128.0.0/10"), ("Frankfurt", "91.0.0.0/10"),
("Berlin", "93.192.0.0/10"), ("Munich", "217.80.0.0/12"),
("Frankfurt", "217.224.0.0/11"),
("London", "2.0.0.0/8"), ("London", "5.0.0.0/8"),
("London", "25.0.0.0/8"), ("London", "31.0.0.0/8"),
("London", "51.0.0.0/8"), ("London", "81.0.0.0/8"),
("London", "109.0.0.0/8"), ("London", "146.0.0.0/8"),
("London", "176.0.0.0/8"), ("London", "185.0.0.0/8"),
("London", "188.0.0.0/8"), ("London", "212.0.0.0/8"),
("Paris", "37.0.0.0/8"), ("Paris", "128.0.0.0/8"),
("Paris", "129.0.0.0/8"), ("Paris", "137.0.0.0/8"),
("Paris", "145.0.0.0/8"), ("Paris", "147.0.0.0/8"),
("Paris", "156.0.0.0/8"), ("Paris", "159.0.0.0/8"),
("Paris", "161.0.0.0/8"), ("Paris", "194.0.0.0/8"),
("Amsterdam", "46.0.0.0/8"), ("Amsterdam", "62.0.0.0/8"),
("Amsterdam", "77.0.0.0/8"), ("Amsterdam", "80.0.0.0/8"),
("Amsterdam", "82.0.0.0/8"), ("Amsterdam", "83.0.0.0/8"),
("Amsterdam", "84.0.0.0/8"), ("Amsterdam", "85.0.0.0/8"),
("Amsterdam", "86.0.0.0/8"), ("Amsterdam", "88.0.0.0/8"),
("Amsterdam", "89.0.0.0/8"), ("Amsterdam", "90.0.0.0/8"),
("Amsterdam", "195.0.0.0/8"), ("Amsterdam", "213.0.0.0/8"),
("Berlin", "78.0.0.0/8"), ("Berlin", "79.0.0.0/8"),
("Berlin", "87.0.0.0/8"), ("Berlin", "95.0.0.0/8"),
("Berlin", "130.0.0.0/8"), ("Berlin", "134.0.0.0/8"),
("Berlin", "141.0.0.0/8"), ("Berlin", "149.0.0.0/8"),
("Berlin", "193.0.0.0/8"), ("Berlin", "217.0.0.0/8"),
("Stockholm", "131.0.0.0/8"), ("Stockholm", "155.0.0.0/8"),
("Stockholm", "158.0.0.0/8"), ("Stockholm", "171.0.0.0/8"),
("Milan", "132.0.0.0/8"), ("Milan", "138.0.0.0/8"),
("Milan", "143.0.0.0/8"), ("Milan", "151.0.0.0/8"),
("Madrid", "5.0.0.0/8"), ("Madrid", "65.16.0.0/12"),
("Madrid", "150.192.0.0/10"),("Madrid", "161.64.0.0/12"),
("Moscow", "92.0.0.0/8"), ("Moscow", "94.0.0.0/8"),
]
# Layer 12: Japanese ISPs
JP_ISP_RANGES = [
("Tokyo", "126.0.0.0/8"), ("Tokyo", "133.0.0.0/8"),
("Tokyo", "150.0.0.0/8"), ("Osaka", "153.128.0.0/10"),
("Tokyo", "157.0.0.0/8"), ("Osaka", "160.0.0.0/8"),
("Tokyo", "163.0.0.0/8"), ("Osaka", "164.0.0.0/8"),
("Nagoya", "192.50.0.0/16"),("Tokyo", "202.208.0.0/12"),
("Osaka", "210.128.0.0/11"),("Nagoya","210.160.0.0/12"),
("Tokyo", "210.224.0.0/12"),("Osaka", "211.0.0.0/12"),
("Tokyo", "59.128.0.0/12"), ("Osaka", "60.56.0.0/13"),
("Tokyo", "61.112.0.0/12"), ("Osaka", "111.64.0.0/11"),
("Tokyo", "118.0.0.0/11"), ("Osaka", "121.80.0.0/12"),
("Tokyo", "122.16.0.0/12"), ("Osaka", "125.0.0.0/14"),
]
# ============================================================
# Build non-overlapping range list
# ============================================================
def ip_to_int(ip: str) -> int:
parts = [int(p) for p in ip.split(".")]
return (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8) | parts[3]
def int_to_ip(val: int) -> str:
return f"{(val >> 24) & 0xFF}.{(val >> 16) & 0xFF}.{(val >> 8) & 0xFF}.{val & 0xFF}"
# Collect all priority ranges
all_layers = [
("Private", PRIVATE_RANGES),
("DNS", DNS_RANGES),
("AWS", AWS_RANGES),
("Azure", AZURE_RANGES),
("GCP", GCP_RANGES),
("Alibaba", ALIBABA_RANGES),
("Cloudflare", CLOUDFLARE_RANGES),
("Akamai", AKAMAI_RANGES),
("Fastly", FASTLY_RANGES),
("CN_ISP", CN_ISP_RANGES),
("US_ISP", US_ISP_RANGES),
("EU_ISP", EU_ISP_RANGES),
("JP_ISP", JP_ISP_RANGES),
]
# Reserved ranges to skip
RESERVED = [
(ip_to_int("0.0.0.0"), ip_to_int("0.255.255.255")),
(ip_to_int("127.0.0.0"), ip_to_int("127.255.255.255")),
(ip_to_int("169.254.0.0"), ip_to_int("169.254.255.255")),
(ip_to_int("224.0.0.0"), ip_to_int("255.255.255.255")),
]
def is_reserved(s: int, e: int) -> bool:
for rs, re in RESERVED:
if s <= re and e >= rs:
return True
return False
# Process layers in priority order — higher priority wins on overlap
# merged is kept sorted; new ranges are inserted, trimming overlaps
merged: list[tuple[int, int, str, float, float, str]] = []
def insert_range(s: int, e: int, city: str, lat: float, lon: float, cc: str) -> None:
"""Insert range into merged, trimming parts that overlap existing (higher-priority) ranges."""
# Find position using bisect
lo, hi = 0, len(merged)
while lo < hi:
mid = (lo + hi) // 2
if merged[mid][0] < s:
lo = mid + 1
else:
hi = mid
idx = lo
# Check for overlap with previous entry
if idx > 0 and merged[idx-1][1] >= s:
s = merged[idx-1][1] + 1
# Trim against next entries
while idx < len(merged) and s <= e:
if merged[idx][0] > e:
break
if s < merged[idx][0]:
# Gap: insert [s, merged[idx][0]-1]
merged.insert(idx, (s, merged[idx][0] - 1, city, lat, lon, cc))
idx += 1
s = merged[idx-1][1] + 1 if idx > 0 else s
s = max(s, merged[idx][1] + 1)
idx += 1
if s <= e:
merged.insert(idx, (s, e, city, lat, lon, cc))
for layer_name, layer_ranges in all_layers:
for city, cidr in layer_ranges:
s, e = cidr_to_ints(cidr)
if is_reserved(s, e):
continue
lat, lon, cc = CITIES[city]
insert_range(s, e, city, lat, lon, cc)
# ---- Gap filling cities (rotating) ----
gap_cities = [
("Shanghai", 31.2304, 121.4737, "CN"),
("Beijing", 39.9042, 116.4074, "CN"),
("Tokyo", 35.6762, 139.6503, "JP"),
("Seoul", 37.5665, 126.9780, "KR"),
("Singapore", 1.3521, 103.8198, "SG"),
("London", 51.5074, -0.1278, "GB"),
("Frankfurt", 50.1109, 8.6821, "DE"),
("New York", 40.7128, -74.0060, "US"),
("San Francisco", 37.7749, -122.4194, "US"),
("Sydney", -33.8688, 151.2093, "AU"),
("Mumbai", 19.0760, 72.8777, "IN"),
("Paris", 48.8566, 2.3522, "FR"),
("Amsterdam", 52.3676, 4.9041, "NL"),
("Sao Paulo", -23.5505, -46.6333, "BR"),
("Moscow", 55.7558, 37.6173, "RU"),
("Chicago", 41.8781, -87.6298, "US"),
("Dallas", 32.7767, -96.7970, "US"),
("Atlanta", 33.7490, -84.3880, "US"),
("Toronto", 43.6532, -79.3832, "CA"),
("Hong Kong", 22.3193, 114.1694, "HK"),
("Taipei", 25.0330, 121.5654, "TW"),
("Madrid", 40.4168, -3.7038, "ES"),
("Milan", 45.4642, 9.1900, "IT"),
("Stockholm", 59.3293, 18.0686, "SE"),
("Osaka", 34.6937, 135.5022, "JP"),
("Guangzhou", 23.1291, 113.2644, "CN"),
("Shenzhen", 22.5431, 114.0579, "CN"),
("Berlin", 52.5200, 13.4050, "DE"),
("Dubai", 25.2048, 55.2708, "AE"),
("Bangkok", 13.7563, 100.5018, "TH"),
]
# Fill gaps — use /9 blocks (8,388,608 IPs) for large gaps, /12 (1,048,576) for smaller
idx = 0
final_ranges: list[tuple[int, int, str, float, float, str]] = []
last_end = ip_to_int("1.0.0.0") - 1 # start from 1.0.0.0
MAX_IP = ip_to_int("223.255.255.255")
CHUNK_BIG = 0x800000 # /9 = 8,388,608 IPs
CHUNK_SMALL = 0x100000 # /12 = 1,048,576 IPs
for s, e, city, lat, lon, cc in merged:
gap_size = s - last_end - 1
if gap_size > 0:
gap_start = last_end + 1
gap_end = s - 1
chunk = CHUNK_BIG if gap_size > 0x800000 else CHUNK_SMALL
curr = gap_start
while curr <= gap_end:
chunk_end = min(curr + chunk - 1, gap_end)
gcity, glat, glon, gcc = gap_cities[idx % len(gap_cities)]
final_ranges.append((curr, chunk_end, gcity, glat, glon, gcc))
idx += 1
curr = chunk_end + 1
final_ranges.append((s, e, city, lat, lon, cc))
last_end = e
# Trailing gap
if last_end < MAX_IP:
gap_size = MAX_IP - last_end
curr = last_end + 1
chunk = CHUNK_BIG if gap_size > 0x800000 else CHUNK_SMALL
while curr <= MAX_IP:
chunk_end = min(curr + chunk - 1, MAX_IP)
gcity, glat, glon, gcc = gap_cities[idx % len(gap_cities)]
final_ranges.append((curr, chunk_end, gcity, glat, glon, gcc))
idx += 1
curr = chunk_end + 1
# ============================================================
# Verify
# ============================================================
final_ranges.sort(key=lambda x: x[0])
overlaps = sum(1 for i in range(len(final_ranges)-1) if final_ranges[i][1] >= final_ranges[i+1][0])
has_gaps = sum(1 for i in range(len(final_ranges)-1) if final_ranges[i][1]+1 < final_ranges[i+1][0])
print(f"Overlap check: {'OK (0)' if overlaps == 0 else f'FAIL ({overlaps})'}")
print(f"Gap check: {'OK (0)' if has_gaps == 0 else f'HAS GAPS ({has_gaps})'}")
# ============================================================
# Write output
# ============================================================
out_path = Path(__file__).parent / "geoip_data.txt"
with open(out_path, "w", encoding="utf-8") as f:
f.write("# ===== Offline GeoIP Database — 天璇 (TianXuan) =====\n")
f.write("# Format: start_ip,end_ip,lat,lon,city,country\n")
f.write("# Layers: Private, DNS, AWS, Azure, GCP, Alibaba, Cloudflare, Akamai, Fastly, CN_ISP, US_ISP, EU_ISP, JP_ISP\n")
f.write("# Strategy: priority-ordered, overlap-resolved (first wins), gaps filled with city blocks\n\n")
for s, e, city, lat, lon, cc in final_ranges:
f.write(f"{int_to_ip(s)},{int_to_ip(e)},{lat},{lon},{city},{cc}\n")
cities_used = sorted(set(r[2] for r in final_ranges))
print(f"Total entries: {len(final_ranges)}")
print(f"Unique cities: {len(cities_used)} ({', '.join(cities_used)})")
print(f"File size: {out_path.stat().st_size:,} bytes")
print(f"First: {int_to_ip(final_ranges[0][0])} ({final_ranges[0][2]})")
print(f"Last: {int_to_ip(final_ranges[-1][1])} ({final_ranges[-1][2]})")
+808
View File
@@ -0,0 +1,808 @@
# ===== Offline GeoIP Database — 天璇 (TianXuan) =====
# Format: start_ip,end_ip,lat,lon,city,country
# Layers: Private, DNS, AWS, Azure, GCP, Alibaba, Cloudflare, Akamai, Fastly, CN_ISP, US_ISP, EU_ISP, JP_ISP
# Strategy: priority-ordered, overlap-resolved (first wins), gaps filled with city blocks
1.0.0.0,1.0.0.0,31.2304,121.4737,Shanghai,CN
1.0.0.1,1.0.0.1,37.7749,-122.4194,San Francisco,US
1.0.0.2,1.1.1.0,31.2304,121.4737,Shanghai,CN
1.1.1.1,1.1.1.1,37.7749,-122.4194,San Francisco,US
1.1.1.2,1.255.255.255,31.2304,121.4737,Shanghai,CN
2.0.0.0,2.15.255.255,51.5074,-0.1278,London,GB
2.16.0.0,2.23.255.255,42.3736,-71.1097,Cambridge,US
2.24.0.0,2.255.255.255,51.5074,-0.1278,London,GB
3.0.0.0,3.1.255.255,1.3521,103.8198,Singapore,SG
3.2.0.0,3.5.255.255,31.2304,121.4737,Shanghai,CN
3.6.0.0,3.7.255.255,19.076,72.8777,Mumbai,IN
3.8.0.0,3.15.255.255,51.5074,-0.1278,London,GB
3.16.0.0,3.23.255.255,39.9042,116.4074,Beijing,CN
3.24.0.0,3.27.255.255,-33.8688,151.2093,Sydney,AU
3.28.0.0,3.33.255.255,35.6762,139.6503,Tokyo,JP
3.34.0.0,3.35.255.255,37.5665,126.978,Seoul,KR
3.36.0.0,3.51.255.255,37.5665,126.978,Seoul,KR
3.52.0.0,3.63.255.255,1.3521,103.8198,Singapore,SG
3.64.0.0,3.79.255.255,50.1109,8.6821,Frankfurt,DE
3.80.0.0,3.95.255.255,51.5074,-0.1278,London,GB
3.96.0.0,3.99.255.255,45.5017,-73.5673,Montreal,CA
3.100.0.0,3.111.255.255,50.1109,8.6821,Frankfurt,DE
3.112.0.0,3.115.255.255,35.6762,139.6503,Tokyo,JP
3.116.0.0,3.131.255.255,40.7128,-74.006,New York,US
3.132.0.0,3.147.255.255,37.7749,-122.4194,San Francisco,US
3.148.0.0,3.163.255.255,-33.8688,151.2093,Sydney,AU
3.164.0.0,3.179.255.255,19.076,72.8777,Mumbai,IN
3.180.0.0,3.195.255.255,48.8566,2.3522,Paris,FR
3.196.0.0,3.207.255.255,52.3676,4.9041,Amsterdam,NL
3.208.0.0,3.215.255.255,39.0438,-77.4874,Ashburn,US
3.216.0.0,3.223.255.255,-23.5505,-46.6333,Sao Paulo,BR
3.224.0.0,3.239.255.255,39.0438,-77.4874,Ashburn,US
3.240.0.0,4.111.255.255,55.7558,37.6173,Moscow,RU
4.112.0.0,4.239.255.255,41.8781,-87.6298,Chicago,US
4.240.0.0,4.255.255.255,32.7767,-96.797,Dallas,US
5.0.0.0,5.255.255.255,51.5074,-0.1278,London,GB
6.0.0.0,6.127.255.255,33.749,-84.388,Atlanta,US
6.128.0.0,6.255.255.255,43.6532,-79.3832,Toronto,CA
7.0.0.0,7.127.255.255,22.3193,114.1694,Hong Kong,HK
7.128.0.0,7.255.255.255,25.033,121.5654,Taipei,TW
8.0.0.0,8.8.4.3,40.4168,-3.7038,Madrid,ES
8.8.4.4,8.8.4.4,37.3861,-122.0839,Mountain View,US
8.8.4.5,8.8.8.7,45.4642,9.19,Milan,IT
8.8.8.8,8.8.8.8,37.3861,-122.0839,Mountain View,US
8.8.8.9,8.136.8.8,59.3293,18.0686,Stockholm,SE
8.136.8.9,9.8.8.8,34.6937,135.5022,Osaka,JP
9.8.8.9,9.136.8.8,23.1291,113.2644,Guangzhou,CN
9.136.8.9,9.255.255.255,22.5431,114.0579,Shenzhen,CN
10.0.0.0,10.255.255.255,39.9042,116.4074,Beijing,CN
11.0.0.0,11.127.255.255,52.52,13.405,Berlin,DE
11.128.0.0,11.255.255.255,25.2048,55.2708,Dubai,AE
12.0.0.0,12.255.255.255,32.7767,-96.797,Dallas,US
13.0.0.0,13.15.255.255,13.7563,100.5018,Bangkok,TH
13.16.0.0,13.31.255.255,31.2304,121.4737,Shanghai,CN
13.32.0.0,13.47.255.255,39.9042,116.4074,Beijing,CN
13.48.0.0,13.51.255.255,59.3293,18.0686,Stockholm,SE
13.52.0.0,13.55.255.255,37.7749,-122.4194,San Francisco,US
13.56.0.0,13.59.255.255,37.7749,-122.4194,San Francisco,US
13.60.0.0,13.63.255.255,35.6762,139.6503,Tokyo,JP
13.64.0.0,13.95.255.255,37.7749,-122.4194,San Francisco,US
13.96.0.0,13.111.255.255,37.5665,126.978,Seoul,KR
13.112.0.0,13.115.255.255,35.6762,139.6503,Tokyo,JP
13.116.0.0,13.123.255.255,1.3521,103.8198,Singapore,SG
13.124.0.0,13.124.255.255,37.5665,126.978,Seoul,KR
13.125.0.0,13.125.255.255,51.5074,-0.1278,London,GB
13.126.0.0,13.127.255.255,19.076,72.8777,Mumbai,IN
13.128.0.0,13.143.255.255,50.1109,8.6821,Frankfurt,DE
13.144.0.0,13.159.255.255,40.7128,-74.006,New York,US
13.160.0.0,13.175.255.255,37.7749,-122.4194,San Francisco,US
13.176.0.0,13.191.255.255,-33.8688,151.2093,Sydney,AU
13.192.0.0,13.207.255.255,19.076,72.8777,Mumbai,IN
13.208.0.0,13.208.255.255,34.6937,135.5022,Osaka,JP
13.209.0.0,13.209.255.255,37.5665,126.978,Seoul,KR
13.210.0.0,13.211.255.255,-33.8688,151.2093,Sydney,AU
13.212.0.0,13.215.255.255,1.3521,103.8198,Singapore,SG
13.216.0.0,13.227.255.255,48.8566,2.3522,Paris,FR
13.228.0.0,13.229.255.255,1.3521,103.8198,Singapore,SG
13.230.0.0,13.231.255.255,35.6762,139.6503,Tokyo,JP
13.232.0.0,13.243.255.255,52.3676,4.9041,Amsterdam,NL
13.244.0.0,13.245.255.255,-33.9249,18.4241,Cape Town,ZA
13.246.0.0,13.255.255.255,-23.5505,-46.6333,Sao Paulo,BR
14.0.0.0,14.255.255.255,39.9042,116.4074,Beijing,CN
15.0.0.0,15.127.255.255,55.7558,37.6173,Moscow,RU
15.128.0.0,15.151.255.255,41.8781,-87.6298,Chicago,US
15.152.0.0,15.152.255.255,34.6937,135.5022,Osaka,JP
15.153.0.0,15.159.255.255,32.7767,-96.797,Dallas,US
15.160.0.0,15.160.255.255,45.4642,9.19,Milan,IT
15.161.0.0,15.163.255.255,33.749,-84.388,Atlanta,US
15.164.0.0,15.164.255.255,37.5665,126.978,Seoul,KR
15.165.0.0,15.180.255.255,43.6532,-79.3832,Toronto,CA
15.181.0.0,15.183.255.255,22.3193,114.1694,Hong Kong,HK
15.184.0.0,15.185.255.255,26.0667,50.5577,Bahrain,BH
15.186.0.0,15.187.255.255,25.033,121.5654,Taipei,TW
15.188.0.0,15.188.255.255,48.8566,2.3522,Paris,FR
15.189.0.0,15.204.255.255,40.4168,-3.7038,Madrid,ES
15.205.0.0,15.205.255.255,45.4642,9.19,Milan,IT
15.206.0.0,15.206.255.255,19.076,72.8777,Mumbai,IN
15.207.0.0,15.221.255.255,59.3293,18.0686,Stockholm,SE
15.222.0.0,15.223.255.255,45.5017,-73.5673,Montreal,CA
15.224.0.0,15.227.255.255,34.6937,135.5022,Osaka,JP
15.228.0.0,15.229.255.255,-23.5505,-46.6333,Sao Paulo,BR
15.230.0.0,15.245.255.255,23.1291,113.2644,Guangzhou,CN
15.246.0.0,16.5.255.255,22.5431,114.0579,Shenzhen,CN
16.6.0.0,16.15.255.255,52.52,13.405,Berlin,DE
16.16.0.0,16.16.255.255,59.3293,18.0686,Stockholm,SE
16.17.0.0,16.144.255.255,25.2048,55.2708,Dubai,AE
16.145.0.0,16.169.255.255,13.7563,100.5018,Bangkok,TH
16.170.0.0,16.171.255.255,59.3293,18.0686,Stockholm,SE
16.172.0.0,17.43.255.255,31.2304,121.4737,Shanghai,CN
17.44.0.0,17.171.255.255,39.9042,116.4074,Beijing,CN
17.172.0.0,18.43.255.255,35.6762,139.6503,Tokyo,JP
18.44.0.0,18.135.255.255,37.5665,126.978,Seoul,KR
18.136.0.0,18.139.255.255,1.3521,103.8198,Singapore,SG
18.140.0.0,18.155.255.255,1.3521,103.8198,Singapore,SG
18.156.0.0,18.161.255.255,51.5074,-0.1278,London,GB
18.162.0.0,18.163.255.255,22.3193,114.1694,Hong Kong,HK
18.164.0.0,18.167.255.255,50.1109,8.6821,Frankfurt,DE
18.168.0.0,18.171.255.255,51.5074,-0.1278,London,GB
18.172.0.0,18.175.255.255,40.7128,-74.006,New York,US
18.176.0.0,18.177.255.255,35.6762,139.6503,Tokyo,JP
18.178.0.0,18.183.255.255,37.7749,-122.4194,San Francisco,US
18.184.0.0,18.187.255.255,50.1109,8.6821,Frankfurt,DE
18.188.0.0,18.193.255.255,-33.8688,151.2093,Sydney,AU
18.194.0.0,18.195.255.255,50.1109,8.6821,Frankfurt,DE
18.196.0.0,18.211.255.255,19.076,72.8777,Mumbai,IN
18.212.0.0,18.227.255.255,48.8566,2.3522,Paris,FR
18.228.0.0,18.229.255.255,-23.5505,-46.6333,Sao Paulo,BR
18.230.0.0,18.231.255.255,52.3676,4.9041,Amsterdam,NL
18.232.0.0,18.235.255.255,39.0438,-77.4874,Ashburn,US
18.236.0.0,19.107.255.255,-23.5505,-46.6333,Sao Paulo,BR
19.108.0.0,19.235.255.255,55.7558,37.6173,Moscow,RU
19.236.0.0,19.255.255.255,41.8781,-87.6298,Chicago,US
20.0.0.0,20.31.255.255,39.0438,-77.4874,Ashburn,US
20.32.0.0,20.35.255.255,32.7767,-96.797,Dallas,US
20.36.0.0,20.39.255.255,-33.8688,151.2093,Sydney,AU
20.40.0.0,20.40.255.255,33.749,-84.388,Atlanta,US
20.41.0.0,20.41.255.255,37.5665,126.978,Seoul,KR
20.42.0.0,20.42.255.255,43.6532,-79.3832,Toronto,CA
20.43.0.0,20.43.255.255,48.8566,2.3522,Paris,FR
20.44.0.0,20.45.255.255,35.6762,139.6503,Tokyo,JP
20.46.0.0,20.48.255.255,22.3193,114.1694,Hong Kong,HK
20.49.0.0,20.49.255.255,51.5074,-0.1278,London,GB
20.50.0.0,20.51.255.255,25.033,121.5654,Taipei,TW
20.52.0.0,20.52.255.255,50.1109,8.6821,Frankfurt,DE
20.53.0.0,20.55.255.255,40.4168,-3.7038,Madrid,ES
20.56.0.0,20.56.255.255,52.3676,4.9041,Amsterdam,NL
20.57.0.0,20.72.255.255,45.4642,9.19,Milan,IT
20.73.0.0,20.88.255.255,59.3293,18.0686,Stockholm,SE
20.89.0.0,20.104.255.255,34.6937,135.5022,Osaka,JP
20.105.0.0,20.120.255.255,23.1291,113.2644,Guangzhou,CN
20.121.0.0,20.136.255.255,22.5431,114.0579,Shenzhen,CN
20.137.0.0,20.152.255.255,52.52,13.405,Berlin,DE
20.153.0.0,20.168.255.255,25.2048,55.2708,Dubai,AE
20.169.0.0,20.183.255.255,13.7563,100.5018,Bangkok,TH
20.184.0.0,20.185.255.255,1.3521,103.8198,Singapore,SG
20.186.0.0,20.191.255.255,31.2304,121.4737,Shanghai,CN
20.192.0.0,20.192.255.255,19.076,72.8777,Mumbai,IN
20.193.0.0,20.195.255.255,39.9042,116.4074,Beijing,CN
20.196.0.0,20.196.255.255,22.3193,114.1694,Hong Kong,HK
20.197.0.0,20.197.255.255,-23.5505,-46.6333,Sao Paulo,BR
20.198.0.0,21.69.255.255,35.6762,139.6503,Tokyo,JP
21.70.0.0,21.197.255.255,37.5665,126.978,Seoul,KR
21.198.0.0,22.69.255.255,1.3521,103.8198,Singapore,SG
22.70.0.0,22.197.255.255,51.5074,-0.1278,London,GB
22.198.0.0,22.255.255.255,50.1109,8.6821,Frankfurt,DE
23.0.0.0,23.15.255.255,42.3736,-71.1097,Cambridge,US
23.16.0.0,23.31.255.255,40.7128,-74.006,New York,US
23.32.0.0,23.63.255.255,42.3736,-71.1097,Cambridge,US
23.64.0.0,23.67.255.255,42.3736,-71.1097,Cambridge,US
23.68.0.0,23.71.255.255,37.7749,-122.4194,San Francisco,US
23.72.0.0,23.79.255.255,42.3736,-71.1097,Cambridge,US
23.80.0.0,23.95.255.255,-33.8688,151.2093,Sydney,AU
23.96.0.0,23.103.255.255,41.8781,-87.6298,Chicago,US
23.104.0.0,23.119.255.255,19.076,72.8777,Mumbai,IN
23.120.0.0,23.135.255.255,48.8566,2.3522,Paris,FR
23.136.0.0,23.151.255.255,52.3676,4.9041,Amsterdam,NL
23.152.0.0,23.167.255.255,-23.5505,-46.6333,Sao Paulo,BR
23.168.0.0,23.183.255.255,55.7558,37.6173,Moscow,RU
23.184.0.0,23.191.255.255,41.8781,-87.6298,Chicago,US
23.192.0.0,23.223.255.255,42.3736,-71.1097,Cambridge,US
23.224.0.0,23.239.255.255,32.7767,-96.797,Dallas,US
23.240.0.0,23.255.255.255,33.749,-84.388,Atlanta,US
24.0.0.0,24.255.255.255,40.7128,-74.006,New York,US
25.0.0.0,25.255.255.255,51.5074,-0.1278,London,GB
26.0.0.0,26.127.255.255,43.6532,-79.3832,Toronto,CA
26.128.0.0,26.255.255.255,22.3193,114.1694,Hong Kong,HK
27.0.0.0,27.255.255.255,31.2304,121.4737,Shanghai,CN
28.0.0.0,28.127.255.255,25.033,121.5654,Taipei,TW
28.128.0.0,28.255.255.255,40.4168,-3.7038,Madrid,ES
29.0.0.0,29.127.255.255,45.4642,9.19,Milan,IT
29.128.0.0,29.255.255.255,59.3293,18.0686,Stockholm,SE
30.0.0.0,30.127.255.255,34.6937,135.5022,Osaka,JP
30.128.0.0,30.255.255.255,23.1291,113.2644,Guangzhou,CN
31.0.0.0,31.255.255.255,51.5074,-0.1278,London,GB
32.0.0.0,32.255.255.255,33.749,-84.388,Atlanta,US
33.0.0.0,33.127.255.255,22.5431,114.0579,Shenzhen,CN
33.128.0.0,33.255.255.255,52.52,13.405,Berlin,DE
34.0.0.0,34.207.255.255,39.0438,-77.4874,Ashburn,US
34.208.0.0,34.223.255.255,45.5152,-122.6784,Portland,US
34.224.0.0,34.239.255.255,39.0438,-77.4874,Ashburn,US
34.240.0.0,34.247.255.255,53.3498,-6.2603,Dublin,IE
34.248.0.0,34.255.255.255,39.0438,-77.4874,Ashburn,US
35.0.0.0,35.127.255.255,25.2048,55.2708,Dubai,AE
35.128.0.0,35.151.255.255,13.7563,100.5018,Bangkok,TH
35.152.0.0,35.152.255.255,45.4642,9.19,Milan,IT
35.153.0.0,35.153.255.255,31.2304,121.4737,Shanghai,CN
35.154.0.0,35.155.255.255,19.076,72.8777,Mumbai,IN
35.156.0.0,35.159.255.255,50.1109,8.6821,Frankfurt,DE
35.160.0.0,35.175.255.255,39.9042,116.4074,Beijing,CN
35.176.0.0,35.177.255.255,51.5074,-0.1278,London,GB
35.178.0.0,35.179.255.255,51.5074,-0.1278,London,GB
35.180.0.0,35.183.255.255,48.8566,2.3522,Paris,FR
35.184.0.0,35.191.255.255,35.6762,139.6503,Tokyo,JP
35.192.0.0,35.195.255.255,25.033,121.5654,Taipei,TW
35.196.0.0,35.198.255.255,37.5665,126.978,Seoul,KR
35.199.0.0,35.199.255.255,-23.5505,-46.6333,Sao Paulo,BR
35.200.0.0,35.203.255.255,35.6762,139.6503,Tokyo,JP
35.204.0.0,35.207.255.255,52.3676,4.9041,Amsterdam,NL
35.208.0.0,35.215.255.255,1.3521,103.8198,Singapore,SG
35.216.0.0,35.219.255.255,37.5665,126.978,Seoul,KR
35.220.0.0,35.221.255.255,32.7767,-96.797,Dallas,US
35.222.0.0,35.223.255.255,41.8781,-87.6298,Chicago,US
35.224.0.0,35.239.255.255,39.0438,-77.4874,Ashburn,US
35.240.0.0,35.247.255.255,51.5074,-0.1278,London,GB
35.248.0.0,35.255.255.255,51.5074,-0.1278,London,GB
36.0.0.0,36.255.255.255,23.1291,113.2644,Guangzhou,CN
37.0.0.0,37.255.255.255,48.8566,2.3522,Paris,FR
38.0.0.0,38.127.255.255,50.1109,8.6821,Frankfurt,DE
38.128.0.0,38.255.255.255,40.7128,-74.006,New York,US
39.0.0.0,39.95.255.255,37.7749,-122.4194,San Francisco,US
39.96.0.0,39.103.255.255,39.9042,116.4074,Beijing,CN
39.104.0.0,39.231.255.255,-33.8688,151.2093,Sydney,AU
39.232.0.0,40.63.255.255,19.076,72.8777,Mumbai,IN
40.64.0.0,40.127.255.255,39.0438,-77.4874,Ashburn,US
40.128.0.0,40.255.255.255,48.8566,2.3522,Paris,FR
41.0.0.0,41.127.255.255,52.3676,4.9041,Amsterdam,NL
41.128.0.0,41.255.255.255,-23.5505,-46.6333,Sao Paulo,BR
42.0.0.0,42.255.255.255,39.9042,116.4074,Beijing,CN
43.0.0.0,43.127.255.255,55.7558,37.6173,Moscow,RU
43.128.0.0,43.255.255.255,41.8781,-87.6298,Chicago,US
44.0.0.0,44.127.255.255,32.7767,-96.797,Dallas,US
44.128.0.0,44.191.255.255,33.749,-84.388,Atlanta,US
44.192.0.0,44.223.255.255,39.0438,-77.4874,Ashburn,US
44.224.0.0,44.255.255.255,45.5152,-122.6784,Portland,US
45.0.0.0,45.255.255.255,40.7128,-74.006,New York,US
46.0.0.0,46.136.255.255,52.3676,4.9041,Amsterdam,NL
46.137.0.0,46.137.127.255,1.3521,103.8198,Singapore,SG
46.137.128.0,46.255.255.255,52.3676,4.9041,Amsterdam,NL
47.0.0.0,47.15.255.255,43.6532,-79.3832,Toronto,CA
47.16.0.0,47.31.255.255,22.3193,114.1694,Hong Kong,HK
47.32.0.0,47.47.255.255,25.033,121.5654,Taipei,TW
47.48.0.0,47.51.255.255,40.4168,-3.7038,Madrid,ES
47.52.0.0,47.55.255.255,22.3193,114.1694,Hong Kong,HK
47.56.0.0,47.57.255.255,22.3193,114.1694,Hong Kong,HK
47.58.0.0,47.73.255.255,45.4642,9.19,Milan,IT
47.74.0.0,47.75.255.255,1.3521,103.8198,Singapore,SG
47.76.0.0,47.77.255.255,37.7749,-122.4194,San Francisco,US
47.78.0.0,47.87.255.255,59.3293,18.0686,Stockholm,SE
47.88.0.0,47.88.255.255,1.3521,103.8198,Singapore,SG
47.89.0.0,47.89.255.255,22.3193,114.1694,Hong Kong,HK
47.90.0.0,47.90.255.255,34.6937,135.5022,Osaka,JP
47.91.0.0,47.91.255.255,35.6762,139.6503,Tokyo,JP
47.92.0.0,47.95.255.255,39.9042,116.4074,Beijing,CN
47.96.0.0,47.97.255.255,30.2741,120.1551,Hangzhou,CN
47.98.0.0,47.99.255.255,30.2741,120.1551,Hangzhou,CN
47.100.0.0,47.103.255.255,31.2304,121.4737,Shanghai,CN
47.104.0.0,47.105.255.255,23.1291,113.2644,Guangzhou,CN
47.106.0.0,47.106.255.255,22.5431,114.0579,Shenzhen,CN
47.107.0.0,47.107.255.255,22.5431,114.0579,Shenzhen,CN
47.108.0.0,47.109.255.255,30.5728,104.0668,Chengdu,CN
47.110.0.0,47.111.255.255,52.52,13.405,Berlin,DE
47.112.0.0,47.112.255.255,19.076,72.8777,Mumbai,IN
47.113.0.0,47.113.255.255,25.2048,55.2708,Dubai,AE
47.114.0.0,47.114.255.255,-33.8688,151.2093,Sydney,AU
47.115.0.0,47.115.255.255,22.5431,114.0579,Shenzhen,CN
47.116.0.0,47.116.255.255,50.1109,8.6821,Frankfurt,DE
47.117.0.0,47.117.255.255,35.6762,139.6503,Tokyo,JP
47.118.0.0,47.118.255.255,51.5074,-0.1278,London,GB
47.119.0.0,47.119.255.255,25.2048,55.2708,Dubai,AE
47.120.0.0,47.120.255.255,3.139,101.6869,Kuala Lumpur,MY
47.121.0.0,47.121.255.255,13.7563,100.5018,Bangkok,TH
47.122.0.0,47.122.255.255,-6.2088,106.8456,Jakarta,ID
47.123.0.0,47.250.255.255,31.2304,121.4737,Shanghai,CN
47.251.0.0,47.252.255.255,39.9042,116.4074,Beijing,CN
47.253.0.0,47.253.255.255,37.7749,-122.4194,San Francisco,US
47.254.0.0,47.254.255.255,50.1109,8.6821,Frankfurt,DE
47.255.0.0,48.126.255.255,35.6762,139.6503,Tokyo,JP
48.127.0.0,48.254.255.255,37.5665,126.978,Seoul,KR
48.255.0.0,49.126.255.255,1.3521,103.8198,Singapore,SG
49.127.0.0,49.254.255.255,51.5074,-0.1278,London,GB
49.255.0.0,50.17.255.255,50.1109,8.6821,Frankfurt,DE
50.18.0.0,50.19.255.255,37.7749,-122.4194,San Francisco,US
50.20.0.0,50.35.255.255,40.7128,-74.006,New York,US
50.36.0.0,50.51.255.255,37.7749,-122.4194,San Francisco,US
50.52.0.0,50.67.255.255,-33.8688,151.2093,Sydney,AU
50.68.0.0,50.83.255.255,19.076,72.8777,Mumbai,IN
50.84.0.0,50.99.255.255,48.8566,2.3522,Paris,FR
50.100.0.0,50.111.255.255,52.3676,4.9041,Amsterdam,NL
50.112.0.0,50.112.255.255,45.5152,-122.6784,Portland,US
50.113.0.0,50.127.255.255,-23.5505,-46.6333,Sao Paulo,BR
50.128.0.0,50.255.255.255,41.8781,-87.6298,Chicago,US
51.0.0.0,51.102.255.255,51.5074,-0.1278,London,GB
51.103.0.0,51.103.255.255,50.1109,8.6821,Frankfurt,DE
51.104.0.0,51.104.255.255,51.5074,-0.1278,London,GB
51.105.0.0,51.105.255.255,51.5074,-0.1278,London,GB
51.106.0.0,51.139.255.255,51.5074,-0.1278,London,GB
51.140.0.0,51.143.255.255,51.5074,-0.1278,London,GB
51.144.0.0,51.255.255.255,51.5074,-0.1278,London,GB
52.0.0.0,52.1.255.255,39.0438,-77.4874,Ashburn,US
52.2.0.0,52.3.255.255,39.0438,-77.4874,Ashburn,US
52.4.0.0,52.7.255.255,39.0438,-77.4874,Ashburn,US
52.8.0.0,52.15.255.255,55.7558,37.6173,Moscow,RU
52.16.0.0,52.19.255.255,53.3498,-6.2603,Dublin,IE
52.20.0.0,52.23.255.255,39.0438,-77.4874,Ashburn,US
52.24.0.0,52.27.255.255,41.8781,-87.6298,Chicago,US
52.28.0.0,52.31.255.255,50.1109,8.6821,Frankfurt,DE
52.32.0.0,52.46.255.255,32.7767,-96.797,Dallas,US
52.47.0.0,52.47.255.255,48.8566,2.3522,Paris,FR
52.48.0.0,52.51.255.255,53.3498,-6.2603,Dublin,IE
52.52.0.0,52.56.255.255,33.749,-84.388,Atlanta,US
52.57.0.0,52.57.255.255,50.1109,8.6821,Frankfurt,DE
52.58.0.0,52.59.255.255,43.6532,-79.3832,Toronto,CA
52.60.0.0,52.60.255.255,45.5017,-73.5673,Montreal,CA
52.61.0.0,52.61.255.255,22.3193,114.1694,Hong Kong,HK
52.62.0.0,52.62.255.255,-33.8688,151.2093,Sydney,AU
52.63.0.0,52.65.255.255,25.033,121.5654,Taipei,TW
52.66.0.0,52.66.255.255,19.076,72.8777,Mumbai,IN
52.67.0.0,52.73.255.255,40.4168,-3.7038,Madrid,ES
52.74.0.0,52.74.255.255,1.3521,103.8198,Singapore,SG
52.75.0.0,52.77.255.255,45.4642,9.19,Milan,IT
52.78.0.0,52.78.255.255,37.5665,126.978,Seoul,KR
52.79.0.0,52.94.255.255,59.3293,18.0686,Stockholm,SE
52.95.0.0,52.110.255.255,34.6937,135.5022,Osaka,JP
52.111.0.0,52.126.255.255,23.1291,113.2644,Guangzhou,CN
52.127.0.0,52.138.255.255,22.5431,114.0579,Shenzhen,CN
52.139.0.0,52.139.255.255,1.3521,103.8198,Singapore,SG
52.140.0.0,52.140.255.255,52.52,13.405,Berlin,DE
52.141.0.0,52.141.255.255,37.5665,126.978,Seoul,KR
52.142.0.0,52.144.255.255,25.2048,55.2708,Dubai,AE
52.145.0.0,52.145.255.255,39.0438,-77.4874,Ashburn,US
52.146.0.0,52.146.255.255,13.7563,100.5018,Bangkok,TH
52.147.0.0,52.147.255.255,-33.8688,151.2093,Sydney,AU
52.148.0.0,52.163.255.255,31.2304,121.4737,Shanghai,CN
52.164.0.0,52.179.255.255,39.9042,116.4074,Beijing,CN
52.180.0.0,52.184.255.255,35.6762,139.6503,Tokyo,JP
52.185.0.0,52.185.255.255,35.6762,139.6503,Tokyo,JP
52.186.0.0,52.201.255.255,37.5665,126.978,Seoul,KR
52.202.0.0,52.217.255.255,1.3521,103.8198,Singapore,SG
52.218.0.0,52.223.255.255,51.5074,-0.1278,London,GB
52.224.0.0,52.255.255.255,39.0438,-77.4874,Ashburn,US
53.0.0.0,53.127.255.255,50.1109,8.6821,Frankfurt,DE
53.128.0.0,53.255.255.255,40.7128,-74.006,New York,US
54.0.0.0,54.63.255.255,37.7749,-122.4194,San Francisco,US
54.64.0.0,54.65.255.255,35.6762,139.6503,Tokyo,JP
54.66.0.0,54.66.255.255,-33.8688,151.2093,Sydney,AU
54.67.0.0,54.67.255.255,-33.8688,151.2093,Sydney,AU
54.68.0.0,54.71.255.255,45.5152,-122.6784,Portland,US
54.72.0.0,54.79.255.255,53.3498,-6.2603,Dublin,IE
54.80.0.0,54.95.255.255,39.0438,-77.4874,Ashburn,US
54.96.0.0,54.111.255.255,19.076,72.8777,Mumbai,IN
54.112.0.0,54.127.255.255,48.8566,2.3522,Paris,FR
54.128.0.0,54.143.255.255,52.3676,4.9041,Amsterdam,NL
54.144.0.0,54.151.255.255,-23.5505,-46.6333,Sao Paulo,BR
54.152.0.0,54.159.255.255,39.0438,-77.4874,Ashburn,US
54.160.0.0,54.191.255.255,39.0438,-77.4874,Ashburn,US
54.192.0.0,54.205.255.255,55.7558,37.6173,Moscow,RU
54.206.0.0,54.206.255.255,-33.8688,151.2093,Sydney,AU
54.207.0.0,54.207.255.255,41.8781,-87.6298,Chicago,US
54.208.0.0,54.209.255.255,39.0438,-77.4874,Ashburn,US
54.210.0.0,54.223.255.255,32.7767,-96.797,Dallas,US
54.224.0.0,54.239.255.255,39.0438,-77.4874,Ashburn,US
54.240.0.0,54.240.255.255,33.749,-84.388,Atlanta,US
54.241.0.0,54.241.255.255,37.7749,-122.4194,San Francisco,US
54.242.0.0,54.243.255.255,43.6532,-79.3832,Toronto,CA
54.244.0.0,54.245.255.255,45.5152,-122.6784,Portland,US
54.246.0.0,55.117.255.255,22.3193,114.1694,Hong Kong,HK
55.118.0.0,55.245.255.255,25.033,121.5654,Taipei,TW
55.246.0.0,56.117.255.255,40.4168,-3.7038,Madrid,ES
56.118.0.0,56.245.255.255,45.4642,9.19,Milan,IT
56.246.0.0,57.117.255.255,59.3293,18.0686,Stockholm,SE
57.118.0.0,57.245.255.255,34.6937,135.5022,Osaka,JP
57.246.0.0,57.255.255.255,23.1291,113.2644,Guangzhou,CN
58.0.0.0,58.255.255.255,22.5431,114.0579,Shenzhen,CN
59.0.0.0,59.109.255.255,31.2304,121.4737,Shanghai,CN
59.110.0.0,59.110.255.255,39.9042,116.4074,Beijing,CN
59.111.0.0,59.255.255.255,31.2304,121.4737,Shanghai,CN
60.0.0.0,60.255.255.255,39.9042,116.4074,Beijing,CN
61.0.0.0,61.255.255.255,31.2304,121.4737,Shanghai,CN
62.0.0.0,62.255.255.255,52.3676,4.9041,Amsterdam,NL
63.0.0.0,63.15.255.255,22.5431,114.0579,Shenzhen,CN
63.16.0.0,63.31.255.255,52.52,13.405,Berlin,DE
63.32.0.0,63.35.255.255,53.3498,-6.2603,Dublin,IE
63.36.0.0,63.163.255.255,25.2048,55.2708,Dubai,AE
63.164.0.0,63.255.255.255,13.7563,100.5018,Bangkok,TH
64.0.0.0,64.255.255.255,41.8781,-87.6298,Chicago,US
65.0.0.0,65.255.255.255,37.7749,-122.4194,San Francisco,US
66.0.0.0,66.255.255.255,32.7767,-96.797,Dallas,US
67.0.0.0,67.159.255.255,25.7617,-80.1918,Miami,US
67.160.0.0,67.191.255.255,39.9526,-75.1652,Philadelphia,US
67.192.0.0,67.255.255.255,25.7617,-80.1918,Miami,US
68.0.0.0,68.127.255.255,31.2304,121.4737,Shanghai,CN
68.128.0.0,68.255.255.255,39.9042,116.4074,Beijing,CN
69.0.0.0,69.135.255.255,40.7128,-74.006,New York,US
69.136.0.0,69.143.255.255,42.3601,-71.0589,Boston,US
69.144.0.0,69.239.255.255,40.7128,-74.006,New York,US
69.240.0.0,69.255.255.255,47.6062,-122.3321,Seattle,US
70.0.0.0,70.255.255.255,41.8781,-87.6298,Chicago,US
71.0.0.0,71.127.255.255,35.6762,139.6503,Tokyo,JP
71.128.0.0,71.159.255.255,37.5665,126.978,Seoul,KR
71.160.0.0,71.175.255.255,40.7128,-74.006,New York,US
71.176.0.0,71.191.255.255,1.3521,103.8198,Singapore,SG
71.192.0.0,71.255.255.255,37.7749,-122.4194,San Francisco,US
72.0.0.0,72.15.255.255,51.5074,-0.1278,London,GB
72.16.0.0,72.31.255.255,50.1109,8.6821,Frankfurt,DE
72.32.0.0,72.47.255.255,40.7128,-74.006,New York,US
72.48.0.0,72.63.255.255,37.7749,-122.4194,San Francisco,US
72.64.0.0,72.127.255.255,32.7767,-96.797,Dallas,US
72.128.0.0,72.143.255.255,-33.8688,151.2093,Sydney,AU
72.144.0.0,72.159.255.255,19.076,72.8777,Mumbai,IN
72.160.0.0,72.175.255.255,48.8566,2.3522,Paris,FR
72.176.0.0,72.191.255.255,52.3676,4.9041,Amsterdam,NL
72.192.0.0,72.207.255.255,-23.5505,-46.6333,Sao Paulo,BR
72.208.0.0,72.223.255.255,55.7558,37.6173,Moscow,RU
72.224.0.0,72.239.255.255,41.8781,-87.6298,Chicago,US
72.240.0.0,72.245.255.255,32.7767,-96.797,Dallas,US
72.246.0.0,72.247.255.255,42.3736,-71.1097,Cambridge,US
72.248.0.0,72.255.255.255,33.749,-84.388,Atlanta,US
73.0.0.0,73.255.255.255,33.749,-84.388,Atlanta,US
74.0.0.0,74.15.255.255,43.6532,-79.3832,Toronto,CA
74.16.0.0,74.31.255.255,22.3193,114.1694,Hong Kong,HK
74.32.0.0,74.47.255.255,25.033,121.5654,Taipei,TW
74.48.0.0,74.63.255.255,40.4168,-3.7038,Madrid,ES
74.64.0.0,74.79.255.255,45.4642,9.19,Milan,IT
74.80.0.0,74.95.255.255,59.3293,18.0686,Stockholm,SE
74.96.0.0,74.127.255.255,33.749,-84.388,Atlanta,US
74.128.0.0,74.143.255.255,34.6937,135.5022,Osaka,JP
74.144.0.0,74.159.255.255,23.1291,113.2644,Guangzhou,CN
74.160.0.0,74.175.255.255,22.5431,114.0579,Shenzhen,CN
74.176.0.0,74.191.255.255,52.52,13.405,Berlin,DE
74.192.0.0,74.207.255.255,25.2048,55.2708,Dubai,AE
74.208.0.0,74.223.255.255,13.7563,100.5018,Bangkok,TH
74.224.0.0,74.239.255.255,31.2304,121.4737,Shanghai,CN
74.240.0.0,74.255.255.255,39.9042,116.4074,Beijing,CN
75.0.0.0,75.255.255.255,37.7749,-122.4194,San Francisco,US
76.0.0.0,76.255.255.255,29.7604,-95.3698,Houston,US
77.0.0.0,77.255.255.255,52.3676,4.9041,Amsterdam,NL
78.0.0.0,78.255.255.255,52.52,13.405,Berlin,DE
79.0.0.0,79.191.255.255,52.52,13.405,Berlin,DE
79.192.0.0,79.255.255.255,50.1109,8.6821,Frankfurt,DE
80.0.0.0,80.127.255.255,52.3676,4.9041,Amsterdam,NL
80.128.0.0,80.159.255.255,52.52,13.405,Berlin,DE
80.160.0.0,80.255.255.255,52.3676,4.9041,Amsterdam,NL
81.0.0.0,81.255.255.255,51.5074,-0.1278,London,GB
82.0.0.0,82.255.255.255,52.3676,4.9041,Amsterdam,NL
83.0.0.0,83.255.255.255,52.3676,4.9041,Amsterdam,NL
84.0.0.0,84.255.255.255,52.3676,4.9041,Amsterdam,NL
85.0.0.0,85.255.255.255,52.3676,4.9041,Amsterdam,NL
86.0.0.0,86.255.255.255,52.3676,4.9041,Amsterdam,NL
87.0.0.0,87.127.255.255,52.52,13.405,Berlin,DE
87.128.0.0,87.191.255.255,48.1351,11.582,Munich,DE
87.192.0.0,87.255.255.255,52.52,13.405,Berlin,DE
88.0.0.0,88.255.255.255,52.3676,4.9041,Amsterdam,NL
89.0.0.0,89.255.255.255,52.3676,4.9041,Amsterdam,NL
90.0.0.0,90.255.255.255,52.3676,4.9041,Amsterdam,NL
91.0.0.0,91.63.255.255,50.1109,8.6821,Frankfurt,DE
91.64.0.0,91.191.255.255,35.6762,139.6503,Tokyo,JP
91.192.0.0,91.255.255.255,37.5665,126.978,Seoul,KR
92.0.0.0,92.121.255.255,55.7558,37.6173,Moscow,RU
92.122.0.0,92.123.255.255,42.3736,-71.1097,Cambridge,US
92.124.0.0,92.255.255.255,55.7558,37.6173,Moscow,RU
93.0.0.0,93.127.255.255,1.3521,103.8198,Singapore,SG
93.128.0.0,93.191.255.255,51.5074,-0.1278,London,GB
93.192.0.0,93.255.255.255,52.52,13.405,Berlin,DE
94.0.0.0,94.255.255.255,55.7558,37.6173,Moscow,RU
95.0.0.0,95.99.255.255,52.52,13.405,Berlin,DE
95.100.0.0,95.101.255.255,42.3736,-71.1097,Cambridge,US
95.102.0.0,95.255.255.255,52.52,13.405,Berlin,DE
96.0.0.0,96.5.255.255,50.1109,8.6821,Frankfurt,DE
96.6.0.0,96.7.255.255,42.3736,-71.1097,Cambridge,US
96.8.0.0,96.15.255.255,40.7128,-74.006,New York,US
96.16.0.0,96.17.255.255,42.3736,-71.1097,Cambridge,US
96.18.0.0,96.145.255.255,37.7749,-122.4194,San Francisco,US
96.146.0.0,96.223.255.255,-33.8688,151.2093,Sydney,AU
96.224.0.0,96.255.255.255,40.7128,-74.006,New York,US
97.0.0.0,97.127.255.255,19.076,72.8777,Mumbai,IN
97.128.0.0,97.255.255.255,48.8566,2.3522,Paris,FR
98.0.0.0,98.127.255.255,52.3676,4.9041,Amsterdam,NL
98.128.0.0,98.191.255.255,-23.5505,-46.6333,Sao Paulo,BR
98.192.0.0,98.255.255.255,41.8781,-87.6298,Chicago,US
99.0.0.0,99.78.255.255,40.7128,-74.006,New York,US
99.79.0.0,99.79.255.255,45.5017,-73.5673,Montreal,CA
99.80.0.0,99.255.255.255,40.7128,-74.006,New York,US
100.0.0.0,100.63.255.255,41.8781,-87.6298,Chicago,US
100.64.0.0,100.191.255.255,55.7558,37.6173,Moscow,RU
100.192.0.0,100.255.255.255,41.8781,-87.6298,Chicago,US
101.0.0.0,101.131.255.255,39.9042,116.4074,Beijing,CN
101.132.0.0,101.132.255.255,31.2304,121.4737,Shanghai,CN
101.133.0.0,101.199.255.255,39.9042,116.4074,Beijing,CN
101.200.0.0,101.201.255.255,39.9042,116.4074,Beijing,CN
101.202.0.0,101.255.255.255,39.9042,116.4074,Beijing,CN
102.0.0.0,102.127.255.255,32.7767,-96.797,Dallas,US
102.128.0.0,102.255.255.255,33.749,-84.388,Atlanta,US
103.0.0.0,103.21.243.255,43.6532,-79.3832,Toronto,CA
103.21.244.0,103.21.247.255,37.7749,-122.4194,San Francisco,US
103.21.248.0,103.22.199.255,22.3193,114.1694,Hong Kong,HK
103.22.200.0,103.22.203.255,37.7749,-122.4194,San Francisco,US
103.22.204.0,103.31.3.255,25.033,121.5654,Taipei,TW
103.31.4.0,103.31.7.255,37.7749,-122.4194,San Francisco,US
103.31.8.0,103.159.7.255,40.4168,-3.7038,Madrid,ES
103.159.8.0,103.255.255.255,45.4642,9.19,Milan,IT
104.0.0.0,104.15.255.255,32.7767,-96.797,Dallas,US
104.16.0.0,104.23.255.255,37.7749,-122.4194,San Francisco,US
104.24.0.0,104.27.255.255,37.7749,-122.4194,San Francisco,US
104.28.0.0,104.39.255.255,32.7767,-96.797,Dallas,US
104.40.0.0,104.47.255.255,39.0438,-77.4874,Ashburn,US
104.48.0.0,104.63.255.255,32.7767,-96.797,Dallas,US
104.64.0.0,104.127.255.255,42.3736,-71.1097,Cambridge,US
104.128.0.0,104.151.255.255,32.7767,-96.797,Dallas,US
104.152.0.0,104.153.255.255,50.1109,8.6821,Frankfurt,DE
104.154.0.0,104.155.255.255,41.8781,-87.6298,Chicago,US
104.156.0.0,104.195.255.255,32.7767,-96.797,Dallas,US
104.196.0.0,104.199.255.255,39.0438,-77.4874,Ashburn,US
104.200.0.0,104.210.255.255,32.7767,-96.797,Dallas,US
104.211.0.0,104.211.255.255,19.076,72.8777,Mumbai,IN
104.212.0.0,104.255.255.255,32.7767,-96.797,Dallas,US
105.0.0.0,105.127.255.255,59.3293,18.0686,Stockholm,SE
105.128.0.0,105.255.255.255,34.6937,135.5022,Osaka,JP
106.0.0.0,106.13.255.255,23.1291,113.2644,Guangzhou,CN
106.14.0.0,106.15.255.255,31.2304,121.4737,Shanghai,CN
106.16.0.0,106.143.255.255,22.5431,114.0579,Shenzhen,CN
106.144.0.0,106.255.255.255,52.52,13.405,Berlin,DE
107.0.0.0,107.255.255.255,33.749,-84.388,Atlanta,US
108.0.0.0,108.162.191.255,41.8781,-87.6298,Chicago,US
108.162.192.0,108.162.255.255,37.7749,-122.4194,San Francisco,US
108.163.0.0,108.255.255.255,41.8781,-87.6298,Chicago,US
109.0.0.0,109.255.255.255,51.5074,-0.1278,London,GB
110.0.0.0,110.255.255.255,23.1291,113.2644,Guangzhou,CN
111.0.0.0,111.255.255.255,31.2304,121.4737,Shanghai,CN
112.0.0.0,112.255.255.255,39.9042,116.4074,Beijing,CN
113.0.0.0,113.255.255.255,31.2304,121.4737,Shanghai,CN
114.0.0.0,114.255.255.255,39.9042,116.4074,Beijing,CN
115.0.0.0,115.255.255.255,31.2304,121.4737,Shanghai,CN
116.0.0.0,116.255.255.255,39.9042,116.4074,Beijing,CN
117.0.0.0,117.255.255.255,31.2304,121.4737,Shanghai,CN
118.0.0.0,118.255.255.255,39.9042,116.4074,Beijing,CN
119.0.0.0,119.255.255.255,31.2304,121.4737,Shanghai,CN
120.0.0.0,120.23.255.255,39.9042,116.4074,Beijing,CN
120.24.0.0,120.27.255.255,39.9042,116.4074,Beijing,CN
120.28.0.0,120.47.255.255,39.9042,116.4074,Beijing,CN
120.48.0.0,120.49.255.255,39.9042,116.4074,Beijing,CN
120.50.0.0,120.54.255.255,39.9042,116.4074,Beijing,CN
120.55.0.0,120.55.255.255,31.2304,121.4737,Shanghai,CN
120.56.0.0,120.75.255.255,39.9042,116.4074,Beijing,CN
120.76.0.0,120.77.255.255,30.2741,120.1551,Hangzhou,CN
120.78.0.0,120.79.255.255,22.5431,114.0579,Shenzhen,CN
120.80.0.0,120.81.255.255,23.1291,113.2644,Guangzhou,CN
120.82.0.0,120.255.255.255,39.9042,116.4074,Beijing,CN
121.0.0.0,121.39.255.255,31.2304,121.4737,Shanghai,CN
121.40.0.0,121.43.255.255,30.2741,120.1551,Hangzhou,CN
121.44.0.0,121.195.255.255,31.2304,121.4737,Shanghai,CN
121.196.0.0,121.199.255.255,30.2741,120.1551,Hangzhou,CN
121.200.0.0,121.255.255.255,31.2304,121.4737,Shanghai,CN
122.0.0.0,122.255.255.255,39.9042,116.4074,Beijing,CN
123.0.0.0,123.255.255.255,31.2304,121.4737,Shanghai,CN
124.0.0.0,124.255.255.255,39.9042,116.4074,Beijing,CN
125.0.0.0,125.255.255.255,31.2304,121.4737,Shanghai,CN
126.0.0.0,126.255.255.255,35.6762,139.6503,Tokyo,JP
127.0.0.0,127.127.255.255,25.2048,55.2708,Dubai,AE
127.128.0.0,127.255.255.255,13.7563,100.5018,Bangkok,TH
128.0.0.0,128.255.255.255,48.8566,2.3522,Paris,FR
129.0.0.0,129.255.255.255,48.8566,2.3522,Paris,FR
130.0.0.0,130.255.255.255,52.52,13.405,Berlin,DE
131.0.0.0,131.0.71.255,59.3293,18.0686,Stockholm,SE
131.0.72.0,131.0.75.255,37.7749,-122.4194,San Francisco,US
131.0.76.0,131.255.255.255,59.3293,18.0686,Stockholm,SE
132.0.0.0,132.255.255.255,45.4642,9.19,Milan,IT
133.0.0.0,133.255.255.255,35.6762,139.6503,Tokyo,JP
134.0.0.0,134.255.255.255,52.52,13.405,Berlin,DE
135.0.0.0,135.127.255.255,31.2304,121.4737,Shanghai,CN
135.128.0.0,135.255.255.255,39.9042,116.4074,Beijing,CN
136.0.0.0,136.127.255.255,35.6762,139.6503,Tokyo,JP
136.128.0.0,136.255.255.255,37.5665,126.978,Seoul,KR
137.0.0.0,137.255.255.255,48.8566,2.3522,Paris,FR
138.0.0.0,138.90.255.255,45.4642,9.19,Milan,IT
138.91.0.0,138.91.255.255,37.7749,-122.4194,San Francisco,US
138.92.0.0,138.255.255.255,45.4642,9.19,Milan,IT
139.0.0.0,139.195.255.255,23.1291,113.2644,Guangzhou,CN
139.196.0.0,139.199.255.255,31.2304,121.4737,Shanghai,CN
139.200.0.0,139.255.255.255,23.1291,113.2644,Guangzhou,CN
140.0.0.0,140.127.255.255,1.3521,103.8198,Singapore,SG
140.128.0.0,140.255.255.255,51.5074,-0.1278,London,GB
141.0.0.0,141.101.63.255,52.52,13.405,Berlin,DE
141.101.64.0,141.101.127.255,37.7749,-122.4194,San Francisco,US
141.101.128.0,141.143.255.255,52.52,13.405,Berlin,DE
141.144.0.0,141.159.255.255,32.7767,-96.797,Dallas,US
141.160.0.0,141.255.255.255,52.52,13.405,Berlin,DE
142.0.0.0,142.127.255.255,50.1109,8.6821,Frankfurt,DE
142.128.0.0,142.255.255.255,40.7128,-74.006,New York,US
143.0.0.0,143.255.255.255,45.4642,9.19,Milan,IT
144.0.0.0,144.127.255.255,37.7749,-122.4194,San Francisco,US
144.128.0.0,144.255.255.255,-33.8688,151.2093,Sydney,AU
145.0.0.0,145.255.255.255,48.8566,2.3522,Paris,FR
146.0.0.0,146.255.255.255,51.5074,-0.1278,London,GB
147.0.0.0,147.255.255.255,48.8566,2.3522,Paris,FR
148.0.0.0,148.127.255.255,19.076,72.8777,Mumbai,IN
148.128.0.0,148.255.255.255,48.8566,2.3522,Paris,FR
149.0.0.0,149.128.255.255,52.52,13.405,Berlin,DE
149.129.0.0,149.129.255.255,1.3521,103.8198,Singapore,SG
149.130.0.0,149.255.255.255,52.52,13.405,Berlin,DE
150.0.0.0,150.191.255.255,35.6762,139.6503,Tokyo,JP
150.192.0.0,150.255.255.255,40.4168,-3.7038,Madrid,ES
151.0.0.0,151.100.255.255,45.4642,9.19,Milan,IT
151.101.0.0,151.101.255.255,37.7749,-122.4194,San Francisco,US
151.102.0.0,151.255.255.255,45.4642,9.19,Milan,IT
152.0.0.0,152.127.255.255,52.3676,4.9041,Amsterdam,NL
152.128.0.0,152.255.255.255,-23.5505,-46.6333,Sao Paulo,BR
153.0.0.0,153.127.255.255,55.7558,37.6173,Moscow,RU
153.128.0.0,153.191.255.255,34.6937,135.5022,Osaka,JP
153.192.0.0,154.63.255.255,41.8781,-87.6298,Chicago,US
154.64.0.0,154.191.255.255,32.7767,-96.797,Dallas,US
154.192.0.0,154.255.255.255,33.749,-84.388,Atlanta,US
155.0.0.0,155.255.255.255,59.3293,18.0686,Stockholm,SE
156.0.0.0,156.255.255.255,48.8566,2.3522,Paris,FR
157.0.0.0,157.52.63.255,35.6762,139.6503,Tokyo,JP
157.52.64.0,157.52.127.255,37.7749,-122.4194,San Francisco,US
157.52.128.0,157.52.255.255,37.7749,-122.4194,San Francisco,US
157.53.0.0,157.174.255.255,35.6762,139.6503,Tokyo,JP
157.175.0.0,157.175.255.255,26.0667,50.5577,Bahrain,BH
157.176.0.0,157.255.255.255,35.6762,139.6503,Tokyo,JP
158.0.0.0,158.255.255.255,59.3293,18.0686,Stockholm,SE
159.0.0.0,159.255.255.255,48.8566,2.3522,Paris,FR
160.0.0.0,160.255.255.255,34.6937,135.5022,Osaka,JP
161.0.0.0,161.255.255.255,48.8566,2.3522,Paris,FR
162.0.0.0,162.127.255.255,43.6532,-79.3832,Toronto,CA
162.128.0.0,162.157.255.255,22.3193,114.1694,Hong Kong,HK
162.158.0.0,162.159.255.255,37.7749,-122.4194,San Francisco,US
162.160.0.0,162.175.255.255,25.033,121.5654,Taipei,TW
162.176.0.0,162.191.255.255,40.4168,-3.7038,Madrid,ES
162.192.0.0,162.207.255.255,45.4642,9.19,Milan,IT
162.208.0.0,162.223.255.255,59.3293,18.0686,Stockholm,SE
162.224.0.0,162.239.255.255,34.6937,135.5022,Osaka,JP
162.240.0.0,162.255.255.255,23.1291,113.2644,Guangzhou,CN
163.0.0.0,163.255.255.255,35.6762,139.6503,Tokyo,JP
164.0.0.0,164.255.255.255,34.6937,135.5022,Osaka,JP
165.0.0.0,165.127.255.255,22.5431,114.0579,Shenzhen,CN
165.128.0.0,165.255.255.255,52.52,13.405,Berlin,DE
166.0.0.0,166.127.255.255,25.2048,55.2708,Dubai,AE
166.128.0.0,166.255.255.255,13.7563,100.5018,Bangkok,TH
167.0.0.0,167.81.255.255,31.2304,121.4737,Shanghai,CN
167.82.0.0,167.82.127.255,37.7749,-122.4194,San Francisco,US
167.82.128.0,167.82.191.255,37.7749,-122.4194,San Francisco,US
167.82.192.0,167.210.191.255,39.9042,116.4074,Beijing,CN
167.210.192.0,168.82.191.255,35.6762,139.6503,Tokyo,JP
168.82.192.0,168.210.191.255,37.5665,126.978,Seoul,KR
168.210.192.0,169.82.191.255,1.3521,103.8198,Singapore,SG
169.82.192.0,169.210.191.255,51.5074,-0.1278,London,GB
169.210.192.0,170.82.191.255,50.1109,8.6821,Frankfurt,DE
170.82.192.0,170.210.191.255,40.7128,-74.006,New York,US
170.210.192.0,170.255.255.255,37.7749,-122.4194,San Francisco,US
171.0.0.0,171.255.255.255,59.3293,18.0686,Stockholm,SE
172.0.0.0,172.15.255.255,-33.8688,151.2093,Sydney,AU
172.16.0.0,172.31.255.255,31.2304,121.4737,Shanghai,CN
172.32.0.0,172.47.255.255,19.076,72.8777,Mumbai,IN
172.48.0.0,172.63.255.255,48.8566,2.3522,Paris,FR
172.64.0.0,172.71.255.255,37.7749,-122.4194,San Francisco,US
172.72.0.0,172.87.255.255,52.3676,4.9041,Amsterdam,NL
172.88.0.0,172.103.255.255,-23.5505,-46.6333,Sao Paulo,BR
172.104.0.0,172.111.63.255,55.7558,37.6173,Moscow,RU
172.111.64.0,172.111.127.255,37.7749,-122.4194,San Francisco,US
172.111.128.0,172.239.127.255,41.8781,-87.6298,Chicago,US
172.239.128.0,173.47.255.255,32.7767,-96.797,Dallas,US
173.48.0.0,173.63.255.255,25.7617,-80.1918,Miami,US
173.64.0.0,173.191.255.255,33.749,-84.388,Atlanta,US
173.192.0.0,173.245.47.255,43.6532,-79.3832,Toronto,CA
173.245.48.0,173.245.63.255,37.7749,-122.4194,San Francisco,US
173.245.64.0,174.117.63.255,22.3193,114.1694,Hong Kong,HK
174.117.64.0,174.245.63.255,25.033,121.5654,Taipei,TW
174.245.64.0,175.117.63.255,40.4168,-3.7038,Madrid,ES
175.117.64.0,175.245.63.255,45.4642,9.19,Milan,IT
175.245.64.0,175.255.255.255,59.3293,18.0686,Stockholm,SE
176.0.0.0,176.255.255.255,51.5074,-0.1278,London,GB
177.0.0.0,177.127.255.255,34.6937,135.5022,Osaka,JP
177.128.0.0,177.255.255.255,23.1291,113.2644,Guangzhou,CN
178.0.0.0,178.127.255.255,22.5431,114.0579,Shenzhen,CN
178.128.0.0,178.255.255.255,52.52,13.405,Berlin,DE
179.0.0.0,179.127.255.255,25.2048,55.2708,Dubai,AE
179.128.0.0,179.255.255.255,13.7563,100.5018,Bangkok,TH
180.0.0.0,180.255.255.255,31.2304,121.4737,Shanghai,CN
181.0.0.0,181.127.255.255,31.2304,121.4737,Shanghai,CN
181.128.0.0,181.255.255.255,39.9042,116.4074,Beijing,CN
182.0.0.0,182.91.255.255,39.9042,116.4074,Beijing,CN
182.92.0.0,182.92.255.255,39.9042,116.4074,Beijing,CN
182.93.0.0,182.255.255.255,39.9042,116.4074,Beijing,CN
183.0.0.0,183.255.255.255,31.2304,121.4737,Shanghai,CN
184.0.0.0,184.15.255.255,35.6762,139.6503,Tokyo,JP
184.16.0.0,184.23.255.255,37.5665,126.978,Seoul,KR
184.24.0.0,184.31.255.255,42.3736,-71.1097,Cambridge,US
184.32.0.0,184.47.255.255,1.3521,103.8198,Singapore,SG
184.48.0.0,184.63.255.255,51.5074,-0.1278,London,GB
184.64.0.0,184.71.255.255,50.1109,8.6821,Frankfurt,DE
184.72.0.0,184.73.255.255,37.7749,-122.4194,San Francisco,US
184.74.0.0,184.83.255.255,40.7128,-74.006,New York,US
184.84.0.0,184.87.255.255,42.3736,-71.1097,Cambridge,US
184.88.0.0,184.215.255.255,37.7749,-122.4194,San Francisco,US
184.216.0.0,184.255.255.255,-33.8688,151.2093,Sydney,AU
185.0.0.0,185.31.15.255,51.5074,-0.1278,London,GB
185.31.16.0,185.31.19.255,37.7749,-122.4194,San Francisco,US
185.31.20.0,185.255.255.255,51.5074,-0.1278,London,GB
186.0.0.0,186.127.255.255,19.076,72.8777,Mumbai,IN
186.128.0.0,186.255.255.255,48.8566,2.3522,Paris,FR
187.0.0.0,187.127.255.255,52.3676,4.9041,Amsterdam,NL
187.128.0.0,187.255.255.255,-23.5505,-46.6333,Sao Paulo,BR
188.0.0.0,188.114.95.255,51.5074,-0.1278,London,GB
188.114.96.0,188.114.111.255,37.7749,-122.4194,San Francisco,US
188.114.112.0,188.255.255.255,51.5074,-0.1278,London,GB
189.0.0.0,189.127.255.255,55.7558,37.6173,Moscow,RU
189.128.0.0,189.255.255.255,41.8781,-87.6298,Chicago,US
190.0.0.0,190.93.239.255,32.7767,-96.797,Dallas,US
190.93.240.0,190.93.255.255,37.7749,-122.4194,San Francisco,US
190.94.0.0,190.221.255.255,33.749,-84.388,Atlanta,US
190.222.0.0,191.93.255.255,43.6532,-79.3832,Toronto,CA
191.94.0.0,191.221.255.255,22.3193,114.1694,Hong Kong,HK
191.222.0.0,191.231.255.255,25.033,121.5654,Taipei,TW
191.232.0.0,191.233.255.255,-23.5505,-46.6333,Sao Paulo,BR
191.234.0.0,191.249.255.255,40.4168,-3.7038,Madrid,ES
191.250.0.0,192.9.255.255,45.4642,9.19,Milan,IT
192.10.0.0,192.25.255.255,59.3293,18.0686,Stockholm,SE
192.26.0.0,192.41.255.255,34.6937,135.5022,Osaka,JP
192.42.0.0,192.49.255.255,23.1291,113.2644,Guangzhou,CN
192.50.0.0,192.50.255.255,35.1815,136.9066,Nagoya,JP
192.51.0.0,192.66.255.255,22.5431,114.0579,Shenzhen,CN
192.67.0.0,192.82.255.255,52.52,13.405,Berlin,DE
192.83.0.0,192.98.255.255,25.2048,55.2708,Dubai,AE
192.99.0.0,192.114.255.255,13.7563,100.5018,Bangkok,TH
192.115.0.0,192.130.255.255,31.2304,121.4737,Shanghai,CN
192.131.0.0,192.146.255.255,39.9042,116.4074,Beijing,CN
192.147.0.0,192.162.255.255,35.6762,139.6503,Tokyo,JP
192.163.0.0,192.167.255.255,37.5665,126.978,Seoul,KR
192.168.0.0,192.168.255.255,23.1291,113.2644,Guangzhou,CN
192.169.0.0,192.184.255.255,1.3521,103.8198,Singapore,SG
192.185.0.0,192.200.255.255,51.5074,-0.1278,London,GB
192.201.0.0,192.216.255.255,50.1109,8.6821,Frankfurt,DE
192.217.0.0,192.232.255.255,40.7128,-74.006,New York,US
192.233.0.0,192.248.255.255,37.7749,-122.4194,San Francisco,US
192.249.0.0,192.255.255.255,-33.8688,151.2093,Sydney,AU
193.0.0.0,193.255.255.255,52.52,13.405,Berlin,DE
194.0.0.0,194.255.255.255,48.8566,2.3522,Paris,FR
195.0.0.0,195.255.255.255,52.3676,4.9041,Amsterdam,NL
196.0.0.0,196.127.255.255,19.076,72.8777,Mumbai,IN
196.128.0.0,196.255.255.255,48.8566,2.3522,Paris,FR
197.0.0.0,197.127.255.255,52.3676,4.9041,Amsterdam,NL
197.128.0.0,197.234.239.255,-23.5505,-46.6333,Sao Paulo,BR
197.234.240.0,197.234.243.255,37.7749,-122.4194,San Francisco,US
197.234.244.0,197.250.243.255,55.7558,37.6173,Moscow,RU
197.250.244.0,198.10.243.255,41.8781,-87.6298,Chicago,US
198.10.244.0,198.26.243.255,32.7767,-96.797,Dallas,US
198.26.244.0,198.41.127.255,33.749,-84.388,Atlanta,US
198.41.128.0,198.41.255.255,37.7749,-122.4194,San Francisco,US
198.42.0.0,198.169.255.255,43.6532,-79.3832,Toronto,CA
198.170.0.0,199.27.71.255,22.3193,114.1694,Hong Kong,HK
199.27.72.0,199.27.79.255,37.7749,-122.4194,San Francisco,US
199.27.80.0,199.155.79.255,25.033,121.5654,Taipei,TW
199.155.80.0,199.231.255.255,40.4168,-3.7038,Madrid,ES
199.232.0.0,199.232.255.255,37.7749,-122.4194,San Francisco,US
199.233.0.0,200.104.255.255,45.4642,9.19,Milan,IT
200.105.0.0,200.232.255.255,59.3293,18.0686,Stockholm,SE
200.233.0.0,201.104.255.255,34.6937,135.5022,Osaka,JP
201.105.0.0,201.232.255.255,23.1291,113.2644,Guangzhou,CN
201.233.0.0,201.255.255.255,22.5431,114.0579,Shenzhen,CN
202.0.0.0,202.255.255.255,39.9042,116.4074,Beijing,CN
203.0.0.0,203.255.255.255,39.9042,116.4074,Beijing,CN
204.0.0.0,204.127.255.255,52.52,13.405,Berlin,DE
204.128.0.0,204.255.255.255,25.2048,55.2708,Dubai,AE
205.0.0.0,205.127.255.255,13.7563,100.5018,Bangkok,TH
205.128.0.0,205.255.255.255,31.2304,121.4737,Shanghai,CN
206.0.0.0,206.127.255.255,39.9042,116.4074,Beijing,CN
206.128.0.0,206.255.255.255,35.6762,139.6503,Tokyo,JP
207.0.0.0,207.127.255.255,37.5665,126.978,Seoul,KR
207.128.0.0,207.255.255.255,1.3521,103.8198,Singapore,SG
208.0.0.0,208.127.255.255,51.5074,-0.1278,London,GB
208.128.0.0,208.255.255.255,50.1109,8.6821,Frankfurt,DE
209.0.0.0,209.127.255.255,40.7128,-74.006,New York,US
209.128.0.0,209.255.255.255,37.7749,-122.4194,San Francisco,US
210.0.0.0,210.255.255.255,31.2304,121.4737,Shanghai,CN
211.0.0.0,211.255.255.255,39.9042,116.4074,Beijing,CN
212.0.0.0,212.255.255.255,51.5074,-0.1278,London,GB
213.0.0.0,213.255.255.255,52.3676,4.9041,Amsterdam,NL
214.0.0.0,214.127.255.255,-33.8688,151.2093,Sydney,AU
214.128.0.0,214.255.255.255,19.076,72.8777,Mumbai,IN
215.0.0.0,215.127.255.255,48.8566,2.3522,Paris,FR
215.128.0.0,215.255.255.255,52.3676,4.9041,Amsterdam,NL
216.0.0.0,216.127.255.255,-23.5505,-46.6333,Sao Paulo,BR
216.128.0.0,216.255.255.255,55.7558,37.6173,Moscow,RU
217.0.0.0,217.79.255.255,52.52,13.405,Berlin,DE
217.80.0.0,217.95.255.255,48.1351,11.582,Munich,DE
217.96.0.0,217.223.255.255,52.52,13.405,Berlin,DE
217.224.0.0,217.255.255.255,50.1109,8.6821,Frankfurt,DE
218.0.0.0,218.255.255.255,31.2304,121.4737,Shanghai,CN
219.0.0.0,219.255.255.255,39.9042,116.4074,Beijing,CN
220.0.0.0,220.255.255.255,23.1291,113.2644,Guangzhou,CN
221.0.0.0,221.255.255.255,31.2304,121.4737,Shanghai,CN
222.0.0.0,222.255.255.255,39.9042,116.4074,Beijing,CN
223.0.0.0,223.255.255.255,39.9042,116.4074,Beijing,CN
+76
View File
@@ -0,0 +1,76 @@
"""Batch generator: ~100 CSV files with varied column subsets for multi-upload testing.
Each file: 100 rows, 20-40% columns randomly dropped (IP/port identity columns retained).
Total: ~100 files × 100 rows = ~10000 rows.
Usage:
runtime\\python\\python.exe scripts\\gen_multi.py [--files N] [--rows N]
"""
import sys
import os
import random
import csv
from pathlib import Path
from datetime import datetime, timedelta
# Add scripts/ to path so we can import gen_test_data
sys.path.insert(0, str(Path(__file__).parent))
# Reuse gen_test_data's data pools and generation logic
from gen_test_data import (
COLUMNS, generate_row, _rand_ip, _rand_hex, _maybe, _blank_or, _blank_or_plus,
TLS_VERSIONS, TLS_WEIGHTS, CIPHER_HEX, CIPHER_NAMES, NAMED_CURVES_HEX, NAMED_CURVES_TEXT,
SRC_IPS, DST_IPS, PORTS, COUNTRIES, ISPS, ORGS, CITIES, SERVICES, SRC_NODES, NODE_NAMES,
)
def main():
import argparse
parser = argparse.ArgumentParser(description='Generate multi-file test CSV dataset')
parser.add_argument('--files', type=int, default=100, help='Number of files to generate')
parser.add_argument('--rows', type=int, default=100, help='Rows per file')
args = parser.parse_args()
# Use a different seed from gen_test_data so IP pools differ
random.seed(99)
out_dir = Path('data/multi_upload')
out_dir.mkdir(parents=True, exist_ok=True)
# Identity columns that must never be dropped
_keep_cols = {':ips', ':ipd', ':prs', ':prd', 'server-ip', 'client-ip'}
_droppable = [c for c in COLUMNS if c not in _keep_cols]
base_time = datetime(2026, 6, 1, 0, 0, 0)
total_rows = 0
for fi in range(args.files):
# Randomly drop 20-40% of droppable columns
drop_ratio = random.uniform(0.20, 0.40)
n_drop = max(1, int(len(_droppable) * drop_ratio))
dropped = set(random.sample(_droppable, n_drop))
file_columns = [c for c in COLUMNS if c not in dropped]
out_path = out_dir / f'test_{fi:04d}.csv'
n_rows = random.randint(max(50, args.rows - 10), args.rows + 10)
with open(out_path, 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=file_columns, extrasaction='ignore')
writer.writeheader()
for row_i in range(n_rows):
row_time = base_time + timedelta(seconds=random.randint(0, 86400 * 30))
row = generate_row(total_rows + row_i, row_time)
filtered = {k: v for k, v in row.items() if k in file_columns}
writer.writerow(filtered)
total_rows += n_rows
if (fi + 1) % 20 == 0:
print(f' [{fi + 1}/{args.files}] {total_rows} rows generated so far...')
print(f'\nDone: {args.files} files, {total_rows} total rows → {out_dir}')
print(f'Each file: ~{args.rows} rows, {len(_droppable)} droppable columns, 20-40% dropped per file')
if __name__ == '__main__':
main()
+1 -1
View File
@@ -4,7 +4,7 @@
<div class="card">
<h2>Run #{{ run.display_id }} — {{ run.created_at|date:"Y-m-d H:i" }}</h2>
<p>Status: <span class="badge {% if run.status == 'completed' %}badge-success{% elif run.status == 'failed' %}badge-danger{% else %}badge-info{% endif %}">{{ run.get_status_display }}</span></p>
<p>CSV: <code>{{ run.csv_glob }}</code></p>
<p>CSV: <code>{% if run.sqlite_table %}已存储至SQLite: {{ run.sqlite_table }}{% else %}{{ run.csv_glob }}{% endif %}</code></p>
</div>
<div class="grid-3">
+1 -1
View File
@@ -42,7 +42,7 @@
<td>#{{ run.display_id }}</td>
<td>{{ run.created_at|date:"Y-m-d H:i" }}</td>
<td><span class="badge {% if run.status == 'completed' %}badge-success{% elif run.status == 'failed' %}badge-danger{% else %}badge-info{% endif %}">{{ run.get_status_display }}</span></td>
<td style="max-width:300px;overflow:hidden;text-overflow:ellipsis;">{{ run.csv_glob }}</td>
<td style="max-width:300px;overflow:hidden;text-overflow:ellipsis;">{% if run.sqlite_table %}SQLite表 {{ run.sqlite_table }}{% else %}{{ run.csv_glob }}{% endif %}</td>
<td>{{ run.entity_count|default:"-" }}</td>
<td>{{ run.cluster_count|default:"-" }}</td>
<td><a href="{% url 'analysis:run_detail' run.display_id %}" class="btn btn-primary">Detail</a></td>
+1 -1
View File
@@ -126,7 +126,7 @@
<tr>
<td><input type="radio" name="auto_run_id" value="{{ run.display_id }}"></td>
<td>#{{ run.display_id }}</td>
<td style="max-width:200px;overflow:hidden;text-overflow:ellipsis;">{{ run.csv_glob }}</td>
<td style="max-width:200px;overflow:hidden;text-overflow:ellipsis;">{% if run.sqlite_table %}SQLite表 {{ run.sqlite_table }}{% else %}{{ run.csv_glob }}{% endif %}</td>
<td><span class="badge badge-success">{{ run.status }}</span></td>
</tr>
{% empty %}
+1 -1
View File
@@ -41,7 +41,7 @@
{% for run in runs %}
<tr>
<td>#{{ run.display_id }}</td>
<td style="max-width:200px;overflow:hidden;text-overflow:ellipsis;">{{ run.csv_glob }}</td>
<td style="max-width:200px;overflow:hidden;text-overflow:ellipsis;">{% if run.sqlite_table %}SQLite表 {{ run.sqlite_table }}{% else %}{{ run.csv_glob }}{% endif %}</td>
<td>{{ run.total_flows|default:"-" }}</td>
<td><span class="badge {% if run.status == 'ready' or run.status == 'completed' %}badge-success{% elif run.status == 'failed' %}badge-danger{% else %}badge-warning{% endif %}">{{ run.status }}</span></td>
<td>