├── .gitattributes ├── .github └── workflows │ └── static.yml ├── README.md ├── README_EN.md ├── colos.json ├── favicon.ico ├── index.html ├── script.js └── style.css /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/workflows/static.yml: -------------------------------------------------------------------------------- 1 | # Simple workflow for deploying static content to GitHub Pages 2 | name: Deploy static content to Pages 3 | 4 | on: 5 | # Runs on pushes targeting the default branch 6 | push: 7 | branches: ["main"] 8 | 9 | # Allows you to run this workflow manually from the Actions tab 10 | workflow_dispatch: 11 | 12 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages 13 | permissions: 14 | contents: read 15 | pages: write 16 | id-token: write 17 | 18 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. 19 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. 20 | concurrency: 21 | group: "pages" 22 | cancel-in-progress: false 23 | 24 | jobs: 25 | # Single deploy job since we're just deploying 26 | deploy: 27 | environment: 28 | name: github-pages 29 | url: ${{ steps.deployment.outputs.page_url }} 30 | runs-on: ubuntu-latest 31 | steps: 32 | - name: Checkout 33 | uses: actions/checkout@v3 34 | - name: Setup Pages 35 | uses: actions/configure-pages@v3 36 | - name: Upload artifact 37 | uses: actions/upload-pages-artifact@v2 38 | with: 39 | # Upload entire repository 40 | path: '.' 41 | - name: Deploy to GitHub Pages 42 | id: deployment 43 | uses: actions/deploy-pages@v2 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Cloudflare Center Detector 🌍 2 | 3 | [![GitHub 许可证](https://img.shields.io/badge/license-GPLv3-blue.svg)](https://github.com/WizisCool/Cloudflare-Center-Detector/blob/master/LICENSE) 4 | #### [English Readme](./README_EN.md) 5 | Cloudflare Center Detector 是一款网络应用程序,可自动检测并显示您所连接的 Cloudflare 数据中心。无论您是对正在使用的 Cloudflare 数据中心感到好奇,还是希望优化内容交付,该工具都能在用户友好的界面上为您提供相关信息。 6 | 7 | ### 功能 8 | - **自动检测**: 无需手动检查 Cloudflare 数据中心,本工具会为您完成检查。 9 | - **黑暗模式**: 享受时尚节能的用户界面。 10 | - **响应式设计**: 应用程序可在台式机和移动设备上运行。 11 | - **开源**: 该项目开源,采用 [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.html) 许可。 12 | 13 | ### 演示 14 | 您可以在 [演示站](https://wiziscool.github.io/Cloudflare-Center-Detector/) 上体验 Cloudflare Center Detector。 15 | 16 | ### 使用方法 17 | - 这是一个纯粹的前端网页,你只需将所有代码下载到本地或你的服务器,~~然后给此仓库点一个Star~~,然后遵循 GNU 开源协议协议即可! 18 | 19 | ## 投稿 20 | 欢迎贡献!对于重大改动,请先打开一个问题,讨论你想改动的地方。 21 | 22 | ### 许可证 23 | 本项目采用 [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.html) 许可,详情请参见 [LICENSE](LICENSE) 文件。 24 | 25 | ## 联系 26 | - 作者: [WizisCool](https://github.com/WizisCool) 27 | - 个人博客: [Dooo.ng](https://dooo.ng) 28 | 29 | -------------------------------------------------------------------------------- /README_EN.md: -------------------------------------------------------------------------------- 1 | # Cloudflare Center Detector 🌍 2 | 3 | [![GitHub license](https://img.shields.io/badge/license-GPLv3-blue.svg)](https://github.com/WizisCool/Cloudflare-Center-Detector/blob/master/LICENSE) 4 | 5 | #### [中文 文档](./README.md) 6 | 7 | Cloudflare Center Detector is a web application that automatically detects and displays the Cloudflare data center you are connected to. Whether you're curious about which Cloudflare data center you're using or want to optimize your content delivery, this tool provides you with that information in a user-friendly interface. 8 | 9 | ## Features 10 | - **Automatic Detection**: No need to manually check your Cloudflare data center; this tool does it for you. 11 | - **Dark Mode**: Enjoy a sleek and energy-efficient user interface. 12 | - **Responsive Design**: The application is designed to work on both desktop and mobile devices. 13 | - **Open Source**: The project is open source and licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.html). 14 | 15 | ## Demo 16 | You can try out the Cloudflare Center Detector at [Demo Link](https://wiziscool.github.io/Cloudflare-Center-Detector/). 17 | 18 | ## Usage 19 | - This is a pure front-end web page, you just need to download all the code to the local or your server, ~~and then give the repository point a Star~~, and then follow the GNU protocol on the access! 20 | 21 | ## Contributing 22 | Contributions are welcome! For major changes, please open an issue first to discuss what you would like to change. 23 | 24 | ## License 25 | This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.html) - see the [LICENSE](LICENSE) file for details. 26 | 27 | ## Contact 28 | - Author: [WizisCool](https://github.com/WizisCool) 29 | - Personal Blog: [Dooo.ng](https://dooo.ng) 30 | -------------------------------------------------------------------------------- /colos.json: -------------------------------------------------------------------------------- 1 | { 2 | "AAE": { 3 | "cca2": "DZ", 4 | "city": "Annaba", 5 | "lat": 36.85596, 6 | "lon": 7.79207, 7 | "name": "Annaba, Algeria", 8 | "region": "Africa" 9 | }, 10 | "ABQ": { 11 | "cca2": "US", 12 | "city": "Albuquerque", 13 | "lat": 35.0844, 14 | "lon": -106.6504, 15 | "name": "Albuquerque, United States", 16 | "region": "North America" 17 | }, 18 | "ACC": { 19 | "cca2": "GH", 20 | "city": "Accra", 21 | "lat": 5.614818, 22 | "lon": -0.205874, 23 | "name": "Accra, Ghana", 24 | "region": "Africa" 25 | }, 26 | "ADB": { 27 | "cca2": "TR", 28 | "city": "Izmir", 29 | "lat": 38.32377, 30 | "lon": 27.14317, 31 | "name": "Izmir, Turkey", 32 | "region": "Europe" 33 | }, 34 | "ADL": { 35 | "cca2": "AU", 36 | "city": "Adelaide", 37 | "lat": -34.9431729, 38 | "lon": 138.5335637, 39 | "name": "Adelaide, SA, Australia", 40 | "region": "Oceania" 41 | }, 42 | "AKL": { 43 | "cca2": "NZ", 44 | "city": "Auckland", 45 | "lat": -37.0080986023, 46 | "lon": 174.792007446, 47 | "name": "Auckland, New Zealand", 48 | "region": "Oceania" 49 | }, 50 | "ALA": { 51 | "cca2": "KZ", 52 | "city": "Almaty", 53 | "lat": 43.3521003723, 54 | "lon": 77.0404968262, 55 | "name": "Almaty, Kazakhstan", 56 | "region": "Asia Pacific" 57 | }, 58 | "ALG": { 59 | "cca2": "DZ", 60 | "city": "Algiers", 61 | "lat": 36.6910018921, 62 | "lon": 3.2154099941, 63 | "name": "Algiers, Algeria", 64 | "region": "Africa" 65 | }, 66 | "AMD": { 67 | "cca2": "IN", 68 | "city": "Ahmedabad", 69 | "lat": 23.0225, 70 | "lon": 72.5714, 71 | "name": "Ahmedabad, India", 72 | "region": "Asia Pacific" 73 | }, 74 | "AMM": { 75 | "cca2": "JO", 76 | "city": "Amman", 77 | "lat": 31.7226009369, 78 | "lon": 35.9931983948, 79 | "name": "Amman, Jordan", 80 | "region": "Middle East" 81 | }, 82 | "AMS": { 83 | "cca2": "NL", 84 | "city": "Amsterdam", 85 | "lat": 52.3086013794, 86 | "lon": 4.7638897896, 87 | "name": "Amsterdam, Netherlands", 88 | "region": "Europe" 89 | }, 90 | "ARI": { 91 | "cca2": "CL", 92 | "city": "Arica", 93 | "lat": -18.348611, 94 | "lon": -70.338889, 95 | "name": "Arica, Chile", 96 | "region": "South America" 97 | }, 98 | "ARN": { 99 | "cca2": "SE", 100 | "city": "Stockholm", 101 | "lat": 59.6519012451, 102 | "lon": 17.9186000824, 103 | "name": "Stockholm, Sweden", 104 | "region": "Europe" 105 | }, 106 | "ASU": { 107 | "cca2": "PY", 108 | "city": "Asunción", 109 | "lat": -25.2399997711, 110 | "lon": -57.5200004578, 111 | "name": "Asunción, Paraguay", 112 | "region": "South America" 113 | }, 114 | "ATH": { 115 | "cca2": "GR", 116 | "city": "Athens", 117 | "lat": 37.9364013672, 118 | "lon": 23.9444999695, 119 | "name": "Athens, Greece", 120 | "region": "Europe" 121 | }, 122 | "ATL": { 123 | "cca2": "US", 124 | "city": "Atlanta", 125 | "lat": 33.6366996765, 126 | "lon": -84.4281005859, 127 | "name": "Atlanta, GA, United States", 128 | "region": "North America" 129 | }, 130 | "AUS": { 131 | "cca2": "US", 132 | "city": "Austin", 133 | "lat": 30.1975, 134 | "lon": -97.6664, 135 | "name": "Austin, United States", 136 | "region": "North America" 137 | }, 138 | "BAH": { 139 | "cca2": "BH", 140 | "city": "Manama", 141 | "lat": 26.2707996368, 142 | "lon": 50.6335983276, 143 | "name": "Manama, Bahrain", 144 | "region": "Middle East" 145 | }, 146 | "BBI": { 147 | "cca2": "IN", 148 | "city": "Bhubaneswar", 149 | "lat": 20.2961, 150 | "lon": 85.8245, 151 | "name": "Bhubaneswar, India", 152 | "region": "Asia Pacific" 153 | }, 154 | "BCN": { 155 | "cca2": "ES", 156 | "city": "Barcelona", 157 | "lat": 41.2971000671, 158 | "lon": 2.0784599781, 159 | "name": "Barcelona, Spain", 160 | "region": "Europe" 161 | }, 162 | "BEG": { 163 | "cca2": "RS", 164 | "city": "Belgrade", 165 | "lat": 44.8184013367, 166 | "lon": 20.3090991974, 167 | "name": "Belgrade, Serbia", 168 | "region": "Europe" 169 | }, 170 | "BEL": { 171 | "cca2": "BR", 172 | "city": "Belém", 173 | "lat": -1.4563, 174 | "lon": -48.5013, 175 | "name": "Belém, Brazil", 176 | "region": "South America" 177 | }, 178 | "BEY": { 179 | "cca2": "LB", 180 | "city": "Beirut", 181 | "lat": 33.8208999634, 182 | "lon": 35.4883995056, 183 | "name": "Beirut, Lebanon", 184 | "region": "Middle East" 185 | }, 186 | "BGI": { 187 | "cca2": "BB", 188 | "city": "Bridgetown", 189 | "lat": 13.103562, 190 | "lon": -59.603226, 191 | "name": "Bridgetown, Barbados", 192 | "region": "North America" 193 | }, 194 | "BGR": { 195 | "cca2": "US", 196 | "city": "Bangor", 197 | "lat": 44.8081, 198 | "lon": -68.795, 199 | "name": "Bangor, United States", 200 | "region": "North America" 201 | }, 202 | "BGW": { 203 | "cca2": "IQ", 204 | "city": "Baghdad", 205 | "lat": 33.2625007629, 206 | "lon": 44.2346000671, 207 | "name": "Baghdad, Iraq", 208 | "region": "Middle East" 209 | }, 210 | "BKK": { 211 | "cca2": "TH", 212 | "city": "Bangkok", 213 | "lat": 13.6810998917, 214 | "lon": 100.747001648, 215 | "name": "Bangkok, Thailand", 216 | "region": "Asia Pacific" 217 | }, 218 | "BLR": { 219 | "cca2": "IN", 220 | "city": "Bangalore", 221 | "lat": 13.7835719, 222 | "lon": 76.6165937, 223 | "name": "Bangalore, India", 224 | "region": "Asia Pacific" 225 | }, 226 | "BNA": { 227 | "cca2": "US", 228 | "city": "Nashville", 229 | "lat": 36.1245002747, 230 | "lon": -86.6781997681, 231 | "name": "Nashville, United States", 232 | "region": "North America" 233 | }, 234 | "BNE": { 235 | "cca2": "AU", 236 | "city": "Brisbane", 237 | "lat": -27.3841991425, 238 | "lon": 153.117004394, 239 | "name": "Brisbane, QLD, Australia", 240 | "region": "Oceania" 241 | }, 242 | "BNU": { 243 | "cca2": "BR", 244 | "city": "Blumenau", 245 | "lat": -26.89245, 246 | "lon": -49.07696, 247 | "name": "Blumenau, Brazil", 248 | "region": "South America" 249 | }, 250 | "BOD": { 251 | "cca2": "FR", 252 | "city": "Bordeaux", 253 | "lat": 44.82946, 254 | "lon": -0.58355, 255 | "name": "Bordeaux, France", 256 | "region": "Europe" 257 | }, 258 | "BOG": { 259 | "cca2": "CO", 260 | "city": "Bogotá", 261 | "lat": 4.70159, 262 | "lon": -74.1469, 263 | "name": "Bogotá, Colombia", 264 | "region": "South America" 265 | }, 266 | "BOM": { 267 | "cca2": "IN", 268 | "city": "Mumbai", 269 | "lat": 19.0886993408, 270 | "lon": 72.8678970337, 271 | "name": "Mumbai, India", 272 | "region": "Asia Pacific" 273 | }, 274 | "BOS": { 275 | "cca2": "US", 276 | "city": "Boston", 277 | "lat": 42.36429977, 278 | "lon": -71.00520325, 279 | "name": "Boston, MA, United States", 280 | "region": "North America" 281 | }, 282 | "BRU": { 283 | "cca2": "BE", 284 | "city": "Brussels", 285 | "lat": 50.9014015198, 286 | "lon": 4.4844398499, 287 | "name": "Brussels, Belgium", 288 | "region": "Europe" 289 | }, 290 | "BSB": { 291 | "cca2": "BR", 292 | "city": "Brasilia", 293 | "lat": -15.79824, 294 | "lon": -47.90859, 295 | "name": "Brasilia, Brazil", 296 | "region": "South America" 297 | }, 298 | "BSR": { 299 | "cca2": "IQ", 300 | "city": "Basra", 301 | "lat": 30.5491008759, 302 | "lon": 47.6621017456, 303 | "name": "Basra, Iraq", 304 | "region": "Middle East" 305 | }, 306 | "BTS": { 307 | "cca2": "SK", 308 | "city": "Bratislava", 309 | "lat": 48.1486, 310 | "lon": 17.1077, 311 | "name": "Bratislava, Slovakia", 312 | "region": "Europe" 313 | }, 314 | "BUD": { 315 | "cca2": "HU", 316 | "city": "Budapest", 317 | "lat": 47.4369010925, 318 | "lon": 19.2555999756, 319 | "name": "Budapest, Hungary", 320 | "region": "Europe" 321 | }, 322 | "BUF": { 323 | "cca2": "US", 324 | "city": "Buffalo", 325 | "lat": 42.94049835, 326 | "lon": -78.73220062, 327 | "name": "Buffalo, NY, United States", 328 | "region": "North America" 329 | }, 330 | "BWN": { 331 | "cca2": "BN", 332 | "city": "Bandar Seri Begawan", 333 | "lat": 4.903052, 334 | "lon": 114.939819, 335 | "name": "Bandar Seri Begawan, Brunei", 336 | "region": "Asia Pacific" 337 | }, 338 | "CAI": { 339 | "cca2": "EG", 340 | "city": "Cairo", 341 | "lat": 30.1219005585, 342 | "lon": 31.4055995941, 343 | "name": "Cairo, Egypt", 344 | "region": "Africa" 345 | }, 346 | "CAN": { 347 | "name": "Guangzhou, China" 348 | }, 349 | "CAW": { 350 | "cca2": "BR", 351 | "city": "Campos dos Goytacazes", 352 | "lat": -21.698299408, 353 | "lon": -41.301700592, 354 | "name": "Campos dos Goytacazes, Brazil", 355 | "region": "South America" 356 | }, 357 | "CBR": { 358 | "cca2": "AU", 359 | "city": "Canberra", 360 | "lat": -35.3069000244, 361 | "lon": 149.1950073242, 362 | "name": "Canberra, ACT, Australia", 363 | "region": "Oceania" 364 | }, 365 | "CCU": { 366 | "cca2": "IN", 367 | "city": "Kolkata", 368 | "lat": 22.6476933, 369 | "lon": 88.4349249, 370 | "name": "Kolkata, India", 371 | "region": "Asia Pacific" 372 | }, 373 | "CDG": { 374 | "cca2": "FR", 375 | "city": "Paris", 376 | "lat": 49.0127983093, 377 | "lon": 2.5499999523, 378 | "name": "Paris, France", 379 | "region": "Europe" 380 | }, 381 | "CEB": { 382 | "cca2": "PH", 383 | "city": "Cebu", 384 | "lat": 10.3074998856, 385 | "lon": 123.978996277, 386 | "name": "Cebu, Philippines", 387 | "region": "Asia Pacific" 388 | }, 389 | "CFC": { 390 | "cca2": "BR", 391 | "city": "Cacador", 392 | "lat": -26.7762, 393 | "lon": -51.0125, 394 | "name": "Caçador, Brazil", 395 | "region": "South America" 396 | }, 397 | "CGB": { 398 | "cca2": "BR", 399 | "city": "Cuiaba", 400 | "lat": -15.59611, 401 | "lon": -56.09667, 402 | "name": "Cuiabá, Brazil", 403 | "region": "South America" 404 | }, 405 | "CGD": { 406 | "name": "Changde, China" 407 | }, 408 | "CGK": { 409 | "cca2": "ID", 410 | "city": "Jakarta", 411 | "lat": -6.1275229, 412 | "lon": 106.6515118, 413 | "name": "Jakarta, Indonesia", 414 | "region": "Asia Pacific" 415 | }, 416 | "CGO": { 417 | "name": "Zhengzhou, China" 418 | }, 419 | "CGP": { 420 | "cca2": "BD", 421 | "city": "Chittagong", 422 | "lat": 22.2495995, 423 | "lon": 91.8133011, 424 | "name": "Chittagong, Bangladesh", 425 | "region": "Asia Pacific" 426 | }, 427 | "CGQ": { 428 | "name": "Changchun, China" 429 | }, 430 | "CGY": { 431 | "cca2": "PH", 432 | "city": "Cagayan de Oro", 433 | "lat": 8.4156198502, 434 | "lon": 124.611000061, 435 | "name": "Cagayan de Oro, Philippines", 436 | "region": "Asia Pacific" 437 | }, 438 | "CHC": { 439 | "cca2": "NZ", 440 | "city": "Christchurch", 441 | "lat": -43.4893989563, 442 | "lon": 172.5319976807, 443 | "name": "Christchurch, New Zealand", 444 | "region": "Oceania" 445 | }, 446 | "CLE": { 447 | "cca2": "US", 448 | "city": "Cleveland", 449 | "lat": 41.50069, 450 | "lon": -81.68412, 451 | "name": "Cleveland, United States", 452 | "region": "North America" 453 | }, 454 | "CLT": { 455 | "cca2": "US", 456 | "city": "Charlotte", 457 | "lat": 35.2140007019, 458 | "lon": -80.9430999756, 459 | "name": "Charlotte, NC, United States", 460 | "region": "North America" 461 | }, 462 | "CMB": { 463 | "cca2": "LK", 464 | "city": "Colombo", 465 | "lat": 7.1807599068, 466 | "lon": 79.8841018677, 467 | "name": "Colombo, Sri Lanka", 468 | "region": "Asia Pacific" 469 | }, 470 | "CMH": { 471 | "cca2": "US", 472 | "city": "Columbus", 473 | "lat": 39.9980010986, 474 | "lon": -82.8918991089, 475 | "name": "Columbus, OH, United States", 476 | "region": "North America" 477 | }, 478 | "CMN": { 479 | "cca2": "MA", 480 | "city": "Casablanca", 481 | "lat": 33.3675003052, 482 | "lon": -7.5899701118, 483 | "name": "Casablanca, Morocco", 484 | "region": "Africa" 485 | }, 486 | "CNF": { 487 | "cca2": "BR", 488 | "city": "Belo Horizonte", 489 | "lat": -19.624444, 490 | "lon": -43.971944, 491 | "name": "Belo Horizonte, Brazil", 492 | "region": "South America" 493 | }, 494 | "CNN": { 495 | "cca2": "IN", 496 | "city": "Kannur", 497 | "lat": 11.915858, 498 | "lon": 75.55094, 499 | "name": "Kannur, India", 500 | "region": "Asia Pacific" 501 | }, 502 | "CNX": { 503 | "cca2": "TH", 504 | "city": "Chiang Mai", 505 | "lat": 18.7667999268, 506 | "lon": 98.962600708, 507 | "name": "Chiang Mai, Thailand", 508 | "region": "Asia Pacific" 509 | }, 510 | "COK": { 511 | "cca2": "IN", 512 | "city": "Kochi", 513 | "lat": 9.9312, 514 | "lon": 76.2673, 515 | "name": "Kochi, India", 516 | "region": "Asia Pacific" 517 | }, 518 | "COR": { 519 | "cca2": "AR", 520 | "city": "Córdoba", 521 | "lat": -31.31, 522 | "lon": -64.208333, 523 | "name": "Córdoba, Argentina", 524 | "region": "South America" 525 | }, 526 | "CPH": { 527 | "cca2": "DK", 528 | "city": "Copenhagen", 529 | "lat": 55.6179008484, 530 | "lon": 12.6560001373, 531 | "name": "Copenhagen, Denmark", 532 | "region": "Europe" 533 | }, 534 | "CPT": { 535 | "cca2": "ZA", 536 | "city": "Cape Town", 537 | "lat": -33.9648017883, 538 | "lon": 18.6016998291, 539 | "name": "Cape Town, South Africa", 540 | "region": "Africa" 541 | }, 542 | "CSX": { 543 | "name": "Changsha, China" 544 | }, 545 | "CUR": { 546 | "cca2": "CW", 547 | "city": "Willemstad", 548 | "lat": 12.1888999939, 549 | "lon": -68.9598007202, 550 | "name": "Willemstad, Curaçao", 551 | "region": "North America" 552 | }, 553 | "CWB": { 554 | "cca2": "BR", 555 | "city": "Curitiba", 556 | "lat": -25.5284996033, 557 | "lon": -49.1758003235, 558 | "name": "Curitiba, Brazil", 559 | "region": "South America" 560 | }, 561 | "CZX": { 562 | "name": "Changzhou, China" 563 | }, 564 | "DAC": { 565 | "cca2": "BD", 566 | "city": "Dhaka", 567 | "lat": 23.843347, 568 | "lon": 90.397783, 569 | "name": "Dhaka, Bangladesh", 570 | "region": "Asia Pacific" 571 | }, 572 | "DAR": { 573 | "cca2": "TZ", 574 | "city": "Dar es Salaam", 575 | "lat": -6.8781099319, 576 | "lon": 39.2025985718, 577 | "name": "Dar Es Salaam, Tanzania", 578 | "region": "Africa" 579 | }, 580 | "DEL": { 581 | "cca2": "IN", 582 | "city": "New Delhi", 583 | "lat": 28.5664997101, 584 | "lon": 77.1031036377, 585 | "name": "New Delhi, India", 586 | "region": "Asia Pacific" 587 | }, 588 | "DEN": { 589 | "cca2": "US", 590 | "city": "Denver", 591 | "lat": 39.8616981506, 592 | "lon": -104.672996521, 593 | "name": "Denver, CO, United States", 594 | "region": "North America" 595 | }, 596 | "DFW": { 597 | "cca2": "US", 598 | "city": "Dallas", 599 | "lat": 32.8968009949, 600 | "lon": -97.0380020142, 601 | "name": "Dallas, TX, United States", 602 | "region": "North America" 603 | }, 604 | "DKR": { 605 | "cca2": "SN", 606 | "city": "Dakar", 607 | "lat": 14.7412099, 608 | "lon": -17.4889771, 609 | "name": "Dakar, Senegal", 610 | "region": "Africa" 611 | }, 612 | "DME": { 613 | "cca2": "RU", 614 | "city": "Moscow", 615 | "lat": 55.4087982178, 616 | "lon": 37.9062995911, 617 | "name": "Moscow, Russia", 618 | "region": "Europe" 619 | }, 620 | "DMM": { 621 | "cca2": "SA", 622 | "city": "Dammam", 623 | "lat": 26.471200943, 624 | "lon": 49.7979011536, 625 | "name": "Dammam, Saudi Arabia", 626 | "region": "Middle East" 627 | }, 628 | "DOH": { 629 | "cca2": "QA", 630 | "city": "Doha", 631 | "lat": 25.2605946, 632 | "lon": 51.6137665, 633 | "name": "Doha, Qatar", 634 | "region": "Middle East" 635 | }, 636 | "DPS": { 637 | "cca2": "ID", 638 | "city": "Denpasar", 639 | "lat": -8.748169899, 640 | "lon": 115.1669998169, 641 | "name": "Denpasar, Indonesia", 642 | "region": "Asia Pacific" 643 | }, 644 | "DTW": { 645 | "cca2": "US", 646 | "city": "Detroit", 647 | "lat": 42.2123985291, 648 | "lon": -83.3534011841, 649 | "name": "Detroit, MI, United States", 650 | "region": "North America" 651 | }, 652 | "DUB": { 653 | "cca2": "IE", 654 | "city": "Dublin", 655 | "lat": 53.4212989807, 656 | "lon": -6.270070076, 657 | "name": "Dublin, Ireland", 658 | "region": "Europe" 659 | }, 660 | "DUR": { 661 | "cca2": "ZA", 662 | "city": "Durban", 663 | "lat": -29.6144444444, 664 | "lon": 31.1197222222, 665 | "name": "Durban, South Africa", 666 | "region": "Africa" 667 | }, 668 | "DUS": { 669 | "cca2": "DE", 670 | "city": "Düsseldorf", 671 | "lat": 51.2895011902, 672 | "lon": 6.7667798996, 673 | "name": "Düsseldorf, Germany", 674 | "region": "Europe" 675 | }, 676 | "DXB": { 677 | "cca2": "AE", 678 | "city": "Dubai", 679 | "lat": 25.2527999878, 680 | "lon": 55.3643989563, 681 | "name": "Dubai, United Arab Emirates", 682 | "region": "Middle East" 683 | }, 684 | "EBL": { 685 | "cca2": "IQ", 686 | "city": "Erbil", 687 | "lat": 36.1901, 688 | "lon": 43.993, 689 | "name": "Erbil, Iraq", 690 | "region": "Middle East" 691 | }, 692 | "EDI": { 693 | "cca2": "GB", 694 | "city": "Edinburgh", 695 | "lat": 55.9500007629, 696 | "lon": -3.3724999428, 697 | "name": "Edinburgh, United Kingdom", 698 | "region": "Europe" 699 | }, 700 | "EVN": { 701 | "cca2": "AM", 702 | "city": "Yerevan", 703 | "lat": 40.1473007202, 704 | "lon": 44.3959007263, 705 | "name": "Yerevan, Armenia", 706 | "region": "Middle East" 707 | }, 708 | "EWR": { 709 | "cca2": "US", 710 | "city": "Newark", 711 | "lat": 40.6925010681, 712 | "lon": -74.1687011719, 713 | "name": "Newark, NJ, United States", 714 | "region": "North America" 715 | }, 716 | "EZE": { 717 | "cca2": "AR", 718 | "city": "Buenos Aires", 719 | "lat": -34.8222, 720 | "lon": -58.5358, 721 | "name": "Buenos Aires, Argentina", 722 | "region": "South America" 723 | }, 724 | "FCO": { 725 | "cca2": "IT", 726 | "city": "Rome", 727 | "lat": 41.8045005798, 728 | "lon": 12.2508001328, 729 | "name": "Rome, Italy", 730 | "region": "Europe" 731 | }, 732 | "FIH": { 733 | "cca2": "CD", 734 | "city": "Kinshasa", 735 | "lat": -4.3857498169, 736 | "lon": 15.4446001053, 737 | "name": "Kinshasa, DR Congo", 738 | "region": "Africa" 739 | }, 740 | "FLN": { 741 | "cca2": "BR", 742 | "city": "Florianopolis", 743 | "lat": -27.6702785492, 744 | "lon": -48.5525016785, 745 | "name": "Florianopolis, Brazil", 746 | "region": "South America" 747 | }, 748 | "FOC": { 749 | "name": "Fuzhou, China" 750 | }, 751 | "FOR": { 752 | "cca2": "BR", 753 | "city": "Fortaleza", 754 | "lat": -3.7762799263, 755 | "lon": -38.5326004028, 756 | "name": "Fortaleza, Brazil", 757 | "region": "South America" 758 | }, 759 | "FRA": { 760 | "cca2": "DE", 761 | "city": "Frankfurt", 762 | "lat": 50.0264015198, 763 | "lon": 8.543129921, 764 | "name": "Frankfurt, Germany", 765 | "region": "Europe" 766 | }, 767 | "FSD": { 768 | "cca2": "US", 769 | "city": "Sioux Falls", 770 | "lat": 43.540819819502, 771 | "lon": -96.65511577730963, 772 | "name": "Sioux Falls, South Dakota", 773 | "region": "North America" 774 | }, 775 | "FUK": { 776 | "cca2": "JP", 777 | "city": "Fukuoka", 778 | "lat": 33.5902, 779 | "lon": 130.4017, 780 | "name": "Fukuoka, Japan", 781 | "region": "Asia Pacific" 782 | }, 783 | "FUO": { 784 | "name": "Foshan, China" 785 | }, 786 | "GBE": { 787 | "cca2": "BW", 788 | "city": "Gaborone", 789 | "lat": -24.6282, 790 | "lon": 25.9231, 791 | "name": "Gaborone, Botswana", 792 | "region": "Africa" 793 | }, 794 | "GDL": { 795 | "cca2": "MX", 796 | "city": "Guadalajara", 797 | "lat": 20.5217990875, 798 | "lon": -103.3109970093, 799 | "name": "Guadalajara, Mexico", 800 | "region": "North America" 801 | }, 802 | "GEO": { 803 | "cca2": "GY", 804 | "city": "Georgetown", 805 | "lat": 6.825648, 806 | "lon": -58.163756, 807 | "name": "Georgetown, Guyana", 808 | "region": "South America" 809 | }, 810 | "GIG": { 811 | "cca2": "BR", 812 | "city": "Rio de Janeiro", 813 | "lat": -22.8099994659, 814 | "lon": -43.2505569458, 815 | "name": "Rio de Janeiro, Brazil", 816 | "region": "South America" 817 | }, 818 | "GND": { 819 | "cca2": "GD", 820 | "city": "St. George's", 821 | "lat": 12.007116, 822 | "lon": -61.7882288, 823 | "name": "St. George's, Grenada", 824 | "region": "South America" 825 | }, 826 | "GOT": { 827 | "cca2": "SE", 828 | "city": "Gothenburg", 829 | "lat": 57.6627998352, 830 | "lon": 12.279800415, 831 | "name": "Gothenburg, Sweden", 832 | "region": "Europe" 833 | }, 834 | "GRU": { 835 | "cca2": "BR", 836 | "city": "São Paulo", 837 | "lat": -23.4355564117, 838 | "lon": -46.4730567932, 839 | "name": "São Paulo, Brazil", 840 | "region": "South America" 841 | }, 842 | "GUA": { 843 | "cca2": "GT", 844 | "city": "Guatemala City", 845 | "lat": 14.5832996368, 846 | "lon": -90.5274963379, 847 | "name": "Guatemala City, Guatemala", 848 | "region": "North America" 849 | }, 850 | "GUM": { 851 | "cca2": "GU", 852 | "city": "Hagatna", 853 | "lat": 13.4834003448, 854 | "lon": 144.796005249, 855 | "name": "Hagatna, Guam", 856 | "region": "Asia Pacific" 857 | }, 858 | "GVA": { 859 | "cca2": "CH", 860 | "city": "Geneva", 861 | "lat": 46.2380981445, 862 | "lon": 6.1089501381, 863 | "name": "Geneva, Switzerland", 864 | "region": "Europe" 865 | }, 866 | "GYD": { 867 | "cca2": "AZ", 868 | "city": "Baku", 869 | "lat": 40.4674987793, 870 | "lon": 50.0466995239, 871 | "name": "Baku, Azerbaijan", 872 | "region": "Middle East" 873 | }, 874 | "GYE": { 875 | "cca2": "EC", 876 | "city": "Guayaquil", 877 | "lat": -2.1894, 878 | "lon": -79.8891, 879 | "name": "Guayaquil, Ecuador", 880 | "region": "South America" 881 | }, 882 | "GYN": { 883 | "cca2": "BR", 884 | "city": "Goiania", 885 | "lat": -16.69727, 886 | "lon": -49.26851, 887 | "name": "Goiânia, Brazil", 888 | "region": "South America" 889 | }, 890 | "HAK": { 891 | "name": "Haikou, China" 892 | }, 893 | "HAM": { 894 | "cca2": "DE", 895 | "city": "Hamburg", 896 | "lat": 53.6304016113, 897 | "lon": 9.9882297516, 898 | "name": "Hamburg, Germany", 899 | "region": "Europe" 900 | }, 901 | "HAN": { 902 | "cca2": "VN", 903 | "city": "Hanoi", 904 | "lat": 21.221200943, 905 | "lon": 105.806999206, 906 | "name": "Hanoi, Vietnam", 907 | "region": "Asia Pacific" 908 | }, 909 | "HBA": { 910 | "cca2": "AU", 911 | "city": "Hobart", 912 | "lat": -42.883209, 913 | "lon": 147.331665, 914 | "name": "Hobart, Australia", 915 | "region": "Oceania" 916 | }, 917 | "HEL": { 918 | "cca2": "FI", 919 | "city": "Helsinki", 920 | "lat": 60.317199707, 921 | "lon": 24.963300705, 922 | "name": "Helsinki, Finland", 923 | "region": "Europe" 924 | }, 925 | "HFA": { 926 | "cca2": "IL", 927 | "city": "Haifa", 928 | "lat": 32.78492, 929 | "lon": 34.96069, 930 | "name": "Haifa, Israel", 931 | "region": "Middle East" 932 | }, 933 | "HGH": { 934 | "name": "Shaoxing, China" 935 | }, 936 | "HKG": { 937 | "cca2": "HK", 938 | "city": "Hong Kong", 939 | "lat": 22.3089008331, 940 | "lon": 113.915000916, 941 | "name": "Hong Kong", 942 | "region": "Asia Pacific" 943 | }, 944 | "HNL": { 945 | "cca2": "US", 946 | "city": "Honolulu", 947 | "lat": 21.3187007904, 948 | "lon": -157.9219970703, 949 | "name": "Honolulu, HI, United States", 950 | "region": "North America" 951 | }, 952 | "HRE": { 953 | "cca2": "ZW", 954 | "city": "Harare", 955 | "lat": -17.9318008423, 956 | "lon": 31.0928001404, 957 | "name": "Harare, Zimbabwe", 958 | "region": "Africa" 959 | }, 960 | "HYD": { 961 | "cca2": "IN", 962 | "city": "Hyderabad", 963 | "lat": 17.2313175201, 964 | "lon": 78.4298553467, 965 | "name": "Hyderabad, India", 966 | "region": "Asia Pacific" 967 | }, 968 | "HYN": { 969 | "name": "Taizhou, China" 970 | }, 971 | "IAD": { 972 | "cca2": "US", 973 | "city": "Ashburn", 974 | "lat": 38.94449997, 975 | "lon": -77.45580292, 976 | "name": "Ashburn, VA, United States", 977 | "region": "North America" 978 | }, 979 | "IAH": { 980 | "cca2": "US", 981 | "city": "Houston", 982 | "lat": 29.9843997955, 983 | "lon": -95.3414001465, 984 | "name": "Houston, TX, United States", 985 | "region": "North America" 986 | }, 987 | "ICN": { 988 | "cca2": "KR", 989 | "city": "Seoul", 990 | "lat": 37.4691009521, 991 | "lon": 126.450996399, 992 | "name": "Seoul, South Korea", 993 | "region": "Asia Pacific" 994 | }, 995 | "IND": { 996 | "cca2": "US", 997 | "city": "Indianapolis", 998 | "lat": 39.717300415, 999 | "lon": -86.2944030762, 1000 | "name": "Indianapolis, IN, United States", 1001 | "region": "North America" 1002 | }, 1003 | "ISB": { 1004 | "cca2": "PK", 1005 | "city": "Islamabad", 1006 | "lat": 33.6166992188, 1007 | "lon": 73.0991973877, 1008 | "name": "Islamabad, Pakistan", 1009 | "region": "Asia Pacific" 1010 | }, 1011 | "IST": { 1012 | "cca2": "TR", 1013 | "city": "Istanbul", 1014 | "lat": 40.9768981934, 1015 | "lon": 28.8145999908, 1016 | "name": "Istanbul, Turkey", 1017 | "region": "Europe" 1018 | }, 1019 | "ISU": { 1020 | "cca2": "IQ", 1021 | "city": "Sulaymaniyah", 1022 | "lat": 35.5668, 1023 | "lon": 45.4161, 1024 | "name": "Sulaymaniyah, Iraq", 1025 | "region": "Middle East" 1026 | }, 1027 | "ITJ": { 1028 | "cca2": "BR", 1029 | "city": "Itajai", 1030 | "lat": -27.6116676331, 1031 | "lon": -48.6727790833, 1032 | "name": "Itajaí, Brazil", 1033 | "region": "South America" 1034 | }, 1035 | "IXC": { 1036 | "cca2": "IN", 1037 | "city": "Chandigarh", 1038 | "lat": 30.673500061, 1039 | "lon": 76.7884979248, 1040 | "name": "Chandigarh, India", 1041 | "region": "Asia Pacific" 1042 | }, 1043 | "JAX": { 1044 | "cca2": "US", 1045 | "city": "Jacksonville", 1046 | "lat": 30.4941005707, 1047 | "lon": -81.6878967285, 1048 | "name": "Jacksonville, FL, United States", 1049 | "region": "North America" 1050 | }, 1051 | "JDO": { 1052 | "cca2": "BR", 1053 | "city": "Juazeiro do Norte", 1054 | "lat": -7.2242, 1055 | "lon": -39.313, 1056 | "name": "Juazeiro do Norte, Brazil", 1057 | "region": "South America" 1058 | }, 1059 | "JED": { 1060 | "cca2": "SA", 1061 | "city": "Jeddah", 1062 | "lat": 21.679599762, 1063 | "lon": 39.15650177, 1064 | "name": "Jeddah, Saudi Arabia", 1065 | "region": "Middle East" 1066 | }, 1067 | "JHB": { 1068 | "cca2": "MY", 1069 | "city": "Johor Bahru", 1070 | "lat": 1.635848, 1071 | "lon": 103.665943, 1072 | "name": "Johor Bahru, Malaysia", 1073 | "region": "Asia Pacific" 1074 | }, 1075 | "JIB": { 1076 | "cca2": "DJ", 1077 | "city": "Djibouti", 1078 | "lat": 11.5473003387, 1079 | "lon": 43.1595001221, 1080 | "name": "Djibouti City, Djibouti", 1081 | "region": "Africa" 1082 | }, 1083 | "JNB": { 1084 | "cca2": "ZA", 1085 | "city": "Johannesburg", 1086 | "lat": -26.133333, 1087 | "lon": 28.25, 1088 | "name": "Johannesburg, South Africa", 1089 | "region": "Africa" 1090 | }, 1091 | "JOG": { 1092 | "cca2": "ID", 1093 | "city": "Yogyakarta", 1094 | "lat": -7.7881798744, 1095 | "lon": 110.4319992065, 1096 | "name": "Yogyakarta, Indonesia", 1097 | "region": "Asia Pacific" 1098 | }, 1099 | "JOI": { 1100 | "cca2": "BR", 1101 | "city": "Joinville", 1102 | "lat": -26.304408, 1103 | "lon": -48.846383, 1104 | "name": "Joinville, Brazil", 1105 | "region": "South America" 1106 | }, 1107 | "JSR": { 1108 | "cca2": "BD", 1109 | "city": "Jashore", 1110 | "lat": 23.1837997437, 1111 | "lon": 89.1607971191, 1112 | "name": "Jashore, Bangladesh", 1113 | "region": "Asia Pacific" 1114 | }, 1115 | "KBP": { 1116 | "cca2": "UA", 1117 | "city": "Kyiv", 1118 | "lat": 50.3450012207, 1119 | "lon": 30.8946990967, 1120 | "name": "Kyiv, Ukraine", 1121 | "region": "Europe" 1122 | }, 1123 | "KEF": { 1124 | "cca2": "IS", 1125 | "city": "Reykjavík", 1126 | "lat": 63.9850006104, 1127 | "lon": -22.6056003571, 1128 | "name": "Reykjavík, Iceland", 1129 | "region": "Europe" 1130 | }, 1131 | "KGL": { 1132 | "cca2": "RW", 1133 | "city": "Kigali", 1134 | "lat": -1.9686299563, 1135 | "lon": 30.1394996643, 1136 | "name": "Kigali, Rwanda", 1137 | "region": "Africa" 1138 | }, 1139 | "KHH": { 1140 | "cca2": "TW", 1141 | "city": "Kaohsiung City", 1142 | "lat": 22.5771007538, 1143 | "lon": 120.3499984741, 1144 | "name": "Kaohsiung City, Taiwan", 1145 | "region": "Asia Pacific" 1146 | }, 1147 | "KHI": { 1148 | "cca2": "PK", 1149 | "city": "Karachi", 1150 | "lat": 24.9064998627, 1151 | "lon": 67.1607971191, 1152 | "name": "Karachi, Pakistan", 1153 | "region": "Asia Pacific" 1154 | }, 1155 | "KHN": { 1156 | "name": "Xinyu, China" 1157 | }, 1158 | "KHV": { 1159 | "cca2": "RU", 1160 | "city": "Khabarovsk", 1161 | "lat": 48.5279998779, 1162 | "lon": 135.18800354, 1163 | "name": "Khabarovsk, Russia", 1164 | "region": "Asia Pacific" 1165 | }, 1166 | "KIN": { 1167 | "cca2": "JM", 1168 | "city": "Kingston", 1169 | "lat": 17.9951, 1170 | "lon": -76.7846, 1171 | "name": "Kingston, Jamaica", 1172 | "region": "North America" 1173 | }, 1174 | "KIV": { 1175 | "cca2": "MD", 1176 | "city": "Chișinău", 1177 | "lat": 46.9277000427, 1178 | "lon": 28.9309997559, 1179 | "name": "Chișinău, Moldova", 1180 | "region": "Europe" 1181 | }, 1182 | "KIX": { 1183 | "cca2": "JP", 1184 | "city": "Osaka", 1185 | "lat": 34.4272994995, 1186 | "lon": 135.244003296, 1187 | "name": "Osaka, Japan", 1188 | "region": "Asia Pacific" 1189 | }, 1190 | "KJA": { 1191 | "cca2": "RU", 1192 | "city": "Krasnoyarsk", 1193 | "lat": 56.0153, 1194 | "lon": 92.8932, 1195 | "name": "Krasnoyarsk, Russia", 1196 | "region": "Asia Pacific" 1197 | }, 1198 | "KLD": { 1199 | "cca2": "RU", 1200 | "city": "Tver", 1201 | "lat": 56.8587, 1202 | "lon": 35.9176, 1203 | "name": "Tver, Russian Federation", 1204 | "region": "Europe" 1205 | }, 1206 | "KMG": { 1207 | "name": "Kunming, China" 1208 | }, 1209 | "KNU": { 1210 | "cca2": "IN", 1211 | "city": "Kanpur", 1212 | "lat": 26.4499, 1213 | "lon": 80.3319, 1214 | "name": "Kanpur, India", 1215 | "region": "Asia Pacific" 1216 | }, 1217 | "KTM": { 1218 | "cca2": "NP", 1219 | "city": "Kathmandu", 1220 | "lat": 27.6965999603, 1221 | "lon": 85.3591003418, 1222 | "name": "Kathmandu, Nepal", 1223 | "region": "Asia Pacific" 1224 | }, 1225 | "KUL": { 1226 | "cca2": "MY", 1227 | "city": "Kuala Lumpur", 1228 | "lat": 2.745579958, 1229 | "lon": 101.709999084, 1230 | "name": "Kuala Lumpur, Malaysia", 1231 | "region": "Asia Pacific" 1232 | }, 1233 | "KWE": { 1234 | "name": "Guiyang, China" 1235 | }, 1236 | "KWI": { 1237 | "cca2": "KW", 1238 | "city": "Kuwait City", 1239 | "lat": 29.226600647, 1240 | "lon": 47.9688987732, 1241 | "name": "Kuwait City, Kuwait", 1242 | "region": "Middle East" 1243 | }, 1244 | "LAD": { 1245 | "cca2": "AO", 1246 | "city": "Luanda", 1247 | "lat": -8.8583698273, 1248 | "lon": 13.2312002182, 1249 | "name": "Luanda, Angola", 1250 | "region": "Africa" 1251 | }, 1252 | "LAS": { 1253 | "cca2": "US", 1254 | "city": "Las Vegas", 1255 | "lat": 36.08010101, 1256 | "lon": -115.1520004, 1257 | "name": "Las Vegas, NV, United States", 1258 | "region": "North America" 1259 | }, 1260 | "LAX": { 1261 | "cca2": "US", 1262 | "city": "Los Angeles", 1263 | "lat": 33.94250107, 1264 | "lon": -118.4079971, 1265 | "name": "Los Angeles, CA, United States", 1266 | "region": "North America" 1267 | }, 1268 | "LCA": { 1269 | "cca2": "CY", 1270 | "city": "Nicosia", 1271 | "lat": 34.8750991821, 1272 | "lon": 33.6249008179, 1273 | "name": "Nicosia, Cyprus", 1274 | "region": "Europe" 1275 | }, 1276 | "LED": { 1277 | "cca2": "RU", 1278 | "city": "Saint Petersburg", 1279 | "lat": 59.8003005981, 1280 | "lon": 30.2625007629, 1281 | "name": "Saint Petersburg, Russia", 1282 | "region": "Europe" 1283 | }, 1284 | "LHE": { 1285 | "cca2": "PK", 1286 | "city": "Lahore", 1287 | "lat": 31.5216007233, 1288 | "lon": 74.4036026001, 1289 | "name": "Lahore, Pakistan", 1290 | "region": "Asia Pacific" 1291 | }, 1292 | "LHR": { 1293 | "cca2": "GB", 1294 | "city": "London", 1295 | "lat": 51.4706001282, 1296 | "lon": -0.4619410038, 1297 | "name": "London, United Kingdom", 1298 | "region": "Europe" 1299 | }, 1300 | "LHW": { 1301 | "name": "Lanzhou, China" 1302 | }, 1303 | "LIM": { 1304 | "cca2": "PE", 1305 | "city": "Lima", 1306 | "lat": -12.021900177, 1307 | "lon": -77.1143035889, 1308 | "name": "Lima, Peru", 1309 | "region": "South America" 1310 | }, 1311 | "LIS": { 1312 | "cca2": "PT", 1313 | "city": "Lisbon", 1314 | "lat": 38.7812995911, 1315 | "lon": -9.1359195709, 1316 | "name": "Lisbon, Portugal", 1317 | "region": "Europe" 1318 | }, 1319 | "LLK": { 1320 | "cca2": "AZ", 1321 | "city": "Astara", 1322 | "lat": 38.7463989258, 1323 | "lon": 48.8180007935, 1324 | "name": "Astara, Azerbaijan", 1325 | "region": "Middle East" 1326 | }, 1327 | "LOS": { 1328 | "cca2": "NG", 1329 | "city": "Lagos", 1330 | "lat": 6.5773701668, 1331 | "lon": 3.321160078, 1332 | "name": "Lagos, Nigeria", 1333 | "region": "Africa" 1334 | }, 1335 | "LUX": { 1336 | "cca2": "LU", 1337 | "city": "Luxembourg City", 1338 | "lat": 49.6265983582, 1339 | "lon": 6.211520195, 1340 | "name": "Luxembourg City, Luxembourg", 1341 | "region": "Europe" 1342 | }, 1343 | "LYA": { 1344 | "name": "Luoyang, China" 1345 | }, 1346 | "LYS": { 1347 | "cca2": "FR", 1348 | "city": "Lyon", 1349 | "lat": 45.7263, 1350 | "lon": 5.0908, 1351 | "name": "Lyon, France", 1352 | "region": "Europe" 1353 | }, 1354 | "MAA": { 1355 | "cca2": "IN", 1356 | "city": "Chennai", 1357 | "lat": 12.9900054932, 1358 | "lon": 80.1692962646, 1359 | "name": "Chennai, India", 1360 | "region": "Asia Pacific" 1361 | }, 1362 | "MAD": { 1363 | "cca2": "ES", 1364 | "city": "Madrid", 1365 | "lat": 40.4936, 1366 | "lon": -3.56676, 1367 | "name": "Madrid, Spain", 1368 | "region": "Europe" 1369 | }, 1370 | "MAN": { 1371 | "cca2": "GB", 1372 | "city": "Manchester", 1373 | "lat": 53.3536987305, 1374 | "lon": -2.2749500275, 1375 | "name": "Manchester, United Kingdom", 1376 | "region": "Europe" 1377 | }, 1378 | "MAO": { 1379 | "cca2": "BR", 1380 | "city": "Manaus", 1381 | "lat": -3.11286, 1382 | "lon": -60.01949, 1383 | "name": "Manaus, Brazil", 1384 | "region": "South America" 1385 | }, 1386 | "MBA": { 1387 | "cca2": "KE", 1388 | "city": "Mombasa", 1389 | "lat": -4.0348300934, 1390 | "lon": 39.5942001343, 1391 | "name": "Mombasa, Kenya", 1392 | "region": "Africa" 1393 | }, 1394 | "MCI": { 1395 | "cca2": "US", 1396 | "city": "Kansas City", 1397 | "lat": 39.2975997925, 1398 | "lon": -94.7138977051, 1399 | "name": "Kansas City, MO, United States", 1400 | "region": "North America" 1401 | }, 1402 | "MCT": { 1403 | "cca2": "OM", 1404 | "city": "Muscat", 1405 | "lat": 23.5932998657, 1406 | "lon": 58.2844009399, 1407 | "name": "Muscat, Oman", 1408 | "region": "Middle East" 1409 | }, 1410 | "MDE": { 1411 | "cca2": "CO", 1412 | "city": "Medellín", 1413 | "lat": 6.16454, 1414 | "lon": -75.4231, 1415 | "name": "Medellín, Colombia", 1416 | "region": "South America" 1417 | }, 1418 | "MDL": { 1419 | "cca2": "MM", 1420 | "city": "Mandalay", 1421 | "lat": 21.7051697, 1422 | "lon": 95.9695206, 1423 | "name": "Mandalay, Myanmar", 1424 | "region": "Asia Pacific" 1425 | }, 1426 | "MEL": { 1427 | "cca2": "AU", 1428 | "city": "Melbourne", 1429 | "lat": -37.6733016968, 1430 | "lon": 144.843002319, 1431 | "name": "Melbourne, VIC, Australia", 1432 | "region": "Oceania" 1433 | }, 1434 | "MEM": { 1435 | "cca2": "US", 1436 | "city": "Memphis", 1437 | "lat": 35.0424003601, 1438 | "lon": -89.9766998291, 1439 | "name": "Memphis, TN, United States", 1440 | "region": "North America" 1441 | }, 1442 | "MEX": { 1443 | "cca2": "MX", 1444 | "city": "Mexico City", 1445 | "lat": 19.4363002777, 1446 | "lon": -99.0720977783, 1447 | "name": "Mexico City, Mexico", 1448 | "region": "North America" 1449 | }, 1450 | "MFE": { 1451 | "cca2": "US", 1452 | "city": "McAllen", 1453 | "lat": 26.17580032, 1454 | "lon": -98.23860168, 1455 | "name": "McAllen, TX, United States", 1456 | "region": "North America" 1457 | }, 1458 | "MFM": { 1459 | "cca2": "MO", 1460 | "city": "Macau", 1461 | "lat": 22.1495990753, 1462 | "lon": 113.592002869, 1463 | "name": "Macau", 1464 | "region": "Asia Pacific" 1465 | }, 1466 | "MGM": { 1467 | "cca2": "US", 1468 | "city": "Montgomery", 1469 | "lat": 32.30059814, 1470 | "lon": -86.39399719, 1471 | "name": "Montgomery, AL, United States", 1472 | "region": "North America" 1473 | }, 1474 | "MIA": { 1475 | "cca2": "US", 1476 | "city": "Miami", 1477 | "lat": 25.7931995392, 1478 | "lon": -80.2906036377, 1479 | "name": "Miami, FL, United States", 1480 | "region": "North America" 1481 | }, 1482 | "MLE": { 1483 | "cca2": "MV", 1484 | "city": "Male", 1485 | "lat": 4.1748, 1486 | "lon": 73.50888, 1487 | "name": "Malé, Maldives", 1488 | "region": "Asia Pacific" 1489 | }, 1490 | "MNL": { 1491 | "cca2": "PH", 1492 | "city": "Manila", 1493 | "lat": 14.508600235, 1494 | "lon": 121.019996643, 1495 | "name": "Manila, Philippines", 1496 | "region": "Asia Pacific" 1497 | }, 1498 | "MPM": { 1499 | "cca2": "MZ", 1500 | "city": "Maputo", 1501 | "lat": -25.9207992554, 1502 | "lon": 32.5726013184, 1503 | "name": "Maputo, Mozambique", 1504 | "region": "Africa" 1505 | }, 1506 | "MRS": { 1507 | "cca2": "FR", 1508 | "city": "Marseille", 1509 | "lat": 43.439271922, 1510 | "lon": 5.2214241028, 1511 | "name": "Marseille, France", 1512 | "region": "Europe" 1513 | }, 1514 | "MRU": { 1515 | "cca2": "MU", 1516 | "city": "Port Louis", 1517 | "lat": -20.4302005768, 1518 | "lon": 57.6836013794, 1519 | "name": "Port Louis, Mauritius", 1520 | "region": "Africa" 1521 | }, 1522 | "MSP": { 1523 | "cca2": "US", 1524 | "city": "Minneapolis", 1525 | "lat": 44.8819999695, 1526 | "lon": -93.2218017578, 1527 | "name": "Minneapolis, MN, United States", 1528 | "region": "North America" 1529 | }, 1530 | "MSQ": { 1531 | "cca2": "BY", 1532 | "city": "Minsk", 1533 | "lat": 53.9006, 1534 | "lon": 27.599, 1535 | "name": "Minsk, Belarus", 1536 | "region": "Europe" 1537 | }, 1538 | "MUC": { 1539 | "cca2": "DE", 1540 | "city": "Munich", 1541 | "lat": 48.3538017273, 1542 | "lon": 11.7861003876, 1543 | "name": "Munich, Germany", 1544 | "region": "Europe" 1545 | }, 1546 | "MXP": { 1547 | "cca2": "IT", 1548 | "city": "Milan", 1549 | "lat": 45.6305999756, 1550 | "lon": 8.7281103134, 1551 | "name": "Milan, Italy", 1552 | "region": "Europe" 1553 | }, 1554 | "NAG": { 1555 | "cca2": "IN", 1556 | "city": "Nagpur", 1557 | "lat": 21.1610714, 1558 | "lon": 79.0024702, 1559 | "name": "Nagpur, India", 1560 | "region": "Asia Pacific" 1561 | }, 1562 | "NBO": { 1563 | "cca2": "KE", 1564 | "city": "Nairobi", 1565 | "lat": -1.319239974, 1566 | "lon": 36.9277992249, 1567 | "name": "Nairobi, Kenya", 1568 | "region": "Africa" 1569 | }, 1570 | "NJF": { 1571 | "cca2": "IQ", 1572 | "city": "Najaf", 1573 | "lat": 31.989722, 1574 | "lon": 44.404167, 1575 | "name": "Najaf, Iraq", 1576 | "region": "Middle East" 1577 | }, 1578 | "NOU": { 1579 | "cca2": "NC", 1580 | "city": "Noumea", 1581 | "lat": -22.0146007538, 1582 | "lon": 166.212997436, 1583 | "name": "Noumea, New Caledonia", 1584 | "region": "Oceania" 1585 | }, 1586 | "NQN": { 1587 | "cca2": "AR", 1588 | "city": "Neuquen", 1589 | "lat": -38.9490013123, 1590 | "lon": -68.1557006836, 1591 | "name": "Neuquén, Argentina", 1592 | "region": "South America" 1593 | }, 1594 | "NRT": { 1595 | "cca2": "JP", 1596 | "city": "Tokyo", 1597 | "lat": 35.7647018433, 1598 | "lon": 140.386001587, 1599 | "name": "Tokyo, Japan", 1600 | "region": "Asia Pacific" 1601 | }, 1602 | "NVT": { 1603 | "cca2": "BR", 1604 | "city": "Timbo", 1605 | "lat": -26.8251, 1606 | "lon": -49.2695, 1607 | "name": "Timbó, Brazil", 1608 | "region": "South America" 1609 | }, 1610 | "OKA": { 1611 | "cca2": "JP", 1612 | "city": "Naha", 1613 | "lat": 26.1958, 1614 | "lon": 127.646, 1615 | "name": "Naha, Japan", 1616 | "region": "Asia Pacific" 1617 | }, 1618 | "OKC": { 1619 | "cca2": "US", 1620 | "city": "Oklahoma City", 1621 | "lat": 35.46655, 1622 | "lon": -97.65373, 1623 | "name": "Oklahoma City, United States", 1624 | "region": "North America" 1625 | }, 1626 | "OMA": { 1627 | "cca2": "US", 1628 | "city": "Omaha", 1629 | "lat": 41.3031997681, 1630 | "lon": -95.8940963745, 1631 | "name": "Omaha, NE, United States", 1632 | "region": "North America" 1633 | }, 1634 | "ORD": { 1635 | "cca2": "US", 1636 | "city": "Chicago", 1637 | "lat": 41.97859955, 1638 | "lon": -87.90480042, 1639 | "name": "Chicago, IL, United States", 1640 | "region": "North America" 1641 | }, 1642 | "ORF": { 1643 | "cca2": "US", 1644 | "city": "Norfolk", 1645 | "lat": 36.8945999146, 1646 | "lon": -76.2012023926, 1647 | "name": "Norfolk, VA, United States", 1648 | "region": "North America" 1649 | }, 1650 | "ORK": { 1651 | "cca2": "IE", 1652 | "city": "Cork", 1653 | "lat": 51.8413009644, 1654 | "lon": -8.491109848, 1655 | "name": "Cork, Ireland", 1656 | "region": "Europe" 1657 | }, 1658 | "ORN": { 1659 | "cca2": "DZ", 1660 | "city": "Oran", 1661 | "lat": 35.6911, 1662 | "lon": -0.6416, 1663 | "name": "Oran, Algeria", 1664 | "region": "Africa" 1665 | }, 1666 | "OSL": { 1667 | "cca2": "NO", 1668 | "city": "Oslo", 1669 | "lat": 60.193901062, 1670 | "lon": 11.100399971, 1671 | "name": "Oslo, Norway", 1672 | "region": "Europe" 1673 | }, 1674 | "OTP": { 1675 | "cca2": "RO", 1676 | "city": "Bucharest", 1677 | "lat": 44.5722007751, 1678 | "lon": 26.1021995544, 1679 | "name": "Bucharest, Romania", 1680 | "region": "Europe" 1681 | }, 1682 | "OUA": { 1683 | "cca2": "BF", 1684 | "city": "Ouagadougou", 1685 | "lat": 12.3531999588, 1686 | "lon": -1.5124200583, 1687 | "name": "Ouagadougou, Burkina Faso", 1688 | "region": "Africa" 1689 | }, 1690 | "PAT": { 1691 | "cca2": "IN", 1692 | "city": "Patna", 1693 | "lat": 25.591299057, 1694 | "lon": 85.0879974365, 1695 | "name": "Patna, India", 1696 | "region": "Asia Pacific" 1697 | }, 1698 | "PBH": { 1699 | "cca2": "BT", 1700 | "city": "Thimphu", 1701 | "lat": 27.4712, 1702 | "lon": 89.6339, 1703 | "name": "Thimphu, Bhutan", 1704 | "region": "Asia Pacific" 1705 | }, 1706 | "PBM": { 1707 | "cca2": "SR", 1708 | "city": "Paramaribo", 1709 | "lat": 5.452831, 1710 | "lon": -55.187783, 1711 | "name": "Paramaribo, Suriname", 1712 | "region": "South America" 1713 | }, 1714 | "PDX": { 1715 | "cca2": "US", 1716 | "city": "Portland", 1717 | "lat": 45.58869934, 1718 | "lon": -122.5979996, 1719 | "name": "Portland, OR, United States", 1720 | "region": "North America" 1721 | }, 1722 | "PER": { 1723 | "cca2": "AU", 1724 | "city": "Perth", 1725 | "lat": -31.9402999878, 1726 | "lon": 115.967002869, 1727 | "name": "Perth, WA, Australia", 1728 | "region": "Oceania" 1729 | }, 1730 | "PHL": { 1731 | "cca2": "US", 1732 | "city": "Philadelphia", 1733 | "lat": 39.8718986511, 1734 | "lon": -75.2410964966, 1735 | "name": "Philadelphia, United States", 1736 | "region": "North America" 1737 | }, 1738 | "PHX": { 1739 | "cca2": "US", 1740 | "city": "Phoenix", 1741 | "lat": 33.434299469, 1742 | "lon": -112.012001038, 1743 | "name": "Phoenix, AZ, United States", 1744 | "region": "North America" 1745 | }, 1746 | "PIT": { 1747 | "cca2": "US", 1748 | "city": "Pittsburgh", 1749 | "lat": 40.49150085, 1750 | "lon": -80.23290253, 1751 | "name": "Pittsburgh, PA, United States", 1752 | "region": "North America" 1753 | }, 1754 | "PKX": { 1755 | "name": "Langfang, China" 1756 | }, 1757 | "PMO": { 1758 | "cca2": "IT", 1759 | "city": "Palermo", 1760 | "lat": 38.16114, 1761 | "lon": 13.31546, 1762 | "name": "Palermo, Italy", 1763 | "region": "Europe" 1764 | }, 1765 | "PNH": { 1766 | "cca2": "KH", 1767 | "city": "Phnom Penh", 1768 | "lat": 11.5466003418, 1769 | "lon": 104.84400177, 1770 | "name": "Phnom Penh, Cambodia", 1771 | "region": "Asia Pacific" 1772 | }, 1773 | "POA": { 1774 | "cca2": "BR", 1775 | "city": "Porto Alegre", 1776 | "lat": -29.9944000244, 1777 | "lon": -51.1713981628, 1778 | "name": "Porto Alegre, Brazil", 1779 | "region": "South America" 1780 | }, 1781 | "PPT": { 1782 | "cca2": "PF", 1783 | "city": "Tahiti", 1784 | "lat": -17.5536994934, 1785 | "lon": -149.606994629, 1786 | "name": "Tahiti, French Polynesia", 1787 | "region": "Oceania" 1788 | }, 1789 | "PRG": { 1790 | "cca2": "CZ", 1791 | "city": "Prague", 1792 | "lat": 50.1007995605, 1793 | "lon": 14.2600002289, 1794 | "name": "Prague, Czech Republic", 1795 | "region": "Europe" 1796 | }, 1797 | "PTY": { 1798 | "cca2": "PA", 1799 | "city": "Panama City", 1800 | "lat": 9.0713596344, 1801 | "lon": -79.3834991455, 1802 | "name": "Panama City, Panama", 1803 | "region": "South America" 1804 | }, 1805 | "QRO": { 1806 | "cca2": "MX", 1807 | "city": "Queretaro", 1808 | "lat": 20.6173000336, 1809 | "lon": -100.185997009, 1810 | "name": "Queretaro, MX, Mexico", 1811 | "region": "North America" 1812 | }, 1813 | "QWJ": { 1814 | "cca2": "BR", 1815 | "city": "Americana", 1816 | "lat": -22.738, 1817 | "lon": -47.334, 1818 | "name": "Americana, Brazil", 1819 | "region": "South America" 1820 | }, 1821 | "RAO": { 1822 | "cca2": "BR", 1823 | "city": "Ribeirao Preto", 1824 | "lat": -21.1363887787, 1825 | "lon": -47.7766685486, 1826 | "name": "Ribeirao Preto, Brazil", 1827 | "region": "South America" 1828 | }, 1829 | "RDU": { 1830 | "cca2": "US", 1831 | "city": "Durham", 1832 | "lat": 35.93543, 1833 | "lon": -78.88075, 1834 | "name": "Durham, United States", 1835 | "region": "North America" 1836 | }, 1837 | "REC": { 1838 | "cca2": "BR", 1839 | "city": "Recife", 1840 | "lat": -8.1264896393, 1841 | "lon": -34.9235992432, 1842 | "name": "Recife, Brazil", 1843 | "region": "South America" 1844 | }, 1845 | "RGN": { 1846 | "cca2": "MM", 1847 | "city": "Yangon", 1848 | "lat": 16.9073009491, 1849 | "lon": 96.1332015991, 1850 | "name": "Yangon, Myanmar", 1851 | "region": "Asia Pacific" 1852 | }, 1853 | "RIC": { 1854 | "cca2": "US", 1855 | "city": "Richmond", 1856 | "lat": 37.5051994324, 1857 | "lon": -77.3197021484, 1858 | "name": "Richmond, VA, United States", 1859 | "region": "North America" 1860 | }, 1861 | "RIX": { 1862 | "cca2": "LV", 1863 | "city": "Riga", 1864 | "lat": 56.9235992432, 1865 | "lon": 23.9710998535, 1866 | "name": "Riga, Latvia", 1867 | "region": "Europe" 1868 | }, 1869 | "RUH": { 1870 | "cca2": "SA", 1871 | "city": "Riyadh", 1872 | "lat": 24.9575996399, 1873 | "lon": 46.6987991333, 1874 | "name": "Riyadh, Saudi Arabia", 1875 | "region": "Middle East" 1876 | }, 1877 | "RUN": { 1878 | "cca2": "RE", 1879 | "city": "Saint-Denis", 1880 | "lat": -20.8871002197, 1881 | "lon": 55.5102996826, 1882 | "name": "Réunion, France", 1883 | "region": "Africa" 1884 | }, 1885 | "SAN": { 1886 | "cca2": "US", 1887 | "city": "San Diego", 1888 | "lat": 32.7336006165, 1889 | "lon": -117.190002441, 1890 | "name": "San Diego, CA, United States", 1891 | "region": "North America" 1892 | }, 1893 | "SAT": { 1894 | "cca2": "US", 1895 | "city": "San Antonio", 1896 | "lat": 29.429461, 1897 | "lon": -98.487061, 1898 | "name": "San Antonio, United States", 1899 | "region": "North America" 1900 | }, 1901 | "SCL": { 1902 | "cca2": "CL", 1903 | "city": "Santiago", 1904 | "lat": -33.3930015564, 1905 | "lon": -70.7857971191, 1906 | "name": "Santiago, Chile", 1907 | "region": "South America" 1908 | }, 1909 | "SDQ": { 1910 | "cca2": "DO", 1911 | "city": "Santo Domingo", 1912 | "lat": 18.4297008514, 1913 | "lon": -69.6688995361, 1914 | "name": "Santo Domingo, Dominican Republic", 1915 | "region": "North America" 1916 | }, 1917 | "SEA": { 1918 | "cca2": "US", 1919 | "city": "Seattle", 1920 | "lat": 47.4490013123, 1921 | "lon": -122.308998108, 1922 | "name": "Seattle, WA, United States", 1923 | "region": "North America" 1924 | }, 1925 | "SFO": { 1926 | "cca2": "US", 1927 | "city": "San Francisco", 1928 | "lat": 37.6189994812, 1929 | "lon": -122.375, 1930 | "name": "San Francisco, United States", 1931 | "region": "North America" 1932 | }, 1933 | "SGN": { 1934 | "cca2": "VN", 1935 | "city": "Ho Chi Minh City", 1936 | "lat": 10.8187999725, 1937 | "lon": 106.652000427, 1938 | "name": "Ho Chi Minh City, Vietnam", 1939 | "region": "Asia Pacific" 1940 | }, 1941 | "SHA": { 1942 | "name": "Shanghai, China" 1943 | }, 1944 | "SIN": { 1945 | "cca2": "SG", 1946 | "city": "Singapore", 1947 | "lat": 1.3501900434, 1948 | "lon": 103.994003296, 1949 | "name": "Singapore, Singapore", 1950 | "region": "Asia Pacific" 1951 | }, 1952 | "SJC": { 1953 | "cca2": "US", 1954 | "city": "San Jose", 1955 | "lat": 37.3625984192, 1956 | "lon": -121.929000855, 1957 | "name": "San Jose, CA, United States", 1958 | "region": "North America" 1959 | }, 1960 | "SJK": { 1961 | "cca2": "BR", 1962 | "city": "São José dos Campos", 1963 | "lat": -23.1791, 1964 | "lon": -45.8872, 1965 | "name": "São José dos Campos, Brazil", 1966 | "region": "South America" 1967 | }, 1968 | "SJO": { 1969 | "cca2": "CR", 1970 | "city": "San José", 1971 | "lat": 9.9938602448, 1972 | "lon": -84.2088012695, 1973 | "name": "San José, Costa Rica", 1974 | "region": "South America" 1975 | }, 1976 | "SJP": { 1977 | "cca2": "BR", 1978 | "city": "São José do Rio Preto", 1979 | "lat": -20.807157, 1980 | "lon": -49.378994, 1981 | "name": "São José do Rio Preto, Brazil", 1982 | "region": "South America" 1983 | }, 1984 | "SJW": { 1985 | "name": "Hengshui, China" 1986 | }, 1987 | "SKG": { 1988 | "cca2": "GR", 1989 | "city": "Thessaloniki", 1990 | "lat": 40.5196990967, 1991 | "lon": 22.9708995819, 1992 | "name": "Thessaloniki, Greece", 1993 | "region": "Europe" 1994 | }, 1995 | "SLC": { 1996 | "cca2": "US", 1997 | "city": "Salt Lake City", 1998 | "lat": 40.7883987427, 1999 | "lon": -111.977996826, 2000 | "name": "Salt Lake City, UT, United States", 2001 | "region": "North America" 2002 | }, 2003 | "SMF": { 2004 | "cca2": "US", 2005 | "city": "Sacramento", 2006 | "lat": 38.695400238, 2007 | "lon": -121.591003418, 2008 | "name": "Sacramento, CA, United States", 2009 | "region": "North America" 2010 | }, 2011 | "SOD": { 2012 | "cca2": "BR", 2013 | "city": "Sorocaba", 2014 | "lat": -23.54389, 2015 | "lon": -46.63445, 2016 | "name": "Sorocaba, Brazil", 2017 | "region": "South America" 2018 | }, 2019 | "SOF": { 2020 | "cca2": "BG", 2021 | "city": "Sofia", 2022 | "lat": 42.6966934204, 2023 | "lon": 23.4114360809, 2024 | "name": "Sofia, Bulgaria", 2025 | "region": "Europe" 2026 | }, 2027 | "SSA": { 2028 | "cca2": "BR", 2029 | "city": "Salvador", 2030 | "lat": -12.9086112976, 2031 | "lon": -38.3224983215, 2032 | "name": "Salvador, Brazil", 2033 | "region": "South America" 2034 | }, 2035 | "STL": { 2036 | "cca2": "US", 2037 | "city": "St. Louis", 2038 | "lat": 38.7486991882, 2039 | "lon": -90.3700027466, 2040 | "name": "St. Louis, MO, United States", 2041 | "region": "North America" 2042 | }, 2043 | "STR": { 2044 | "cca2": "DE", 2045 | "city": "Stuttgart", 2046 | "lat": 48.783333, 2047 | "lon": 9.183333, 2048 | "name": "Stuttgart, Germany", 2049 | "region": "Europe" 2050 | }, 2051 | "SVX": { 2052 | "cca2": "RU", 2053 | "city": "Yekaterinburg", 2054 | "lat": 56.8431, 2055 | "lon": 60.6454, 2056 | "name": "Yekaterinburg, Russia", 2057 | "region": "Asia Pacific" 2058 | }, 2059 | "SYD": { 2060 | "cca2": "AU", 2061 | "city": "Sydney", 2062 | "lat": -33.9460983276, 2063 | "lon": 151.177001953, 2064 | "name": "Sydney, NSW, Australia", 2065 | "region": "Oceania" 2066 | }, 2067 | "SZX": { 2068 | "name": "Shenzhen, China" 2069 | }, 2070 | "TAO": { 2071 | "name": "Qingdao, China" 2072 | }, 2073 | "TAS": { 2074 | "cca2": "UZ", 2075 | "city": "Tashkent", 2076 | "lat": 41.257900238, 2077 | "lon": 69.2811965942, 2078 | "name": "Tashkent, Uzbekistan", 2079 | "region": "Asia Pacific" 2080 | }, 2081 | "TBS": { 2082 | "cca2": "GE", 2083 | "city": "Tbilisi", 2084 | "lat": 41.6692008972, 2085 | "lon": 44.95470047, 2086 | "name": "Tbilisi, Georgia", 2087 | "region": "Europe" 2088 | }, 2089 | "TGU": { 2090 | "cca2": "HN", 2091 | "city": "Tegucigalpa", 2092 | "lat": 14.0608, 2093 | "lon": -87.2172, 2094 | "name": "Tegucigalpa, Honduras", 2095 | "region": "South America" 2096 | }, 2097 | "TIA": { 2098 | "cca2": "AL", 2099 | "city": "Tirana", 2100 | "lat": 41.4146995544, 2101 | "lon": 19.7206001282, 2102 | "name": "Tirana, Albania", 2103 | "region": "Europe" 2104 | }, 2105 | "TLH": { 2106 | "cca2": "US", 2107 | "city": "Tallahassee", 2108 | "lat": 30.3964996338, 2109 | "lon": -84.3503036499, 2110 | "name": "Tallahassee, FL, United States", 2111 | "region": "North America" 2112 | }, 2113 | "TLL": { 2114 | "cca2": "EE", 2115 | "city": "Tallinn", 2116 | "lat": 59.4132995605, 2117 | "lon": 24.8327999115, 2118 | "name": "Tallinn, Estonia", 2119 | "region": "Europe" 2120 | }, 2121 | "TLV": { 2122 | "cca2": "IL", 2123 | "city": "Tel Aviv", 2124 | "lat": 32.0113983154, 2125 | "lon": 34.8866996765, 2126 | "name": "Tel Aviv, Israel", 2127 | "region": "Middle East" 2128 | }, 2129 | "TNA": { 2130 | "name": "Jinan, China" 2131 | }, 2132 | "TNR": { 2133 | "cca2": "MG", 2134 | "city": "Antananarivo", 2135 | "lat": -18.91368, 2136 | "lon": 47.53613, 2137 | "name": "Antananarivo, Madagascar", 2138 | "region": "Africa" 2139 | }, 2140 | "TPA": { 2141 | "cca2": "US", 2142 | "city": "Tampa", 2143 | "lat": 27.9755001068, 2144 | "lon": -82.533203125, 2145 | "name": "Tampa, United States", 2146 | "region": "North America" 2147 | }, 2148 | "TPE": { 2149 | "cca2": "TW", 2150 | "city": "Taipei", 2151 | "lat": 25.0776996613, 2152 | "lon": 121.233001709, 2153 | "name": "Taipei, Taiwan", 2154 | "region": "Asia Pacific" 2155 | }, 2156 | "TSN": { 2157 | "name": "Tianjin, China" 2158 | }, 2159 | "TUN": { 2160 | "cca2": "TN", 2161 | "city": "Tunis", 2162 | "lat": 36.8510017395, 2163 | "lon": 10.2271995544, 2164 | "name": "Tunis, Tunisia", 2165 | "region": "Africa" 2166 | }, 2167 | "TXL": { 2168 | "cca2": "DE", 2169 | "city": "Berlin", 2170 | "lat": 52.5597000122, 2171 | "lon": 13.2876996994, 2172 | "name": "Berlin, Germany", 2173 | "region": "Europe" 2174 | }, 2175 | "UDI": { 2176 | "cca2": "BR", 2177 | "city": "Uberlandia", 2178 | "lat": -18.8836116791, 2179 | "lon": -48.225276947, 2180 | "name": "Uberlândia, Brazil", 2181 | "region": "South America" 2182 | }, 2183 | "UIO": { 2184 | "cca2": "EC", 2185 | "city": "Quito", 2186 | "lat": -0.1291666667, 2187 | "lon": -78.3575, 2188 | "name": "Quito, Ecuador", 2189 | "region": "South America" 2190 | }, 2191 | "ULN": { 2192 | "cca2": "MN", 2193 | "city": "Ulaanbaatar", 2194 | "lat": 47.8431015015, 2195 | "lon": 106.766998291, 2196 | "name": "Ulaanbaatar, Mongolia", 2197 | "region": "Asia Pacific" 2198 | }, 2199 | "URT": { 2200 | "cca2": "TH", 2201 | "city": "Surat Thani", 2202 | "lat": 9.1325998306, 2203 | "lon": 99.135597229, 2204 | "name": "Surat Thani, Thailand", 2205 | "region": "Asia Pacific" 2206 | }, 2207 | "VCP": { 2208 | "cca2": "BR", 2209 | "city": "Campinas", 2210 | "lat": -22.90662, 2211 | "lon": -47.08576, 2212 | "name": "Campinas, Brazil", 2213 | "region": "South America" 2214 | }, 2215 | "VIE": { 2216 | "cca2": "AT", 2217 | "city": "Vienna", 2218 | "lat": 48.1102981567, 2219 | "lon": 16.5697002411, 2220 | "name": "Vienna, Austria", 2221 | "region": "Europe" 2222 | }, 2223 | "VIX": { 2224 | "cca2": "BR", 2225 | "city": "Vitoria", 2226 | "lat": -20.64871, 2227 | "lon": -41.90857, 2228 | "name": "Vitoria, Brazil", 2229 | "region": "South America" 2230 | }, 2231 | "VNO": { 2232 | "cca2": "LT", 2233 | "city": "Vilnius", 2234 | "lat": 54.6341018677, 2235 | "lon": 25.2858009338, 2236 | "name": "Vilnius, Lithuania", 2237 | "region": "Europe" 2238 | }, 2239 | "VTE": { 2240 | "cca2": "LA", 2241 | "city": "Vientiane", 2242 | "lat": 17.9757, 2243 | "lon": 102.5683, 2244 | "name": "Vientiane, Laos", 2245 | "region": "Asia Pacific" 2246 | }, 2247 | "WAW": { 2248 | "cca2": "PL", 2249 | "city": "Warsaw", 2250 | "lat": 52.1656990051, 2251 | "lon": 20.9671001434, 2252 | "name": "Warsaw, Poland", 2253 | "region": "Europe" 2254 | }, 2255 | "WHU": { 2256 | "name": "Wuhu, China" 2257 | }, 2258 | "WUX": { 2259 | "name": "Wuxi, China" 2260 | }, 2261 | "XAP": { 2262 | "cca2": "BR", 2263 | "city": "Chapeco", 2264 | "lat": -27.1341991425, 2265 | "lon": -52.6566009521, 2266 | "name": "Chapeco, Brazil", 2267 | "region": "South America" 2268 | }, 2269 | "XMN": { 2270 | "name": "Xiamen, China" 2271 | }, 2272 | "XNH": { 2273 | "cca2": "IQ", 2274 | "city": "Nasiriyah", 2275 | "lat": 30.9358005524, 2276 | "lon": 46.0900993347, 2277 | "name": "Nasiriyah, Iraq", 2278 | "region": "Middle East" 2279 | }, 2280 | "YOW": { 2281 | "cca2": "CA", 2282 | "city": "Ottawa", 2283 | "lat": 45.3224983215, 2284 | "lon": -75.6691970825, 2285 | "name": "Ottawa, Canada", 2286 | "region": "North America" 2287 | }, 2288 | "YUL": { 2289 | "cca2": "CA", 2290 | "city": "Montréal", 2291 | "lat": 45.4706001282, 2292 | "lon": -73.7407989502, 2293 | "name": "Montréal, QC, Canada", 2294 | "region": "North America" 2295 | }, 2296 | "YVR": { 2297 | "cca2": "CA", 2298 | "city": "Vancouver", 2299 | "lat": 49.193901062, 2300 | "lon": -123.183998108, 2301 | "name": "Vancouver, BC, Canada", 2302 | "region": "North America" 2303 | }, 2304 | "YWG": { 2305 | "cca2": "CA", 2306 | "city": "Winnipeg", 2307 | "lat": 49.9099998474, 2308 | "lon": -97.2398986816, 2309 | "name": "Winnipeg, MB, Canada", 2310 | "region": "North America" 2311 | }, 2312 | "YXE": { 2313 | "cca2": "CA", 2314 | "city": "Saskatoon", 2315 | "lat": 52.1707992554, 2316 | "lon": -106.699996948, 2317 | "name": "Saskatoon, SK, Canada", 2318 | "region": "North America" 2319 | }, 2320 | "YYC": { 2321 | "cca2": "CA", 2322 | "city": "Calgary", 2323 | "lat": 51.113899231, 2324 | "lon": -114.019996643, 2325 | "name": "Calgary, AB, Canada", 2326 | "region": "North America" 2327 | }, 2328 | "YYZ": { 2329 | "cca2": "CA", 2330 | "city": "Toronto", 2331 | "lat": 43.6772003174, 2332 | "lon": -79.6305999756, 2333 | "name": "Toronto, ON, Canada", 2334 | "region": "North America" 2335 | }, 2336 | "ZAG": { 2337 | "cca2": "HR", 2338 | "city": "Zagreb", 2339 | "lat": 45.7429008484, 2340 | "lon": 16.0687999725, 2341 | "name": "Zagreb, Croatia", 2342 | "region": "Europe" 2343 | }, 2344 | "ZDM": { 2345 | "cca2": "PS", 2346 | "city": "Ramallah", 2347 | "lat": 32.2719, 2348 | "lon": 35.0194, 2349 | "name": "Ramallah", 2350 | "region": "Middle East" 2351 | }, 2352 | "ZGN": { 2353 | "name": "Zhongshan, China" 2354 | }, 2355 | "ZRH": { 2356 | "cca2": "CH", 2357 | "city": "Zurich", 2358 | "lat": 47.4646987915, 2359 | "lon": 8.5491695404, 2360 | "name": "Zürich, Switzerland", 2361 | "region": "Europe" 2362 | } 2363 | } -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WizisCool/Cloudflare-Center-Detector/57ec71ca98e5d25faff00686b254655003e463bc/favicon.ico -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Cloudflare Center Detector 6 | 7 | 8 | 9 | 10 | 19 | 20 | 21 |
22 | 23 |
24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /script.js: -------------------------------------------------------------------------------- 1 | Vue.component('data-center', { 2 | data: function () { 3 | return { 4 | loading: true, 5 | coloInfo: null, 6 | errorMessage: '', 7 | darkMode: true, 8 | ipAddress: null, 9 | warpStatus: null, 10 | tlsProtocol: null, 11 | }; 12 | }, 13 | created: function () { 14 | this.fetchDataCenterInfo(); 15 | this.applyDarkMode(); 16 | }, 17 | watch: { 18 | darkMode: function () { 19 | this.applyDarkMode(); 20 | } 21 | }, 22 | methods: { 23 | async fetchDataCenterInfo() { 24 | try { 25 | const colosDataResponse = await fetch('colos.json'); 26 | const colosData = await colosDataResponse.json(); 27 | const traceResponse = await fetch('https://www.cloudflare.com/cdn-cgi/trace'); 28 | const traceText = await traceResponse.text(); 29 | 30 | const traceLines = traceText.split('\n'); 31 | traceLines.forEach(line => { 32 | const [key, value] = line.split('='); 33 | switch (key) { 34 | case 'colo': 35 | if (colosData[value]) { 36 | this.coloInfo = colosData[value]; 37 | } else { 38 | this.errorMessage = 'No matching Cloudflare data centre information found'; 39 | } 40 | break; 41 | case 'ip': 42 | this.ipAddress = value; 43 | break; 44 | case 'warp': 45 | this.warpStatus = value; 46 | break; 47 | case 'tls': 48 | this.tlsProtocol = value; 49 | break; 50 | // ... 其他需要解析的字段 51 | } 52 | }); 53 | 54 | } catch (error) { 55 | this.errorMessage = 'Detection failed, please check network connection'; 56 | } 57 | 58 | this.loading = false; 59 | }, 60 | toggleDarkMode() { 61 | this.darkMode = !this.darkMode; 62 | this.applyDarkMode(); 63 | }, 64 | 65 | applyDarkMode() { 66 | document.body.style.backgroundColor = this.darkMode ? '#212529' : '#fff'; 67 | document.body.style.color = this.darkMode ? 'white' : 'black'; 68 | }, 69 | flagUrl(countryCode) { 70 | return `https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.5.0/flags/4x3/${countryCode.toLowerCase()}.svg`; 71 | } 72 | }, 73 | computed: { 74 | cardStyle: function () { 75 | return { 76 | backgroundColor: this.darkMode ? '#343a40' : '#fff', 77 | color: this.darkMode ? 'white' : 'black' 78 | }; 79 | } 80 | }, 81 | template: ` 82 |
83 |
84 |
85 | Cloudflare Logo 86 | Cloudflare Center Detector 87 |
88 | 89 |
90 | 91 |
92 |
93 |
94 | Loading... 95 |
96 |
97 |
Data Centre Info:
98 |

Flag {{ coloInfo.region }} - {{ coloInfo.city }} ({{ coloInfo.cca2 }})

99 |

IP Address: {{ ipAddress }}

100 |

WARP Status: {{ warpStatus }}

101 |

TLS Protocol: {{ tlsProtocol }}

102 |
103 |

{{ errorMessage }}

104 |
105 |
106 | 107 | 108 |
109 |
110 |
Data Centre Location
111 | 118 |
119 |
120 | 121 | 122 | 128 | 129 |
130 | ` 131 | }); 132 | 133 | new Vue({ el: '#app' }); 134 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: Arial, sans-serif; 3 | text-align: center; 4 | padding: 20px; 5 | } 6 | 7 | #content { 8 | margin-top: 50px; 9 | } 10 | 11 | .loader { 12 | border: 5px solid #f3f3f3; 13 | border-top: 5px solid #3498db; 14 | border-radius: 50%; 15 | width: 50px; 16 | height: 50px; 17 | animation: spin 2s linear infinite; 18 | margin: auto; 19 | } 20 | 21 | @keyframes spin { 22 | 0% { transform: rotate(0deg); } 23 | 100% { transform: rotate(360deg); } 24 | } 25 | --------------------------------------------------------------------------------