├── CDN优选域名V23.8.18(电脑win64).exe ├── CF优选官方IP(可选部分地区电脑版).7z ├── CF优选官方IP(无交互三地区电脑版).zip ├── CF优选官方IP(电脑版).zip ├── ISH_1.2.2 ├── iSH_1.2.2.ipa └── iSH_1.2.2_免更新.ipa ├── README.md ├── Trojan_workers_pages ├── _worker.js └── _worker混淆.js ├── Vless_workers_pages ├── _worker.js ├── _worker混淆.js ├── nat64套壳版明文.js ├── nat64套壳版混淆.js └── 注意注意:以上4个文件使用说明.txt ├── cf ├── 386 ├── amd64 ├── arm ├── arm64 ├── cf.sh ├── ips-v4.txt ├── ips-v6.txt ├── locations.json ├── mips64 ├── mips64le └── mipsle └── locations.json /CDN优选域名V23.8.18(电脑win64).exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/CDN优选域名V23.8.18(电脑win64).exe -------------------------------------------------------------------------------- /CF优选官方IP(可选部分地区电脑版).7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/CF优选官方IP(可选部分地区电脑版).7z -------------------------------------------------------------------------------- /CF优选官方IP(无交互三地区电脑版).zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/CF优选官方IP(无交互三地区电脑版).zip -------------------------------------------------------------------------------- /CF优选官方IP(电脑版).zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/CF优选官方IP(电脑版).zip -------------------------------------------------------------------------------- /ISH_1.2.2/iSH_1.2.2.ipa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/ISH_1.2.2/iSH_1.2.2.ipa -------------------------------------------------------------------------------- /ISH_1.2.2/iSH_1.2.2_免更新.ipa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/ISH_1.2.2/iSH_1.2.2_免更新.ipa -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Cloudflare-workers/pages代理脚本【目前版本:25.5.4】 2 | ------------------------------------------------ 3 | ------------------------------------------------ 4 | ### 1、本项目仅支持本地化部署 5 | ### 2、本项目配置都为本地化编辑,不使用订阅器、订阅转换等第三方外链引用 6 | ### 3、无需担心节点订阅信息被订阅器作者或者订阅转换作者后台查看 7 | -------------------------------- 8 | ## 脚本特色: 9 | #### 1、懒人小白专用!默认节点都为CF官方IP,无需频繁更新订阅获取客户端优选IP 10 | #### 2、为减少新手小白额外的成本,本项目不推荐使用自定义域名,如果你一定要用自定义域名,也可以 11 | #### 3、当在CF点击部署按钮后,可直接手搓节点或者使用分享链接,最多设置一个uuid/密码,其他不用改 12 | #### 4、Workers方式:支持vless+ws+tls、trojan+ws+tls、vless+ws、trojan+ws代理节点 13 | #### 5、Pages方式:支持vless+ws+tls、trojan+ws+tls代理节点 14 | #### 6、支持单节点链接、聚合通用节点链接、聚合通用节点订阅、sing-box节点订阅、clash节点订阅 15 | #### 7、VLESS仅nat64套壳版将自动填充proxyip,无需且不支持proxyip设置,由[badafans](https://github.com/badafans)提供代码 16 | ------------------------------------------------------------- 17 | 18 | ### 交流平台:[甬哥博客地址](https://ygkkk.blogspot.com)、[甬哥YouTube频道](https://www.youtube.com/@ygkkk)、[甬哥TG电报群组](https://t.me/+jZHc6-A-1QQ5ZGVl)、[甬哥TG电报频道](https://t.me/+DkC9ZZUgEFQzMTZl) 19 | -------------------------------- 20 | 21 | ### 推荐新手用户请先看以下四个入门视频教程: 22 | 23 | [2025.9.8更新:半混淆文件使用说明;解决你对优选IP的长期困惑;本轮1101报错的未来警示](https://youtu.be/rUpCuXTQqmQ) 24 | 25 | [永久免费的cf vless workers原生域名节点 | 无需自定义域名 | 无需优选IP订阅 | 无需面版控制台 | 只需保存两个参数 | 自建无限不死节点!](https://youtu.be/PpPKzOYLZQg) 26 | 27 | [永久免费的cf vless pages原生域名节点 | NAT64生成ProxyIP的重要说明 | CF节点为何有些网站上不了?](https://youtu.be/yR-JpVV6SHs) 28 | 29 | [CF vless/trojan免费节点混淆时代来临:workers/pages代码混淆后详细设置的更新说明;1101报错总结](https://youtu.be/QSFaP5EVI04) 30 | 31 | --------------------------------------------- 32 | 33 | ## 一:CF Vless节点可设置的变量内容 (仅nat64套壳版无需且不支持设置proxyip) 34 | 35 | | 变量作用 | 变量名称| 变量值要求| 变量默认值| 变量要求| 36 | | :--- | :--- | :--- | :--- | :--- | 37 | | 1、必要的uuid | uuid (小写字母) |符合uuid规定格式 |万人骑uuid:86c50e3a-5b87-49dd-bd20-03c7f2735e40|建议| 38 | | 2、全局节点能上CF类网站 | proxyip (小写字母) |443端口:ipv4地址、[ipv6地址]、域名。非443端口:IPV4地址:端口、[IPV6地址]:端口、域名:端口|proxyip:留空|可选| 39 | | 3、订阅节点:优选IP | ip1到ip13,共13个 |CF官方IP、CF反代IP、CF优选域名| ygkkk的CF官方域名|可选| 40 | | 4、订阅节点:优选IP对应端口 | pt1到pt13,共13个 |CF13个标准端口、反代IP对应任意端口| CF13个标准端口|可选| 41 | 42 | 43 | ## 二:CF Trojan节点可设置的变量内容 44 | 45 | | 变量作用 | 变量名称| 变量值要求| 变量默认值| 变量要求| 46 | | :--- | :--- | :--- | :--- | :--- | 47 | | 1、必要的密码 | pswd (小写字母) |建议字母数字 |万人骑密码:trojan|建议| 48 | | 2、全局节点能上CF类网站 | proxyip (小写字母) |443端口:ipv4地址、[ipv6地址]、域名。非443端口:IPV4地址:端口、[IPV6地址]:端口、域名:端口|proxyip:留空|可选| 49 | | 3、订阅节点:优选IP | ip1到ip13,共13个 |CF官方IP、CF反代IP、CF优选域名| ygkkk的CF官方域名|可选| 50 | | 4、订阅节点:优选IP对应端口 | pt1到pt13,共13个 |CF13个标准端口、反代IP对应任意端口| CF13个标准端口|可选| 51 | 52 | #### 订阅节点中IP与端口的变量(3与4)特别注意 【新手小白可无视变量(3与4),使用默认即可】 53 | 54 | 1、切记:当你非要用订阅类的客户端,且要改优选IP时,才需要设置ip1到ip13,pt1到pt13的变量 55 | 56 | 2、ip1到ip7,pt1到pt7,在订阅分享链接中,仅支持80系端口关TLS节点 57 | 58 | 3、ip8到ip13,pt8到pt13,在订阅分享链接中,仅支持443系端口开TLS节点 59 | 60 | 4、设置官方IP,无需设置端口(默认已设置13个CF标准端口);设置反代IP需要分开关TLS,端口变量也必须设置 61 | 62 | 5、订阅节点变量设置可参考此[视频教程](https://youtu.be/8s-ELRuFaeE?si=MjhcKbt20d2Q2eqp&t=447) 63 | 64 | --------------------------------- 65 | ## 三:自定义proxyip 66 | 67 | 虽说脚本默认自带其他大佬的proxyip,但同时也支持自定义proxyip 68 | 69 | 支持IPV4、IPV6、域名三种方式(端口为443时,可不写:端口) 70 | 71 | 1、全局节点变量形式(上文一与二已说明): 72 | 73 | | proxyip端口 | IPv4形式| IPv6形式| 域名形式| 74 | | :--- | :--- | :--- | :--- | 75 | | 443端口 | IPV4地址 |[IPV6地址] |域名| 76 | | 非443端口 | IPV4地址:端口 |[IPV6地址]:端口 |域名:端口| 77 | 78 | 2、单节点path路径形式: 79 | 80 | | proxyip端口 | IPv4形式| IPv6形式| 域名形式| 81 | | :--- | :--- | :--- | :--- | 82 | | 443端口 | /pyip=IPV4地址 |/pyip=[IPV6地址] |/pyip=域名| 83 | | 非443端口 | /pyip=IPV4地址:端口 |/pyip=[IPV6地址]:端口 |/pyip=域名:端口| 84 | 85 | 注意: 86 | 87 | 1、单节点path路径变更proxyip:仅影响当前客户端正在设置的单节点,并不影响其他单节点或者订阅节点的proxyip 88 | 89 | 2、全局节点变更proxyip:影响所有未设置path路径proxyip的节点 90 | 91 | 3、当节点的path路径出现```/pyip=```关键字时,此节点的proxyip只认准path路径设置的proxyip,全局proxyip不起作用 92 | 93 | --------------------------------- 94 | ## 四:无需socks5!小白利用reality协议一键自制proxyip、80系/443系的任意端口反代IP 95 | 96 | ### 1、Serv00专用: 97 | 98 | [项目地址](https://github.com/yonggekkk/sing-box-yg?tab=readme-ov-file#%E4%BA%8Cserv00%E4%B8%80%E9%94%AE%E4%B8%89%E5%8D%8F%E8%AE%AE%E5%85%B1%E5%AD%98%E8%84%9A%E6%9C%ACserv00%E4%B8%93%E7%94%A8) 99 | 100 | 修改自Serv00老王sing-box安装脚本,支持一键三协议:vless-reality、vmess-ws(argo)、hysteria2。 101 | 102 | 主要增加reality协议默认支持 CF vless/trojan 节点的proxyip以及非标端口的优选反代IP功能 103 | 104 | Serv00专用一键脚本 (默认自动安装进程保活) 105 | ``` 106 | bash <(curl -Ls https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00.sh) 107 | ``` 108 | 109 | ### 2、VPS专用: 110 | 111 | 推荐使用 离中国近、便宜、流量多的纯IPV6的vps进行搭建。近可能避免使用IPV4,因为IPV4大概率被大佬们偷扫反代IP,成为他们的公益或收费反代IP库。如果非要用IPV4,请时常关注下自己VPS的流量,使用proxyip与客户端优选IP都会消耗VPS流量 112 | 113 | 搭建proxyip与反代ip的脚本推荐:[x-ui-yg脚本](https://github.com/yonggekkk/x-ui-yg)、[sing-box-yg脚本](https://github.com/yonggekkk/sing-box-yg) 114 | 115 | 相关操作请看[视频教程高阶1](https://youtu.be/QOnMVULADko)、[视频教程高阶2](https://youtu.be/CVZStM0t8BA) 116 | 117 | 118 | ### 3、可现实以下四种情况(推荐在TLS节点环境下): 119 | 120 | 可选择现实1:仅用于客户端优选IP,即CF节点访问非CF网站的落地IP地区与VPS地区一致,访问CF网站落地IP地区根据proxyip决定 121 | 122 | 可选择现实2:仅用于proxyip,即CF节点访问CF网站的落地IP地区与VPS地区一致,访问非CF网站落地IP地区根据客户端优选IP决定 123 | 124 | 可选择现实3:同时用于客户端优选IP与proxyip,即CF节点访问CF网站的落地IP地区、访问非CF网站落地IP地区,两者都与VPS地区一致 125 | 126 | 可选择现实4:通过在VPS安装WARP全局双栈V4+V6功能,即访问非CF网站的客户端优选IP的落地IP(104.28……/2a09:……)现实固定,或访问CF网站的proxyip的落地IP(104.28……/2a09:……)现实WARP解锁功能效果 127 | 128 | ------------------------------------------- 129 | 130 | ## 五:查看配置信息与分享链接 131 | 132 | CF Vless:在网页地址栏输入 https:// workers域名 或者 pages域名 或者 自定义域名 /自定义uuid 133 | 134 | CF Trojan:在网页地址栏输入 https:// workers域名 或者 pages域名 或者 自定义域名 /自定义密码 135 | 136 | 注意: 137 | 138 | 1、workers域名 或者 pages域名 或者 自定义域名如果都被墙,必须开代理才能打开 139 | 140 | 2、使用自定域时,原先workers域名 或者 pages域名下的配置信息与分享链接依旧可用 141 | 142 | --------------------------------- 143 | 144 | ## 六:优选IP应用 145 | 146 | CF官方优选80系端口:80、8080、8880、2052、2082、2086、2095 147 | 148 | CF官方优选443系端口:443、2053、2083、2087、2096、8443 149 | 150 | 如果你没有天天最高速度或者选择国家的需求,使用默认的CF官方IP或者域名即可,不必更换 151 | 152 | 推荐好记的懒人专属CF官方IP如下,支持13个标准端口切换,称之为"冲在最前的不死IP" 153 | 154 | 104.16.0.0 155 | 156 | 104.17.0.0 157 | 158 | 104.18.0.0 159 | 160 | 104.19.0.0 161 | 162 | 104.20.0.0 163 | 164 | 104.21.0.0 165 | 166 | 104.22.0.0 167 | 168 | 104.24.0.0 169 | 170 | 104.25.0.0 171 | 172 | 104.26.0.0 173 | 174 | 104.27.0.0 175 | 176 | 172.66.0.0 177 | 178 | 172.67.0.0 179 | 180 | 162.159.0.0 181 | 182 | 2606:4700::0 需IPV6环境 183 | 184 | CDN优选域名:yg1.ygkkk.dpdns.org (yg1中的1,可换为1-11中任意数字,甬哥维护) 185 | 186 | 本地电脑端优选项目推荐(可在上面代码区直接下载): 187 | 188 | 1、CDN优选域名V23.8.18 (电脑win64) 189 | 190 | 2、CF优选反代IP (电脑版,带测速) 191 | 192 | 3、CF优选官方IP (电脑版、可选择部分国家) 193 | 194 | 4、CF优选官方IP (美、亚、欧三地区无交互电脑版!强烈推荐!点击[视频教程](https://youtu.be/6kKIzObEZ2c)) 195 | 196 | 5、CF优选官方IP (电脑版,带测速) 197 | 198 | 注意:多个CF节点在客户端使用负载均衡或者自动选择时,建议所有应用的节点都为同一个国家地区,以避免不同国家之间的IP乱跳现象 199 | 200 | --------------------------------- 201 | 202 | ## 七:客户端推荐 203 | 204 | #### 启用分片(Fragment)功能的好处:无视域名被墙TLS阻断,从而让workers等被墙的域名支持TLS节点。 205 | 206 | #### 待验证:目前workers的TLS分片功能可能已失效 207 | 208 | #### 提示:未被墙TLS阻断的自定义域名或pages域名无需开启分片就可使用TLS节点 209 | 210 | 目前支持该功能的平台客户端如下(点击名称即跳转到官方下载地址) 211 | 212 | 1、安卓Android:[v2rayNG](https://github.com/2dust/v2rayNG/tags)、[Nekobox](https://github.com/starifly/NekoBoxForAndroid/releases)、[Karing](https://github.com/KaringX/karing/tags)、v2box 213 | 214 | 2、电脑Windows:[v2rayN](https://github.com/2dust/v2rayN/tags)、[Hiddify](https://github.com/hiddify/hiddify-next/tags)、[Karing](https://github.com/KaringX/karing/tags) 215 | 216 | 3、苹果Ios:Karing、Hiddify Proxy & VPN、Shadowrocket(小火箭)、Streisand、v2box 217 | 218 | 4、软路由:passwall、ssr-plus、homeproxy 219 | 220 | 注意:其他平台客户端未开启分片功能情况下,workers域的6个443系TLS节点是不可用的 221 | 222 | 注意:Shadowrocket(小火箭)、v2box、v2rayn、v2rayng客户端对trojan+ws有强制开启TLS问题,造成trojan+ws不通。且clash订阅没有trojan+ws节点。特此说明 223 | 224 | 关于客户端使用问题,请看[CF vless/trojan永久免费节点教程(六):节点不能用,问题出在哪?多平台免费客户端设置指南及避坑说明](https://youtu.be/8E0l0nQWLxs) 225 | 226 | --------------------------------- 227 | 228 | ### CF视频教程集合: 229 | 230 | [CF workers永久免费vless节点搭建教程(一):全网首发演示跳IP现象,解密两大节点使用技巧,优选IP、优选域名的优缺点说明](https://youtu.be/9V9CQxmfwoA) 231 | 232 | [CF workers永久免费vless节点搭建教程(二):优选反代IP一键脚本发布,pages部署教程,多平台客户端设置说明,独家探讨CF免费代理敏感安全问题](https://youtu.be/McdRoLZeTqg) 233 | 234 | [CF workers永久免费Trojan节点搭建教程(三):无需自定义域名,workers与pages两方案部署优选IP节点;CF Trojan与CF Vless对比总结;如何看待Trojan被识别](https://youtu.be/lmhhL8M1k0I) 235 | 236 | 强烈推荐:[CF vless/trojan永久免费节点教程(四):解读优选官方IP、优选反代IP、优选域名三者的关系与特点;ProxyIP存在的意义](https://youtu.be/NaLd-orwFUE) 237 | 238 | 强烈推荐:[CF vless/trojan永久免费节点教程(五):不用自定义域名?不用频繁优选IP?不用订阅器?总结CF节点与域名的结构关系图](https://youtu.be/8s-ELRuFaeE) 239 | 240 | 强烈推荐:[CF vless/trojan永久免费节点教程(六):节点不能用,问题出在哪?多平台免费客户端设置指南及避坑说明](https://youtu.be/8E0l0nQWLxs) 241 | 242 | 高阶推荐:[CF vless/trojan永久免费节点最终教程(七):全网独家演示真正的"固定IP",解决twitch、chatgpt客户端报错问题;一键自制反代IP与ProxyIP;揭秘你被他人偷扫IP的风险](https://youtu.be/QOnMVULADko) 243 | 244 | 高阶推荐:[CF vless/trojan永久免费节点最终教程(八):自建全端口通用的ProxyIP,同时支持客户端地址优选反代IP,自建反代IP的最终教程](https://youtu.be/CVZStM0t8BA) 245 | 246 | [直播精选回顾:CF workers vless免费节点四大特点,节点被断流阻断问题](https://youtu.be/9OHGpWlfdJ0) 247 | 248 | [ClouDNS永久免费域名最终教程:CF pages vless自定义域名直接部署](https://youtu.be/PN0BLANXh4I) 249 | 250 | 小白优选IP应用推荐:[CF优选IP解放小白最终方案:一键自动生成美国、香港、欧洲三区优选官方IP,电脑WIN、安卓android、苹果ios多平台一键通用](https://youtu.be/6kKIzObEZ2c) 251 | 252 | [CF vless/trojan免费节点混淆时代来临:workers/pages代码混淆后详细设置的更新说明;1101报错总结](https://youtu.be/QSFaP5EVI04) 253 | 254 | 255 | --------------------------------- 256 | --------------------------------- 257 | --------------------------------- 258 | --------------------------------- 259 | ## 优选域名、优选官方IP一键脚本(在本地网络环境下利用termux或者ish运行): 260 | 261 | 1、安卓请使用termux官方项目下载客户端(谷歌商店下载的不可用!):https://github.com/termux/termux-app/releases/tag/v0.118.1 262 | 263 | 首次安装后,请先安装依赖:```pkg upgrade```,然后运行以下你要使用的脚本 264 | 265 | 2、苹果手机用户,由于ISH最新版有BUG导致脚本运行卡住,请使用ISH_1.2.2版本,可以用巨魔先安装再降级,网上也有其它指定旧版IPA安装的教程 266 | 267 | 首次安装后,请先安装依赖:```apk add curl bash```,然后运行以下你要使用的脚本 268 | 269 | ------------------------------------------------------------- 270 | ### 脚本1:CF-优选官方IP (默认美、亚、欧三地区 强烈推荐!!!),安卓苹果手机平板专用: 271 | ``` 272 | curl -sSL https://raw.githubusercontent.com/yonggekkk/Cloudflare_vless_trojan/main/cf/cf.sh -o cf.sh && chmod +x cf.sh && bash cf.sh 273 | ``` 274 | ------------------------------------------------------------- 275 | 276 | ### 脚本2:CF-CDN优选公共大厂域名脚本,苹果安卓手机平板专用: 277 | ``` 278 | curl -sSL https://gitlab.com/rwkgyg/CFwarp/raw/main/point/CFcdnym.sh -o CFcdnym.sh && chmod +x CFcdnym.sh && bash CFcdnym.sh 279 | ``` 280 | ------------------------------------------------------------------------ 281 | ### 脚本3:CF-优选官方IP脚本(带测速),苹果安卓手机平板专用: 282 | ``` 283 | curl -sSL https://gitlab.com/rwkgyg/CFwarp/raw/main/point/cfip.sh -o cfip.sh && chmod +x cfip.sh && bash cfip.sh 284 | ``` 285 | ------------------------------------------------------------- 286 | 287 | ### 感谢支持!微信打赏甬哥侃侃侃ygkkk 288 | ![41440820a366deeb8109db5610313a1](https://github.com/user-attachments/assets/7dbaa3b1-cce4-415a-b46e-049531cf4d0d) 289 | 290 | ------------------------------------------------------------- 291 | 292 | ### 感谢你右上角的star🌟 293 | [![Stargazers over time](https://starchart.cc/yonggekkk/Cloudflare-workers-pages-vless.svg)](https://starchart.cc/yonggekkk/Cloudflare-workers-pages-vless) 294 | ------------------------------------------------------------------------ 295 | ### 代码来源:[ca110us](https://github.com/ca110us/epeius)、[emn178](https://github.com/emn178/js-sha256/blob/master/src/sha256.js)、[3Kmfi6HP](https://github.com/3Kmfi6HP/EDtunnel)、[badafans](https://github.com/badafans/Cloudflare-IP-SpeedTest)、[XIU2](https://github.com/XIU2/CloudflareSpeedTest) 296 | ### 声明:所有代码来源于Github社区,并通过ChatGPT进行整合 297 | -------------------------------------------------------------------------------- /Vless_workers_pages/nat64套壳版明文.js: -------------------------------------------------------------------------------- 1 | //nat64自动填充proxyip,无需且不支持proxyip设置 2 | import { connect } from "cloudflare:sockets"; 3 | const WS_READY_STATE_OPEN = 1; 4 | let userID = "86c50e3a-5b87-49dd-bd20-03c7f2735e40"; 5 | const cn_hostnames = ['']; 6 | let CDNIP = '\u0077\u0077\u0077\u002e\u0076\u0069\u0073\u0061\u002e\u0063\u006f\u006d\u002e\u0073\u0067' 7 | // http_ip 8 | let IP1 = '\u0077\u0077\u0077\u002e\u0076\u0069\u0073\u0061\u002e\u0063\u006f\u006d' 9 | let IP2 = '\u0063\u0069\u0073\u002e\u0076\u0069\u0073\u0061\u002e\u0063\u006f\u006d' 10 | let IP3 = '\u0061\u0066\u0072\u0069\u0063\u0061\u002e\u0076\u0069\u0073\u0061\u002e\u0063\u006f\u006d' 11 | let IP4 = '\u0077\u0077\u0077\u002e\u0076\u0069\u0073\u0061\u002e\u0063\u006f\u006d\u002e\u0073\u0067' 12 | let IP5 = '\u0077\u0077\u0077\u002e\u0076\u0069\u0073\u0061\u0065\u0075\u0072\u006f\u0070\u0065\u002e\u0061\u0074' 13 | let IP6 = '\u0077\u0077\u0077\u002e\u0076\u0069\u0073\u0061\u002e\u0063\u006f\u006d\u002e\u006d\u0074' 14 | let IP7 = '\u0071\u0061\u002e\u0076\u0069\u0073\u0061\u006d\u0069\u0064\u0064\u006c\u0065\u0065\u0061\u0073\u0074\u002e\u0063\u006f\u006d' 15 | 16 | // https_ip 17 | let IP8 = '\u0075\u0073\u0061\u002e\u0076\u0069\u0073\u0061\u002e\u0063\u006f\u006d' 18 | let IP9 = '\u006d\u0079\u0061\u006e\u006d\u0061\u0072\u002e\u0076\u0069\u0073\u0061\u002e\u0063\u006f\u006d' 19 | let IP10 = '\u0077\u0077\u0077\u002e\u0076\u0069\u0073\u0061\u002e\u0063\u006f\u006d\u002e\u0074\u0077' 20 | let IP11 = '\u0077\u0077\u0077\u002e\u0076\u0069\u0073\u0061\u0065\u0075\u0072\u006f\u0070\u0065\u002e\u0063\u0068' 21 | let IP12 = '\u0077\u0077\u0077\u002e\u0076\u0069\u0073\u0061\u002e\u0063\u006f\u006d\u002e\u0062\u0072' 22 | let IP13 = '\u0077\u0077\u0077\u002e\u0076\u0069\u0073\u0061\u0073\u006f\u0075\u0074\u0068\u0065\u0061\u0073\u0074\u0065\u0075\u0072\u006f\u0070\u0065\u002e\u0063\u006f\u006d' 23 | 24 | // http_port 25 | let PT1 = '80' 26 | let PT2 = '8080' 27 | let PT3 = '8880' 28 | let PT4 = '2052' 29 | let PT5 = '2082' 30 | let PT6 = '2086' 31 | let PT7 = '2095' 32 | 33 | // https_port 34 | let PT8 = '443' 35 | let PT9 = '8443' 36 | let PT10 = '2053' 37 | let PT11 = '2083' 38 | let PT12 = '2087' 39 | let PT13 = '2096' 40 | 41 | export default { 42 | /** 43 | * @param {any} request 44 | * @param {{uuid: string, proxyip: string, cdnip: string, ip1: string, ip2: string, ip3: string, ip4: string, ip5: string, ip6: string, ip7: string, ip8: string, ip9: string, ip10: string, ip11: string, ip12: string, ip13: string, pt1: string, pt2: string, pt3: string, pt4: string, pt5: string, pt6: string, pt7: string, pt8: string, pt9: string, pt10: string, pt11: string, pt12: string, pt13: string}} env 45 | * @param {any} ctx 46 | * @returns {Promise} 47 | */ 48 | async fetch(request, env, ctx) { 49 | try { 50 | userID = env.uuid || userID; 51 | CDNIP = env.cdnip || CDNIP; 52 | IP1 = env.ip1 || IP1; 53 | IP2 = env.ip2 || IP2; 54 | IP3 = env.ip3 || IP3; 55 | IP4 = env.ip4 || IP4; 56 | IP5 = env.ip5 || IP5; 57 | IP6 = env.ip6 || IP6; 58 | IP7 = env.ip7 || IP7; 59 | IP8 = env.ip8 || IP8; 60 | IP9 = env.ip9 || IP9; 61 | IP10 = env.ip10 || IP10; 62 | IP11 = env.ip11 || IP11; 63 | IP12 = env.ip12 || IP12; 64 | IP13 = env.ip13 || IP13; 65 | PT1 = env.pt1 || PT1; 66 | PT2 = env.pt2 || PT2; 67 | PT3 = env.pt3 || PT3; 68 | PT4 = env.pt4 || PT4; 69 | PT5 = env.pt5 || PT5; 70 | PT6 = env.pt6 || PT6; 71 | PT7 = env.pt7 || PT7; 72 | PT8 = env.pt8 || PT8; 73 | PT9 = env.pt9 || PT9; 74 | PT10 = env.pt10 || PT10; 75 | PT11 = env.pt11 || PT11; 76 | PT12 = env.pt12 || PT12; 77 | PT13 = env.pt13 || PT13; 78 | const upgradeHeader = request.headers.get("Upgrade"); 79 | const url = new URL(request.url); 80 | if (!upgradeHeader || upgradeHeader !== "websocket") { 81 | const url = new URL(request.url); 82 | switch (url.pathname) { 83 | case `/${userID}`: { 84 | const \u0076\u006c\u0065\u0073\u0073Config = get\u0076\u006c\u0065\u0073\u0073Config(userID, request.headers.get("Host")); 85 | return new Response(`${\u0076\u006c\u0065\u0073\u0073Config}`, { 86 | status: 200, 87 | headers: { 88 | "Content-Type": "text/html;charset=utf-8", 89 | }, 90 | }); 91 | } 92 | case `/${userID}/ty`: { 93 | const tyConfig = gettyConfig(userID, request.headers.get('Host')); 94 | return new Response(`${tyConfig}`, { 95 | status: 200, 96 | headers: { 97 | "Content-Type": "text/plain;charset=utf-8", 98 | } 99 | }); 100 | } 101 | case `/${userID}/cl`: { 102 | const clConfig = getclConfig(userID, request.headers.get('Host')); 103 | return new Response(`${clConfig}`, { 104 | status: 200, 105 | headers: { 106 | "Content-Type": "text/plain;charset=utf-8", 107 | } 108 | }); 109 | } 110 | case `/${userID}/sb`: { 111 | const sbConfig = getsbConfig(userID, request.headers.get('Host')); 112 | return new Response(`${sbConfig}`, { 113 | status: 200, 114 | headers: { 115 | "Content-Type": "application/json;charset=utf-8", 116 | } 117 | }); 118 | } 119 | case `/${userID}/pty`: { 120 | const ptyConfig = getptyConfig(userID, request.headers.get('Host')); 121 | return new Response(`${ptyConfig}`, { 122 | status: 200, 123 | headers: { 124 | "Content-Type": "text/plain;charset=utf-8", 125 | } 126 | }); 127 | } 128 | case `/${userID}/pcl`: { 129 | const pclConfig = getpclConfig(userID, request.headers.get('Host')); 130 | return new Response(`${pclConfig}`, { 131 | status: 200, 132 | headers: { 133 | "Content-Type": "text/plain;charset=utf-8", 134 | } 135 | }); 136 | } 137 | case `/${userID}/psb`: { 138 | const psbConfig = getpsbConfig(userID, request.headers.get('Host')); 139 | return new Response(`${psbConfig}`, { 140 | status: 200, 141 | headers: { 142 | "Content-Type": "application/json;charset=utf-8", 143 | } 144 | }); 145 | } 146 | default: 147 | // return new Response('Not found', { status: 404 }); 148 | // For any other path, reverse proxy to 'ramdom website' and return the original response, caching it in the process 149 | if (cn_hostnames.includes('')) { 150 | return new Response(JSON.stringify(request.cf, null, 4), { 151 | status: 200, 152 | headers: { 153 | "Content-Type": "application/json;charset=utf-8", 154 | }, 155 | }); 156 | } 157 | const randomHostname = cn_hostnames[Math.floor(Math.random() * cn_hostnames.length)]; 158 | const newHeaders = new Headers(request.headers); 159 | newHeaders.set("cf-connecting-ip", "1.2.3.4"); 160 | newHeaders.set("x-forwarded-for", "1.2.3.4"); 161 | newHeaders.set("x-real-ip", "1.2.3.4"); 162 | newHeaders.set("referer", "https://www.google.com/search?q=edtunnel"); 163 | // Use fetch to proxy the request to 15 different domains 164 | const proxyUrl = "https://" + randomHostname + url.pathname + url.search; 165 | let modifiedRequest = new Request(proxyUrl, { 166 | method: request.method, 167 | headers: newHeaders, 168 | body: request.body, 169 | redirect: "manual", 170 | }); 171 | const proxyResponse = await fetch(modifiedRequest, { redirect: "manual" }); 172 | // Check for 302 or 301 redirect status and return an error response 173 | if ([301, 302].includes(proxyResponse.status)) { 174 | return new Response(`Redirects to ${randomHostname} are not allowed.`, { 175 | status: 403, 176 | statusText: "Forbidden", 177 | }); 178 | } 179 | // Return the response from the proxy server 180 | return proxyResponse; 181 | } 182 | } 183 | return await handle\u0076\u006c\u0065\u0073\u0073WebSocket(request); 184 | } catch (err) { 185 | /** @type {Error} */ let e = err; 186 | return new Response(e.toString()); 187 | } 188 | }, 189 | }; 190 | 191 | async function handle\u0076\u006c\u0065\u0073\u0073WebSocket(request) { 192 | const wsPair = new WebSocketPair(); 193 | const [clientWS, serverWS] = Object.values(wsPair); 194 | 195 | serverWS.accept(); 196 | 197 | const earlyDataHeader = request.headers.get('sec-websocket-protocol') || ''; 198 | const wsReadable = createWebSocketReadableStream(serverWS, earlyDataHeader); 199 | let remoteSocket = null; 200 | 201 | let udpStreamWrite = null; 202 | let isDns = false; 203 | 204 | wsReadable.pipeTo(new WritableStream({ 205 | async write(chunk) { 206 | 207 | if (isDns && udpStreamWrite) { 208 | return udpStreamWrite(chunk); 209 | } 210 | 211 | if (remoteSocket) { 212 | const writer = remoteSocket.writable.getWriter(); 213 | await writer.write(chunk); 214 | writer.releaseLock(); 215 | return; 216 | } 217 | 218 | const result = parse\u0076\u006c\u0065\u0073\u0073Header(chunk, userID); 219 | if (result.hasError) { 220 | throw new Error(result.message); 221 | } 222 | 223 | const \u0076\u006c\u0065\u0073\u0073RespHeader = new Uint8Array([result.\u0076\u006c\u0065\u0073\u0073Version[0], 0]); 224 | const rawClientData = chunk.slice(result.rawDataIndex); 225 | 226 | if (result.isUDP) { 227 | if (result.portRemote === 53) { 228 | isDns = true; 229 | const { write } = await handleUDPOutBound(serverWS, \u0076\u006c\u0065\u0073\u0073RespHeader); 230 | udpStreamWrite = write; 231 | udpStreamWrite(rawClientData); 232 | return; 233 | } else { 234 | throw new Error('UDP代理仅支持DNS(端口53)'); 235 | } 236 | } 237 | 238 | async function connectAndWrite(address, port) { 239 | const tcpSocket = await connect({ 240 | hostname: address, 241 | port: port 242 | }); 243 | remoteSocket = tcpSocket; 244 | const writer = tcpSocket.writable.getWriter(); 245 | await writer.write(rawClientData); 246 | writer.releaseLock(); 247 | return tcpSocket; 248 | } 249 | 250 | function convertToNAT64IPv6(ipv4Address) { 251 | const parts = ipv4Address.split('.'); 252 | if (parts.length !== 4) { 253 | throw new Error('无效的IPv4地址'); 254 | } 255 | 256 | const hex = parts.map(part => { 257 | const num = parseInt(part, 10); 258 | if (num < 0 || num > 255) { 259 | throw new Error('无效的IPv4地址段'); 260 | } 261 | return num.toString(16).padStart(2, '0'); 262 | }); 263 | const prefixes = ['2602:fc59:b0:64::']; 264 | const chosenPrefix = prefixes[Math.floor(Math.random() * prefixes.length)]; 265 | return `[${chosenPrefix}${hex[0]}${hex[1]}:${hex[2]}${hex[3]}]`; 266 | } 267 | 268 | async function getIPv6ProxyAddress(domain) { 269 | try { 270 | const dnsQuery = await fetch(`https://1.1.1.1/dns-query?name=${domain}&type=A`, { 271 | headers: { 272 | 'Accept': 'application/dns-json' 273 | } 274 | }); 275 | 276 | const dnsResult = await dnsQuery.json(); 277 | if (dnsResult.Answer && dnsResult.Answer.length > 0) { 278 | const aRecord = dnsResult.Answer.find(record => record.type === 1); 279 | if (aRecord) { 280 | const ipv4Address = aRecord.data; 281 | return convertToNAT64IPv6(ipv4Address); 282 | } 283 | } 284 | throw new Error('无法解析域名的IPv4地址'); 285 | } catch (err) { 286 | throw new Error(`DNS解析失败: ${err.message}`); 287 | } 288 | } 289 | 290 | async function retry() { 291 | try { 292 | const proxyIP = await getIPv6ProxyAddress(result.addressRemote); 293 | console.log(`尝试通过NAT64 IPv6地址 ${proxyIP} 连接...`); 294 | const tcpSocket = await connect({ 295 | hostname: proxyIP, 296 | port: result.portRemote 297 | }); 298 | remoteSocket = tcpSocket; 299 | const writer = tcpSocket.writable.getWriter(); 300 | await writer.write(rawClientData); 301 | writer.releaseLock(); 302 | 303 | tcpSocket.closed.catch(error => { 304 | console.error('NAT64 IPv6连接关闭错误:', error); 305 | }).finally(() => { 306 | if (serverWS.readyState === WS_READY_STATE_OPEN) { 307 | serverWS.close(1000, '连接已关闭'); 308 | } 309 | }); 310 | 311 | pipeRemoteToWebSocket(tcpSocket, serverWS, \u0076\u006c\u0065\u0073\u0073RespHeader, null); 312 | } catch (err) { 313 | console.error('NAT64 IPv6连接失败:', err); 314 | serverWS.close(1011, 'NAT64 IPv6连接失败: ' + err.message); 315 | } 316 | } 317 | 318 | try { 319 | const tcpSocket = await connectAndWrite(result.addressRemote, result.portRemote); 320 | pipeRemoteToWebSocket(tcpSocket, serverWS, \u0076\u006c\u0065\u0073\u0073RespHeader, retry); 321 | } catch (err) { 322 | console.error('连接失败:', err); 323 | serverWS.close(1011, '连接失败'); 324 | } 325 | }, 326 | close() { 327 | if (remoteSocket) { 328 | closeSocket(remoteSocket); 329 | } 330 | } 331 | })).catch(err => { 332 | console.error('WebSocket 错误:', err); 333 | closeSocket(remoteSocket); 334 | serverWS.close(1011, '内部错误'); 335 | }); 336 | 337 | return new Response(null, { 338 | status: 101, 339 | webSocket: clientWS, 340 | }); 341 | } 342 | 343 | function createWebSocketReadableStream(ws, earlyDataHeader) { 344 | return new ReadableStream({ 345 | start(controller) { 346 | ws.addEventListener('message', event => { 347 | controller.enqueue(event.data); 348 | }); 349 | 350 | ws.addEventListener('close', () => { 351 | controller.close(); 352 | }); 353 | 354 | ws.addEventListener('error', err => { 355 | controller.error(err); 356 | }); 357 | 358 | if (earlyDataHeader) { 359 | try { 360 | const decoded = atob(earlyDataHeader.replace(/-/g, '+').replace(/_/g, '/')); 361 | const data = Uint8Array.from(decoded, c => c.charCodeAt(0)); 362 | controller.enqueue(data.buffer); 363 | } catch (e) { 364 | } 365 | } 366 | } 367 | }); 368 | } 369 | 370 | function parse\u0076\u006c\u0065\u0073\u0073Header(buffer, userID) { 371 | if (buffer.byteLength < 24) { 372 | return { hasError: true, message: '无效的头部长度' }; 373 | } 374 | 375 | const view = new DataView(buffer); 376 | const version = new Uint8Array(buffer.slice(0, 1)); 377 | 378 | const uuid = formatUUID(new Uint8Array(buffer.slice(1, 17))); 379 | if (uuid !== userID) { 380 | return { hasError: true, message: '无效的用户' }; 381 | } 382 | 383 | const optionsLength = view.getUint8(17); 384 | const command = view.getUint8(18 + optionsLength); 385 | 386 | let isUDP = false; 387 | if (command === 1) { 388 | 389 | } else if (command === 2) { 390 | 391 | isUDP = true; 392 | } else { 393 | return { hasError: true, message: '不支持的命令,仅支持TCP(01)和UDP(02)' }; 394 | } 395 | 396 | let offset = 19 + optionsLength; 397 | const port = view.getUint16(offset); 398 | offset += 2; 399 | 400 | const addressType = view.getUint8(offset++); 401 | let address = ''; 402 | 403 | switch (addressType) { 404 | case 1: // IPv4 405 | address = Array.from(new Uint8Array(buffer.slice(offset, offset + 4))).join('.'); 406 | offset += 4; 407 | break; 408 | 409 | case 2: // 域名 410 | const domainLength = view.getUint8(offset++); 411 | address = new TextDecoder().decode(buffer.slice(offset, offset + domainLength)); 412 | offset += domainLength; 413 | break; 414 | 415 | case 3: // IPv6 416 | const ipv6 = []; 417 | for (let i = 0; i < 8; i++) { 418 | ipv6.push(view.getUint16(offset).toString(16).padStart(4, '0')); 419 | offset += 2; 420 | } 421 | address = ipv6.join(':').replace(/(^|:)0+(\w)/g, '$1$2'); 422 | break; 423 | 424 | default: 425 | return { hasError: true, message: '不支持的地址类型' }; 426 | } 427 | 428 | return { 429 | hasError: false, 430 | addressRemote: address, 431 | portRemote: port, 432 | rawDataIndex: offset, 433 | \u0076\u006c\u0065\u0073\u0073Version: version, 434 | isUDP 435 | }; 436 | } 437 | 438 | function pipeRemoteToWebSocket(remoteSocket, ws, \u0076\u006c\u0065\u0073\u0073Header, retry = null) { 439 | let headerSent = false; 440 | let hasIncomingData = false; 441 | 442 | remoteSocket.readable.pipeTo(new WritableStream({ 443 | write(chunk) { 444 | hasIncomingData = true; 445 | if (ws.readyState === WS_READY_STATE_OPEN) { 446 | if (!headerSent) { 447 | const combined = new Uint8Array(\u0076\u006c\u0065\u0073\u0073Header.byteLength + chunk.byteLength); 448 | combined.set(new Uint8Array(\u0076\u006c\u0065\u0073\u0073Header), 0); 449 | combined.set(new Uint8Array(chunk), \u0076\u006c\u0065\u0073\u0073Header.byteLength); 450 | ws.send(combined.buffer); 451 | headerSent = true; 452 | } else { 453 | ws.send(chunk); 454 | } 455 | } 456 | }, 457 | close() { 458 | if (!hasIncomingData && retry) { 459 | retry(); 460 | return; 461 | } 462 | if (ws.readyState === WS_READY_STATE_OPEN) { 463 | ws.close(1000, '正常关闭'); 464 | } 465 | }, 466 | abort() { 467 | closeSocket(remoteSocket); 468 | } 469 | })).catch(err => { 470 | console.error('数据转发错误:', err); 471 | closeSocket(remoteSocket); 472 | if (ws.readyState === WS_READY_STATE_OPEN) { 473 | ws.close(1011, '数据传输错误'); 474 | } 475 | }); 476 | } 477 | 478 | function closeSocket(socket) { 479 | if (socket) { 480 | try { 481 | socket.close(); 482 | } catch (e) { 483 | } 484 | } 485 | } 486 | 487 | function formatUUID(bytes) { 488 | const hex = Array.from(bytes, b => b.toString(16).padStart(2, '0')).join(''); 489 | return `${hex.slice(0,8)}-${hex.slice(8,12)}-${hex.slice(12,16)}-${hex.slice(16,20)}-${hex.slice(20)}`; 490 | } 491 | 492 | async function handleUDPOutBound(webSocket, \u0076\u006c\u0065\u0073\u0073ResponseHeader) { 493 | let is\u0076\u006c\u0065\u0073\u0073HeaderSent = false; 494 | const transformStream = new TransformStream({ 495 | start(controller) { 496 | }, 497 | transform(chunk, controller) { 498 | for (let index = 0; index < chunk.byteLength;) { 499 | const lengthBuffer = chunk.slice(index, index + 2); 500 | const udpPacketLength = new DataView(lengthBuffer).getUint16(0); 501 | const udpData = new Uint8Array( 502 | chunk.slice(index + 2, index + 2 + udpPacketLength) 503 | ); 504 | index = index + 2 + udpPacketLength; 505 | controller.enqueue(udpData); 506 | } 507 | }, 508 | flush(controller) { 509 | } 510 | }); 511 | 512 | transformStream.readable.pipeTo(new WritableStream({ 513 | async write(chunk) { 514 | const resp = await fetch('https://1.1.1.1/dns-query', 515 | { 516 | method: 'POST', 517 | headers: { 518 | 'content-type': 'application/dns-message', 519 | }, 520 | body: chunk, 521 | }) 522 | const dnsQueryResult = await resp.arrayBuffer(); 523 | const udpSize = dnsQueryResult.byteLength; 524 | const udpSizeBuffer = new Uint8Array([(udpSize >> 8) & 0xff, udpSize & 0xff]); 525 | 526 | if (webSocket.readyState === WS_READY_STATE_OPEN) { 527 | console.log(`DNS查询成功,DNS消息长度为 ${udpSize}`); 528 | if (is\u0076\u006c\u0065\u0073\u0073HeaderSent) { 529 | webSocket.send(await new Blob([udpSizeBuffer, dnsQueryResult]).arrayBuffer()); 530 | } else { 531 | webSocket.send(await new Blob([\u0076\u006c\u0065\u0073\u0073ResponseHeader, udpSizeBuffer, dnsQueryResult]).arrayBuffer()); 532 | is\u0076\u006c\u0065\u0073\u0073HeaderSent = true; 533 | } 534 | } 535 | } 536 | })).catch((error) => { 537 | console.error('DNS UDP处理错误:', error); 538 | }); 539 | 540 | const writer = transformStream.writable.getWriter(); 541 | 542 | return { 543 | write(chunk) { 544 | writer.write(chunk); 545 | } 546 | }; 547 | } 548 | /** 549 | * 550 | * @param {string} userID 551 | * @param {string | null} hostName 552 | * @returns {string} 553 | */ 554 | function get\u0076\u006c\u0065\u0073\u0073Config(userID, hostName) { 555 | const w\u0076\u006c\u0065\u0073\u0073ws = `\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${CDNIP}:8880?encryption=none&security=none&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#${hostName}`; 556 | const p\u0076\u006c\u0065\u0073\u0073wstls = `\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${CDNIP}:8443?encryption=none&security=tls&type=ws&host=${hostName}&sni=${hostName}&fp=random&path=%2F%3Fed%3D2560#${hostName}`; 557 | const note = `甬哥博客地址:https://ygkkk.blogspot.com\n甬哥YouTube频道:https://www.youtube.com/@ygkkk\n甬哥TG电报群组:https://t.me/ygkkktg\n甬哥TG电报频道:https://t.me/ygkkktgpd\n\nProxyIP使用nat64自动生成,无需设置`; 558 | const ty = `https://${hostName}/${userID}/ty` 559 | const cl = `https://${hostName}/${userID}/cl` 560 | const sb = `https://${hostName}/${userID}/sb` 561 | const pty = `https://${hostName}/${userID}/pty` 562 | const pcl = `https://${hostName}/${userID}/pcl` 563 | const psb = `https://${hostName}/${userID}/psb` 564 | 565 | const wk\u0076\u006c\u0065\u0073\u0073share = btoa(`\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP1}:${PT1}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V1_${IP1}_${PT1}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP2}:${PT2}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V2_${IP2}_${PT2}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP3}:${PT3}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V3_${IP3}_${PT3}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP4}:${PT4}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V4_${IP4}_${PT4}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP5}:${PT5}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V5_${IP5}_${PT5}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP6}:${PT6}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V6_${IP6}_${PT6}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP7}:${PT7}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V7_${IP7}_${PT7}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP8}:${PT8}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V8_${IP8}_${PT8}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP9}:${PT9}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V9_${IP9}_${PT9}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP10}:${PT10}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V10_${IP10}_${PT10}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP11}:${PT11}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V11_${IP11}_${PT11}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP12}:${PT12}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V12_${IP12}_${PT12}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP13}:${PT13}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V13_${IP13}_${PT13}`); 566 | 567 | 568 | const pg\u0076\u006c\u0065\u0073\u0073share = btoa(`\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP8}:${PT8}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V8_${IP8}_${PT8}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP9}:${PT9}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V9_${IP9}_${PT9}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP10}:${PT10}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V10_${IP10}_${PT10}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP11}:${PT11}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V11_${IP11}_${PT11}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP12}:${PT12}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V12_${IP12}_${PT12}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP13}:${PT13}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V13_${IP13}_${PT13}`); 569 | 570 | 571 | const noteshow = note.replace(/\n/g, '
'); 572 | const displayHtml = ` 573 | 574 | 575 | 576 | 577 | 578 | 585 | 586 | 599 | `; 600 | if (hostName.includes("workers.dev")) { 601 | return ` 602 |
603 |
604 | ${displayHtml} 605 | 606 |
607 |
608 |
609 |

Cloudflare-workers/pages-\u0076\u006c\u0065\u0073\u0073代理脚本 V25.5.27

610 |
611 |

${noteshow}

612 |
613 |
614 |
615 |
616 |
617 |

1:CF-workers-\u0076\u006c\u0065\u0073\u0073+ws节点

618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 |
节点特色:单节点链接如下:
关闭了TLS加密,无视域名阻断${w\u0076\u006c\u0065\u0073\u0073ws}
633 |
客户端参数如下:
634 |
    635 |
  • 客户端地址(address):自定义的域名 或者 优选域名 或者 优选IP 或者 反代IP
  • 636 |
  • 端口(port):7个http端口可任意选择(80、8080、8880、2052、2082、2086、2095),或反代IP对应端口
  • 637 |
  • 用户ID(uuid):${userID}
  • 638 |
  • 传输协议(network):ws 或者 websocket
  • 639 |
  • 伪装域名(host):${hostName}
  • 640 |
  • 路径(path):/?ed=2560
  • 641 |
  • 传输安全(TLS):关闭
  • 642 |
643 |
644 |
645 |
646 |
647 |
648 |

2:CF-workers-\u0076\u006c\u0065\u0073\u0073+ws+tls节点

649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 |
节点特色:单节点链接如下:
启用了TLS加密,
如果客户端支持分片(Fragment)功能,建议开启,防止域名阻断
${p\u0076\u006c\u0065\u0073\u0073wstls}
664 |
客户端参数如下:
665 |
    666 |
  • 客户端地址(address):自定义的域名 或者 优选域名 或者 优选IP 或者 反代IP
  • 667 |
  • 端口(port):6个https端口可任意选择(443、8443、2053、2083、2087、2096),或反代IP对应端口
  • 668 |
  • 用户ID(uuid):${userID}
  • 669 |
  • 传输协议(network):ws 或者 websocket
  • 670 |
  • 伪装域名(host):${hostName}
  • 671 |
  • 路径(path):/?ed=2560
  • 672 |
  • 传输安全(TLS):开启
  • 673 |
  • 跳过证书验证(allowlnsecure):false
  • 674 |
675 |
676 |
677 |
678 |
679 |
680 |

3:聚合通用、Clash-meta、Sing-box订阅链接如下:

681 |
682 |

注意:
1、默认每个订阅链接包含TLS+非TLS共13个端口节点
2、当前workers域名作为订阅链接,需通过代理进行订阅更新
3、如使用的客户端不支持分片功能,则TLS节点不可用

683 |
684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 |
聚合通用分享链接 (可直接导入客户端):
698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 |
聚合通用订阅链接:
${ty}
714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 |
Clash-meta订阅链接:
${cl}
728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 |
Sing-box订阅链接:
${sb}
742 |
743 |
744 |
745 |
746 |
747 | 748 | `; 749 | } else { 750 | return ` 751 |
752 |
753 | ${displayHtml} 754 | 755 |
756 |
757 |
758 |

Cloudflare-workers/pages-\u0076\u006c\u0065\u0073\u0073代理脚本 V25.5.27

759 |
760 |

${noteshow}

761 |
762 |
763 |
764 |
765 |
766 |

1:CF-pages/workers/自定义域-\u0076\u006c\u0065\u0073\u0073+ws+tls节点

767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 |
节点特色:单节点链接如下:
启用了TLS加密,
如果客户端支持分片(Fragment)功能,可开启,防止域名阻断
${p\u0076\u006c\u0065\u0073\u0073wstls}
782 |
客户端参数如下:
783 |
    784 |
  • 客户端地址(address):自定义的域名 或者 优选域名 或者 优选IP 或者 反代IP
  • 785 |
  • 端口(port):6个https端口可任意选择(443、8443、2053、2083、2087、2096),或反代IP对应端口
  • 786 |
  • 用户ID(uuid):${userID}
  • 787 |
  • 传输协议(network):ws 或者 websocket
  • 788 |
  • 伪装域名(host):${hostName}
  • 789 |
  • 路径(path):/?ed=2560
  • 790 |
  • 传输安全(TLS):开启
  • 791 |
  • 跳过证书验证(allowlnsecure):false
  • 792 |
793 |
794 |
795 |
796 |
797 |
798 |

2:聚合通用、Clash-meta、Sing-box订阅链接如下:

799 |
800 |

注意:以下订阅链接仅6个TLS端口节点

801 |
802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 |
聚合通用分享链接 (可直接导入客户端):
816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 |
聚合通用订阅链接:
${pty}
832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 |
Clash-meta订阅链接:
${pcl}
846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 |
Sing-box订阅链接:
${psb}
860 |
861 |
862 |
863 |
864 |
865 | 866 | `; 867 | } 868 | } 869 | 870 | function gettyConfig(userID, hostName) { 871 | const \u0076\u006c\u0065\u0073\u0073share = btoa(`\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP1}:${PT1}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V1_${IP1}_${PT1}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP2}:${PT2}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V2_${IP2}_${PT2}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP3}:${PT3}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V3_${IP3}_${PT3}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP4}:${PT4}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V4_${IP4}_${PT4}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP5}:${PT5}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V5_${IP5}_${PT5}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP6}:${PT6}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V6_${IP6}_${PT6}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP7}:${PT7}?encryption=none&security=none&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V7_${IP7}_${PT7}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP8}:${PT8}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V8_${IP8}_${PT8}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP9}:${PT9}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V9_${IP9}_${PT9}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP10}:${PT10}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V10_${IP10}_${PT10}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP11}:${PT11}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V11_${IP11}_${PT11}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP12}:${PT12}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V12_${IP12}_${PT12}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP13}:${PT13}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V13_${IP13}_${PT13}`); 872 | return `${\u0076\u006c\u0065\u0073\u0073share}` 873 | } 874 | 875 | function getclConfig(userID, hostName) { 876 | return ` 877 | port: 7890 878 | allow-lan: true 879 | mode: rule 880 | log-level: info 881 | unified-delay: true 882 | global-client-fingerprint: chrome 883 | dns: 884 | enable: false 885 | listen: :53 886 | ipv6: true 887 | enhanced-mode: fake-ip 888 | fake-ip-range: 198.18.0.1/16 889 | default-nameserver: 890 | - 223.5.5.5 891 | - 114.114.114.114 892 | - 8.8.8.8 893 | nameserver: 894 | - https://dns.alidns.com/dns-query 895 | - https://doh.pub/dns-query 896 | fallback: 897 | - https://1.0.0.1/dns-query 898 | - tls://dns.google 899 | fallback-filter: 900 | geoip: true 901 | geoip-code: CN 902 | ipcidr: 903 | - 240.0.0.0/4 904 | 905 | proxies: 906 | - name: CF_V1_${IP1}_${PT1} 907 | type: \u0076\u006c\u0065\u0073\u0073 908 | server: ${IP1.replace(/[\[\]]/g, '')} 909 | port: ${PT1} 910 | uuid: ${userID} 911 | udp: false 912 | tls: false 913 | network: ws 914 | ws-opts: 915 | path: "/?ed=2560" 916 | headers: 917 | Host: ${hostName} 918 | 919 | - name: CF_V2_${IP2}_${PT2} 920 | type: \u0076\u006c\u0065\u0073\u0073 921 | server: ${IP2.replace(/[\[\]]/g, '')} 922 | port: ${PT2} 923 | uuid: ${userID} 924 | udp: false 925 | tls: false 926 | network: ws 927 | ws-opts: 928 | path: "/?ed=2560" 929 | headers: 930 | Host: ${hostName} 931 | 932 | - name: CF_V3_${IP3}_${PT3} 933 | type: \u0076\u006c\u0065\u0073\u0073 934 | server: ${IP3.replace(/[\[\]]/g, '')} 935 | port: ${PT3} 936 | uuid: ${userID} 937 | udp: false 938 | tls: false 939 | network: ws 940 | ws-opts: 941 | path: "/?ed=2560" 942 | headers: 943 | Host: ${hostName} 944 | 945 | - name: CF_V4_${IP4}_${PT4} 946 | type: \u0076\u006c\u0065\u0073\u0073 947 | server: ${IP4.replace(/[\[\]]/g, '')} 948 | port: ${PT4} 949 | uuid: ${userID} 950 | udp: false 951 | tls: false 952 | network: ws 953 | ws-opts: 954 | path: "/?ed=2560" 955 | headers: 956 | Host: ${hostName} 957 | 958 | - name: CF_V5_${IP5}_${PT5} 959 | type: \u0076\u006c\u0065\u0073\u0073 960 | server: ${IP5.replace(/[\[\]]/g, '')} 961 | port: ${PT5} 962 | uuid: ${userID} 963 | udp: false 964 | tls: false 965 | network: ws 966 | ws-opts: 967 | path: "/?ed=2560" 968 | headers: 969 | Host: ${hostName} 970 | 971 | - name: CF_V6_${IP6}_${PT6} 972 | type: \u0076\u006c\u0065\u0073\u0073 973 | server: ${IP6.replace(/[\[\]]/g, '')} 974 | port: ${PT6} 975 | uuid: ${userID} 976 | udp: false 977 | tls: false 978 | network: ws 979 | ws-opts: 980 | path: "/?ed=2560" 981 | headers: 982 | Host: ${hostName} 983 | 984 | - name: CF_V7_${IP7}_${PT7} 985 | type: \u0076\u006c\u0065\u0073\u0073 986 | server: ${IP7.replace(/[\[\]]/g, '')} 987 | port: ${PT7} 988 | uuid: ${userID} 989 | udp: false 990 | tls: false 991 | network: ws 992 | servername: ${hostName} 993 | ws-opts: 994 | path: "/?ed=2560" 995 | headers: 996 | Host: ${hostName} 997 | 998 | - name: CF_V8_${IP8}_${PT8} 999 | type: \u0076\u006c\u0065\u0073\u0073 1000 | server: ${IP8.replace(/[\[\]]/g, '')} 1001 | port: ${PT8} 1002 | uuid: ${userID} 1003 | udp: false 1004 | tls: true 1005 | network: ws 1006 | servername: ${hostName} 1007 | ws-opts: 1008 | path: "/?ed=2560" 1009 | headers: 1010 | Host: ${hostName} 1011 | 1012 | - name: CF_V9_${IP9}_${PT9} 1013 | type: \u0076\u006c\u0065\u0073\u0073 1014 | server: ${IP9.replace(/[\[\]]/g, '')} 1015 | port: ${PT9} 1016 | uuid: ${userID} 1017 | udp: false 1018 | tls: true 1019 | network: ws 1020 | servername: ${hostName} 1021 | ws-opts: 1022 | path: "/?ed=2560" 1023 | headers: 1024 | Host: ${hostName} 1025 | 1026 | - name: CF_V10_${IP10}_${PT10} 1027 | type: \u0076\u006c\u0065\u0073\u0073 1028 | server: ${IP10.replace(/[\[\]]/g, '')} 1029 | port: ${PT10} 1030 | uuid: ${userID} 1031 | udp: false 1032 | tls: true 1033 | network: ws 1034 | servername: ${hostName} 1035 | ws-opts: 1036 | path: "/?ed=2560" 1037 | headers: 1038 | Host: ${hostName} 1039 | 1040 | - name: CF_V11_${IP11}_${PT11} 1041 | type: \u0076\u006c\u0065\u0073\u0073 1042 | server: ${IP11.replace(/[\[\]]/g, '')} 1043 | port: ${PT11} 1044 | uuid: ${userID} 1045 | udp: false 1046 | tls: true 1047 | network: ws 1048 | servername: ${hostName} 1049 | ws-opts: 1050 | path: "/?ed=2560" 1051 | headers: 1052 | Host: ${hostName} 1053 | 1054 | - name: CF_V12_${IP12}_${PT12} 1055 | type: \u0076\u006c\u0065\u0073\u0073 1056 | server: ${IP12.replace(/[\[\]]/g, '')} 1057 | port: ${PT12} 1058 | uuid: ${userID} 1059 | udp: false 1060 | tls: true 1061 | network: ws 1062 | servername: ${hostName} 1063 | ws-opts: 1064 | path: "/?ed=2560" 1065 | headers: 1066 | Host: ${hostName} 1067 | 1068 | - name: CF_V13_${IP13}_${PT13} 1069 | type: \u0076\u006c\u0065\u0073\u0073 1070 | server: ${IP13.replace(/[\[\]]/g, '')} 1071 | port: ${PT13} 1072 | uuid: ${userID} 1073 | udp: false 1074 | tls: true 1075 | network: ws 1076 | servername: ${hostName} 1077 | ws-opts: 1078 | path: "/?ed=2560" 1079 | headers: 1080 | Host: ${hostName} 1081 | 1082 | proxy-groups: 1083 | - name: 负载均衡 1084 | type: load-balance 1085 | url: http://www.gstatic.com/generate_204 1086 | interval: 300 1087 | proxies: 1088 | - CF_V1_${IP1}_${PT1} 1089 | - CF_V2_${IP2}_${PT2} 1090 | - CF_V3_${IP3}_${PT3} 1091 | - CF_V4_${IP4}_${PT4} 1092 | - CF_V5_${IP5}_${PT5} 1093 | - CF_V6_${IP6}_${PT6} 1094 | - CF_V7_${IP7}_${PT7} 1095 | - CF_V8_${IP8}_${PT8} 1096 | - CF_V9_${IP9}_${PT9} 1097 | - CF_V10_${IP10}_${PT10} 1098 | - CF_V11_${IP11}_${PT11} 1099 | - CF_V12_${IP12}_${PT12} 1100 | - CF_V13_${IP13}_${PT13} 1101 | 1102 | - name: 自动选择 1103 | type: url-test 1104 | url: http://www.gstatic.com/generate_204 1105 | interval: 300 1106 | tolerance: 50 1107 | proxies: 1108 | - CF_V1_${IP1}_${PT1} 1109 | - CF_V2_${IP2}_${PT2} 1110 | - CF_V3_${IP3}_${PT3} 1111 | - CF_V4_${IP4}_${PT4} 1112 | - CF_V5_${IP5}_${PT5} 1113 | - CF_V6_${IP6}_${PT6} 1114 | - CF_V7_${IP7}_${PT7} 1115 | - CF_V8_${IP8}_${PT8} 1116 | - CF_V9_${IP9}_${PT9} 1117 | - CF_V10_${IP10}_${PT10} 1118 | - CF_V11_${IP11}_${PT11} 1119 | - CF_V12_${IP12}_${PT12} 1120 | - CF_V13_${IP13}_${PT13} 1121 | 1122 | - name: 🌍选择代理 1123 | type: select 1124 | proxies: 1125 | - 负载均衡 1126 | - 自动选择 1127 | - DIRECT 1128 | - CF_V1_${IP1}_${PT1} 1129 | - CF_V2_${IP2}_${PT2} 1130 | - CF_V3_${IP3}_${PT3} 1131 | - CF_V4_${IP4}_${PT4} 1132 | - CF_V5_${IP5}_${PT5} 1133 | - CF_V6_${IP6}_${PT6} 1134 | - CF_V7_${IP7}_${PT7} 1135 | - CF_V8_${IP8}_${PT8} 1136 | - CF_V9_${IP9}_${PT9} 1137 | - CF_V10_${IP10}_${PT10} 1138 | - CF_V11_${IP11}_${PT11} 1139 | - CF_V12_${IP12}_${PT12} 1140 | - CF_V13_${IP13}_${PT13} 1141 | 1142 | rules: 1143 | - GEOIP,LAN,DIRECT 1144 | - GEOIP,CN,DIRECT 1145 | - MATCH,🌍选择代理` 1146 | } 1147 | 1148 | function getsbConfig(userID, hostName) { 1149 | return `{ 1150 | "log": { 1151 | "disabled": false, 1152 | "level": "info", 1153 | "timestamp": true 1154 | }, 1155 | "experimental": { 1156 | "clash_api": { 1157 | "external_controller": "127.0.0.1:9090", 1158 | "external_ui": "ui", 1159 | "external_ui_download_url": "", 1160 | "external_ui_download_detour": "", 1161 | "secret": "", 1162 | "default_mode": "Rule" 1163 | }, 1164 | "cache_file": { 1165 | "enabled": true, 1166 | "path": "cache.db", 1167 | "store_fakeip": true 1168 | } 1169 | }, 1170 | "dns": { 1171 | "servers": [ 1172 | { 1173 | "tag": "proxydns", 1174 | "address": "tls://8.8.8.8/dns-query", 1175 | "detour": "select" 1176 | }, 1177 | { 1178 | "tag": "localdns", 1179 | "address": "h3://223.5.5.5/dns-query", 1180 | "detour": "direct" 1181 | }, 1182 | { 1183 | "tag": "dns_fakeip", 1184 | "address": "fakeip" 1185 | } 1186 | ], 1187 | "rules": [ 1188 | { 1189 | "outbound": "any", 1190 | "server": "localdns", 1191 | "disable_cache": true 1192 | }, 1193 | { 1194 | "clash_mode": "Global", 1195 | "server": "proxydns" 1196 | }, 1197 | { 1198 | "clash_mode": "Direct", 1199 | "server": "localdns" 1200 | }, 1201 | { 1202 | "rule_set": "geosite-cn", 1203 | "server": "localdns" 1204 | }, 1205 | { 1206 | "rule_set": "geosite-geolocation-!cn", 1207 | "server": "proxydns" 1208 | }, 1209 | { 1210 | "rule_set": "geosite-geolocation-!cn", 1211 | "query_type": [ 1212 | "A", 1213 | "AAAA" 1214 | ], 1215 | "server": "dns_fakeip" 1216 | } 1217 | ], 1218 | "fakeip": { 1219 | "enabled": true, 1220 | "inet4_range": "198.18.0.0/15", 1221 | "inet6_range": "fc00::/18" 1222 | }, 1223 | "independent_cache": true, 1224 | "final": "proxydns" 1225 | }, 1226 | "inbounds": [ 1227 | { 1228 | "type": "tun", 1229 | "tag": "tun-in", 1230 | "address": [ 1231 | "172.19.0.1/30", 1232 | "fd00::1/126" 1233 | ], 1234 | "auto_route": true, 1235 | "strict_route": true, 1236 | "sniff": true, 1237 | "sniff_override_destination": true, 1238 | "domain_strategy": "prefer_ipv4" 1239 | } 1240 | ], 1241 | "outbounds": [ 1242 | { 1243 | "tag": "select", 1244 | "type": "selector", 1245 | "default": "auto", 1246 | "outbounds": [ 1247 | "auto", 1248 | "CF_V1_${IP1}_${PT1}", 1249 | "CF_V2_${IP2}_${PT2}", 1250 | "CF_V3_${IP3}_${PT3}", 1251 | "CF_V4_${IP4}_${PT4}", 1252 | "CF_V5_${IP5}_${PT5}", 1253 | "CF_V6_${IP6}_${PT6}", 1254 | "CF_V7_${IP7}_${PT7}", 1255 | "CF_V8_${IP8}_${PT8}", 1256 | "CF_V9_${IP9}_${PT9}", 1257 | "CF_V10_${IP10}_${PT10}", 1258 | "CF_V11_${IP11}_${PT11}", 1259 | "CF_V12_${IP12}_${PT12}", 1260 | "CF_V13_${IP13}_${PT13}" 1261 | ] 1262 | }, 1263 | { 1264 | "server": "${IP1}", 1265 | "server_port": ${PT1}, 1266 | "tag": "CF_V1_${IP1}_${PT1}", 1267 | "packet_encoding": "packetaddr", 1268 | "transport": { 1269 | "headers": { 1270 | "Host": [ 1271 | "${hostName}" 1272 | ] 1273 | }, 1274 | "path": "/?ed=2560", 1275 | "type": "ws" 1276 | }, 1277 | "type": "\u0076\u006c\u0065\u0073\u0073", 1278 | "uuid": "${userID}" 1279 | }, 1280 | { 1281 | "server": "${IP2}", 1282 | "server_port": ${PT2}, 1283 | "tag": "CF_V2_${IP2}_${PT2}", 1284 | "packet_encoding": "packetaddr", 1285 | "transport": { 1286 | "headers": { 1287 | "Host": [ 1288 | "${hostName}" 1289 | ] 1290 | }, 1291 | "path": "/?ed=2560", 1292 | "type": "ws" 1293 | }, 1294 | "type": "\u0076\u006c\u0065\u0073\u0073", 1295 | "uuid": "${userID}" 1296 | }, 1297 | { 1298 | "server": "${IP3}", 1299 | "server_port": ${PT3}, 1300 | "tag": "CF_V3_${IP3}_${PT3}", 1301 | "packet_encoding": "packetaddr", 1302 | "transport": { 1303 | "headers": { 1304 | "Host": [ 1305 | "${hostName}" 1306 | ] 1307 | }, 1308 | "path": "/?ed=2560", 1309 | "type": "ws" 1310 | }, 1311 | "type": "\u0076\u006c\u0065\u0073\u0073", 1312 | "uuid": "${userID}" 1313 | }, 1314 | { 1315 | "server": "${IP4}", 1316 | "server_port": ${PT4}, 1317 | "tag": "CF_V4_${IP4}_${PT4}", 1318 | "packet_encoding": "packetaddr", 1319 | "transport": { 1320 | "headers": { 1321 | "Host": [ 1322 | "${hostName}" 1323 | ] 1324 | }, 1325 | "path": "/?ed=2560", 1326 | "type": "ws" 1327 | }, 1328 | "type": "\u0076\u006c\u0065\u0073\u0073", 1329 | "uuid": "${userID}" 1330 | }, 1331 | { 1332 | "server": "${IP5}", 1333 | "server_port": ${PT5}, 1334 | "tag": "CF_V5_${IP5}_${PT5}", 1335 | "packet_encoding": "packetaddr", 1336 | "transport": { 1337 | "headers": { 1338 | "Host": [ 1339 | "${hostName}" 1340 | ] 1341 | }, 1342 | "path": "/?ed=2560", 1343 | "type": "ws" 1344 | }, 1345 | "type": "\u0076\u006c\u0065\u0073\u0073", 1346 | "uuid": "${userID}" 1347 | }, 1348 | { 1349 | "server": "${IP6}", 1350 | "server_port": ${PT6}, 1351 | "tag": "CF_V6_${IP6}_${PT6}", 1352 | "packet_encoding": "packetaddr", 1353 | "transport": { 1354 | "headers": { 1355 | "Host": [ 1356 | "${hostName}" 1357 | ] 1358 | }, 1359 | "path": "/?ed=2560", 1360 | "type": "ws" 1361 | }, 1362 | "type": "\u0076\u006c\u0065\u0073\u0073", 1363 | "uuid": "${userID}" 1364 | }, 1365 | { 1366 | "server": "${IP7}", 1367 | "server_port": ${PT7}, 1368 | "tag": "CF_V7_${IP7}_${PT7}", 1369 | "packet_encoding": "packetaddr", 1370 | "transport": { 1371 | "headers": { 1372 | "Host": [ 1373 | "${hostName}" 1374 | ] 1375 | }, 1376 | "path": "/?ed=2560", 1377 | "type": "ws" 1378 | }, 1379 | "type": "\u0076\u006c\u0065\u0073\u0073", 1380 | "uuid": "${userID}" 1381 | }, 1382 | { 1383 | "server": "${IP8}", 1384 | "server_port": ${PT8}, 1385 | "tag": "CF_V8_${IP8}_${PT8}", 1386 | "tls": { 1387 | "enabled": true, 1388 | "server_name": "${hostName}", 1389 | "insecure": false, 1390 | "utls": { 1391 | "enabled": true, 1392 | "fingerprint": "chrome" 1393 | } 1394 | }, 1395 | "packet_encoding": "packetaddr", 1396 | "transport": { 1397 | "headers": { 1398 | "Host": [ 1399 | "${hostName}" 1400 | ] 1401 | }, 1402 | "path": "/?ed=2560", 1403 | "type": "ws" 1404 | }, 1405 | "type": "\u0076\u006c\u0065\u0073\u0073", 1406 | "uuid": "${userID}" 1407 | }, 1408 | { 1409 | "server": "${IP9}", 1410 | "server_port": ${PT9}, 1411 | "tag": "CF_V9_${IP9}_${PT9}", 1412 | "tls": { 1413 | "enabled": true, 1414 | "server_name": "${hostName}", 1415 | "insecure": false, 1416 | "utls": { 1417 | "enabled": true, 1418 | "fingerprint": "chrome" 1419 | } 1420 | }, 1421 | "packet_encoding": "packetaddr", 1422 | "transport": { 1423 | "headers": { 1424 | "Host": [ 1425 | "${hostName}" 1426 | ] 1427 | }, 1428 | "path": "/?ed=2560", 1429 | "type": "ws" 1430 | }, 1431 | "type": "\u0076\u006c\u0065\u0073\u0073", 1432 | "uuid": "${userID}" 1433 | }, 1434 | { 1435 | "server": "${IP10}", 1436 | "server_port": ${PT10}, 1437 | "tag": "CF_V10_${IP10}_${PT10}", 1438 | "tls": { 1439 | "enabled": true, 1440 | "server_name": "${hostName}", 1441 | "insecure": false, 1442 | "utls": { 1443 | "enabled": true, 1444 | "fingerprint": "chrome" 1445 | } 1446 | }, 1447 | "packet_encoding": "packetaddr", 1448 | "transport": { 1449 | "headers": { 1450 | "Host": [ 1451 | "${hostName}" 1452 | ] 1453 | }, 1454 | "path": "/?ed=2560", 1455 | "type": "ws" 1456 | }, 1457 | "type": "\u0076\u006c\u0065\u0073\u0073", 1458 | "uuid": "${userID}" 1459 | }, 1460 | { 1461 | "server": "${IP11}", 1462 | "server_port": ${PT11}, 1463 | "tag": "CF_V11_${IP11}_${PT11}", 1464 | "tls": { 1465 | "enabled": true, 1466 | "server_name": "${hostName}", 1467 | "insecure": false, 1468 | "utls": { 1469 | "enabled": true, 1470 | "fingerprint": "chrome" 1471 | } 1472 | }, 1473 | "packet_encoding": "packetaddr", 1474 | "transport": { 1475 | "headers": { 1476 | "Host": [ 1477 | "${hostName}" 1478 | ] 1479 | }, 1480 | "path": "/?ed=2560", 1481 | "type": "ws" 1482 | }, 1483 | "type": "\u0076\u006c\u0065\u0073\u0073", 1484 | "uuid": "${userID}" 1485 | }, 1486 | { 1487 | "server": "${IP12}", 1488 | "server_port": ${PT12}, 1489 | "tag": "CF_V12_${IP12}_${PT12}", 1490 | "tls": { 1491 | "enabled": true, 1492 | "server_name": "${hostName}", 1493 | "insecure": false, 1494 | "utls": { 1495 | "enabled": true, 1496 | "fingerprint": "chrome" 1497 | } 1498 | }, 1499 | "packet_encoding": "packetaddr", 1500 | "transport": { 1501 | "headers": { 1502 | "Host": [ 1503 | "${hostName}" 1504 | ] 1505 | }, 1506 | "path": "/?ed=2560", 1507 | "type": "ws" 1508 | }, 1509 | "type": "\u0076\u006c\u0065\u0073\u0073", 1510 | "uuid": "${userID}" 1511 | }, 1512 | { 1513 | "server": "${IP13}", 1514 | "server_port": ${PT13}, 1515 | "tag": "CF_V13_${IP13}_${PT13}", 1516 | "tls": { 1517 | "enabled": true, 1518 | "server_name": "${hostName}", 1519 | "insecure": false, 1520 | "utls": { 1521 | "enabled": true, 1522 | "fingerprint": "chrome" 1523 | } 1524 | }, 1525 | "packet_encoding": "packetaddr", 1526 | "transport": { 1527 | "headers": { 1528 | "Host": [ 1529 | "${hostName}" 1530 | ] 1531 | }, 1532 | "path": "/?ed=2560", 1533 | "type": "ws" 1534 | }, 1535 | "type": "\u0076\u006c\u0065\u0073\u0073", 1536 | "uuid": "${userID}" 1537 | }, 1538 | { 1539 | "tag": "direct", 1540 | "type": "direct" 1541 | }, 1542 | { 1543 | "tag": "auto", 1544 | "type": "urltest", 1545 | "outbounds": [ 1546 | "CF_V1_${IP1}_${PT1}", 1547 | "CF_V2_${IP2}_${PT2}", 1548 | "CF_V3_${IP3}_${PT3}", 1549 | "CF_V4_${IP4}_${PT4}", 1550 | "CF_V5_${IP5}_${PT5}", 1551 | "CF_V6_${IP6}_${PT6}", 1552 | "CF_V7_${IP7}_${PT7}", 1553 | "CF_V8_${IP8}_${PT8}", 1554 | "CF_V9_${IP9}_${PT9}", 1555 | "CF_V10_${IP10}_${PT10}", 1556 | "CF_V11_${IP11}_${PT11}", 1557 | "CF_V12_${IP12}_${PT12}", 1558 | "CF_V13_${IP13}_${PT13}" 1559 | ], 1560 | "url": "https://www.gstatic.com/generate_204", 1561 | "interval": "1m", 1562 | "tolerance": 50, 1563 | "interrupt_exist_connections": false 1564 | } 1565 | ], 1566 | "route": { 1567 | "rule_set": [ 1568 | { 1569 | "tag": "geosite-geolocation-!cn", 1570 | "type": "remote", 1571 | "format": "binary", 1572 | "url": "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geosite/geolocation-!cn.srs", 1573 | "download_detour": "select", 1574 | "update_interval": "1d" 1575 | }, 1576 | { 1577 | "tag": "geosite-cn", 1578 | "type": "remote", 1579 | "format": "binary", 1580 | "url": "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geosite/geolocation-cn.srs", 1581 | "download_detour": "select", 1582 | "update_interval": "1d" 1583 | }, 1584 | { 1585 | "tag": "geoip-cn", 1586 | "type": "remote", 1587 | "format": "binary", 1588 | "url": "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geoip/cn.srs", 1589 | "download_detour": "select", 1590 | "update_interval": "1d" 1591 | } 1592 | ], 1593 | "auto_detect_interface": true, 1594 | "final": "select", 1595 | "rules": [ 1596 | { 1597 | "inbound": "tun-in", 1598 | "action": "sniff" 1599 | }, 1600 | { 1601 | "protocol": "dns", 1602 | "action": "hijack-dns" 1603 | }, 1604 | { 1605 | "port": 443, 1606 | "network": "udp", 1607 | "action": "reject" 1608 | }, 1609 | { 1610 | "clash_mode": "Direct", 1611 | "outbound": "direct" 1612 | }, 1613 | { 1614 | "clash_mode": "Global", 1615 | "outbound": "select" 1616 | }, 1617 | { 1618 | "rule_set": "geoip-cn", 1619 | "outbound": "direct" 1620 | }, 1621 | { 1622 | "rule_set": "geosite-cn", 1623 | "outbound": "direct" 1624 | }, 1625 | { 1626 | "ip_is_private": true, 1627 | "outbound": "direct" 1628 | }, 1629 | { 1630 | "rule_set": "geosite-geolocation-!cn", 1631 | "outbound": "select" 1632 | } 1633 | ] 1634 | }, 1635 | "ntp": { 1636 | "enabled": true, 1637 | "server": "time.apple.com", 1638 | "server_port": 123, 1639 | "interval": "30m", 1640 | "detour": "direct" 1641 | } 1642 | }` 1643 | } 1644 | 1645 | function getptyConfig(userID, hostName) { 1646 | const \u0076\u006c\u0065\u0073\u0073share = btoa(`\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP8}:${PT8}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V8_${IP8}_${PT8}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP9}:${PT9}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V9_${IP9}_${PT9}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP10}:${PT10}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V10_${IP10}_${PT10}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP11}:${PT11}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V11_${IP11}_${PT11}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP12}:${PT12}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V12_${IP12}_${PT12}\n\u0076\u006c\u0065\u0073\u0073\u003A//${userID}\u0040${IP13}:${PT13}?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2560#CF_V13_${IP13}_${PT13}`); 1647 | return `${\u0076\u006c\u0065\u0073\u0073share}` 1648 | } 1649 | 1650 | function getpclConfig(userID, hostName) { 1651 | return ` 1652 | port: 7890 1653 | allow-lan: true 1654 | mode: rule 1655 | log-level: info 1656 | unified-delay: true 1657 | global-client-fingerprint: chrome 1658 | dns: 1659 | enable: false 1660 | listen: :53 1661 | ipv6: true 1662 | enhanced-mode: fake-ip 1663 | fake-ip-range: 198.18.0.1/16 1664 | default-nameserver: 1665 | - 223.5.5.5 1666 | - 114.114.114.114 1667 | - 8.8.8.8 1668 | nameserver: 1669 | - https://dns.alidns.com/dns-query 1670 | - https://doh.pub/dns-query 1671 | fallback: 1672 | - https://1.0.0.1/dns-query 1673 | - tls://dns.google 1674 | fallback-filter: 1675 | geoip: true 1676 | geoip-code: CN 1677 | ipcidr: 1678 | - 240.0.0.0/4 1679 | 1680 | proxies: 1681 | - name: CF_V8_${IP8}_${PT8} 1682 | type: \u0076\u006c\u0065\u0073\u0073 1683 | server: ${IP8.replace(/[\[\]]/g, '')} 1684 | port: ${PT8} 1685 | uuid: ${userID} 1686 | udp: false 1687 | tls: true 1688 | network: ws 1689 | servername: ${hostName} 1690 | ws-opts: 1691 | path: "/?ed=2560" 1692 | headers: 1693 | Host: ${hostName} 1694 | 1695 | - name: CF_V9_${IP9}_${PT9} 1696 | type: \u0076\u006c\u0065\u0073\u0073 1697 | server: ${IP9.replace(/[\[\]]/g, '')} 1698 | port: ${PT9} 1699 | uuid: ${userID} 1700 | udp: false 1701 | tls: true 1702 | network: ws 1703 | servername: ${hostName} 1704 | ws-opts: 1705 | path: "/?ed=2560" 1706 | headers: 1707 | Host: ${hostName} 1708 | 1709 | - name: CF_V10_${IP10}_${PT10} 1710 | type: \u0076\u006c\u0065\u0073\u0073 1711 | server: ${IP10.replace(/[\[\]]/g, '')} 1712 | port: ${PT10} 1713 | uuid: ${userID} 1714 | udp: false 1715 | tls: true 1716 | network: ws 1717 | servername: ${hostName} 1718 | ws-opts: 1719 | path: "/?ed=2560" 1720 | headers: 1721 | Host: ${hostName} 1722 | 1723 | - name: CF_V11_${IP11}_${PT11} 1724 | type: \u0076\u006c\u0065\u0073\u0073 1725 | server: ${IP11.replace(/[\[\]]/g, '')} 1726 | port: ${PT11} 1727 | uuid: ${userID} 1728 | udp: false 1729 | tls: true 1730 | network: ws 1731 | servername: ${hostName} 1732 | ws-opts: 1733 | path: "/?ed=2560" 1734 | headers: 1735 | Host: ${hostName} 1736 | 1737 | - name: CF_V12_${IP12}_${PT12} 1738 | type: \u0076\u006c\u0065\u0073\u0073 1739 | server: ${IP12.replace(/[\[\]]/g, '')} 1740 | port: ${PT12} 1741 | uuid: ${userID} 1742 | udp: false 1743 | tls: true 1744 | network: ws 1745 | servername: ${hostName} 1746 | ws-opts: 1747 | path: "/?ed=2560" 1748 | headers: 1749 | Host: ${hostName} 1750 | 1751 | - name: CF_V13_${IP13}_${PT13} 1752 | type: \u0076\u006c\u0065\u0073\u0073 1753 | server: ${IP13.replace(/[\[\]]/g, '')} 1754 | port: ${PT13} 1755 | uuid: ${userID} 1756 | udp: false 1757 | tls: true 1758 | network: ws 1759 | servername: ${hostName} 1760 | ws-opts: 1761 | path: "/?ed=2560" 1762 | headers: 1763 | Host: ${hostName} 1764 | 1765 | proxy-groups: 1766 | - name: 负载均衡 1767 | type: load-balance 1768 | url: http://www.gstatic.com/generate_204 1769 | interval: 300 1770 | proxies: 1771 | - CF_V8_${IP8}_${PT8} 1772 | - CF_V9_${IP9}_${PT9} 1773 | - CF_V10_${IP10}_${PT10} 1774 | - CF_V11_${IP11}_${PT11} 1775 | - CF_V12_${IP12}_${PT12} 1776 | - CF_V13_${IP13}_${PT13} 1777 | 1778 | - name: 自动选择 1779 | type: url-test 1780 | url: http://www.gstatic.com/generate_204 1781 | interval: 300 1782 | tolerance: 50 1783 | proxies: 1784 | - CF_V8_${IP8}_${PT8} 1785 | - CF_V9_${IP9}_${PT9} 1786 | - CF_V10_${IP10}_${PT10} 1787 | - CF_V11_${IP11}_${PT11} 1788 | - CF_V12_${IP12}_${PT12} 1789 | - CF_V13_${IP13}_${PT13} 1790 | 1791 | - name: 🌍选择代理 1792 | type: select 1793 | proxies: 1794 | - 负载均衡 1795 | - 自动选择 1796 | - DIRECT 1797 | - CF_V8_${IP8}_${PT8} 1798 | - CF_V9_${IP9}_${PT9} 1799 | - CF_V10_${IP10}_${PT10} 1800 | - CF_V11_${IP11}_${PT11} 1801 | - CF_V12_${IP12}_${PT12} 1802 | - CF_V13_${IP13}_${PT13} 1803 | 1804 | rules: 1805 | - GEOIP,LAN,DIRECT 1806 | - GEOIP,CN,DIRECT 1807 | - MATCH,🌍选择代理` 1808 | } 1809 | 1810 | function getpsbConfig(userID, hostName) { 1811 | return `{ 1812 | "log": { 1813 | "disabled": false, 1814 | "level": "info", 1815 | "timestamp": true 1816 | }, 1817 | "experimental": { 1818 | "clash_api": { 1819 | "external_controller": "127.0.0.1:9090", 1820 | "external_ui": "ui", 1821 | "external_ui_download_url": "", 1822 | "external_ui_download_detour": "", 1823 | "secret": "", 1824 | "default_mode": "Rule" 1825 | }, 1826 | "cache_file": { 1827 | "enabled": true, 1828 | "path": "cache.db", 1829 | "store_fakeip": true 1830 | } 1831 | }, 1832 | "dns": { 1833 | "servers": [ 1834 | { 1835 | "tag": "proxydns", 1836 | "address": "tls://8.8.8.8/dns-query", 1837 | "detour": "select" 1838 | }, 1839 | { 1840 | "tag": "localdns", 1841 | "address": "h3://223.5.5.5/dns-query", 1842 | "detour": "direct" 1843 | }, 1844 | { 1845 | "tag": "dns_fakeip", 1846 | "address": "fakeip" 1847 | } 1848 | ], 1849 | "rules": [ 1850 | { 1851 | "outbound": "any", 1852 | "server": "localdns", 1853 | "disable_cache": true 1854 | }, 1855 | { 1856 | "clash_mode": "Global", 1857 | "server": "proxydns" 1858 | }, 1859 | { 1860 | "clash_mode": "Direct", 1861 | "server": "localdns" 1862 | }, 1863 | { 1864 | "rule_set": "geosite-cn", 1865 | "server": "localdns" 1866 | }, 1867 | { 1868 | "rule_set": "geosite-geolocation-!cn", 1869 | "server": "proxydns" 1870 | }, 1871 | { 1872 | "rule_set": "geosite-geolocation-!cn", 1873 | "query_type": [ 1874 | "A", 1875 | "AAAA" 1876 | ], 1877 | "server": "dns_fakeip" 1878 | } 1879 | ], 1880 | "fakeip": { 1881 | "enabled": true, 1882 | "inet4_range": "198.18.0.0/15", 1883 | "inet6_range": "fc00::/18" 1884 | }, 1885 | "independent_cache": true, 1886 | "final": "proxydns" 1887 | }, 1888 | "inbounds": [ 1889 | { 1890 | "type": "tun", 1891 | "tag": "tun-in", 1892 | "address": [ 1893 | "172.19.0.1/30", 1894 | "fd00::1/126" 1895 | ], 1896 | "auto_route": true, 1897 | "strict_route": true, 1898 | "sniff": true, 1899 | "sniff_override_destination": true, 1900 | "domain_strategy": "prefer_ipv4" 1901 | } 1902 | ], 1903 | "outbounds": [ 1904 | { 1905 | "tag": "select", 1906 | "type": "selector", 1907 | "default": "auto", 1908 | "outbounds": [ 1909 | "auto", 1910 | "CF_V8_${IP8}_${PT8}", 1911 | "CF_V9_${IP9}_${PT9}", 1912 | "CF_V10_${IP10}_${PT10}", 1913 | "CF_V11_${IP11}_${PT11}", 1914 | "CF_V12_${IP12}_${PT12}", 1915 | "CF_V13_${IP13}_${PT13}" 1916 | ] 1917 | }, 1918 | { 1919 | "server": "${IP8}", 1920 | "server_port": ${PT8}, 1921 | "tag": "CF_V8_${IP8}_${PT8}", 1922 | "tls": { 1923 | "enabled": true, 1924 | "server_name": "${hostName}", 1925 | "insecure": false, 1926 | "utls": { 1927 | "enabled": true, 1928 | "fingerprint": "chrome" 1929 | } 1930 | }, 1931 | "packet_encoding": "packetaddr", 1932 | "transport": { 1933 | "headers": { 1934 | "Host": [ 1935 | "${hostName}" 1936 | ] 1937 | }, 1938 | "path": "/?ed=2560", 1939 | "type": "ws" 1940 | }, 1941 | "type": "\u0076\u006c\u0065\u0073\u0073", 1942 | "uuid": "${userID}" 1943 | }, 1944 | { 1945 | "server": "${IP9}", 1946 | "server_port": ${PT9}, 1947 | "tag": "CF_V9_${IP9}_${PT9}", 1948 | "tls": { 1949 | "enabled": true, 1950 | "server_name": "${hostName}", 1951 | "insecure": false, 1952 | "utls": { 1953 | "enabled": true, 1954 | "fingerprint": "chrome" 1955 | } 1956 | }, 1957 | "packet_encoding": "packetaddr", 1958 | "transport": { 1959 | "headers": { 1960 | "Host": [ 1961 | "${hostName}" 1962 | ] 1963 | }, 1964 | "path": "/?ed=2560", 1965 | "type": "ws" 1966 | }, 1967 | "type": "\u0076\u006c\u0065\u0073\u0073", 1968 | "uuid": "${userID}" 1969 | }, 1970 | { 1971 | "server": "${IP10}", 1972 | "server_port": ${PT10}, 1973 | "tag": "CF_V10_${IP10}_${PT10}", 1974 | "tls": { 1975 | "enabled": true, 1976 | "server_name": "${hostName}", 1977 | "insecure": false, 1978 | "utls": { 1979 | "enabled": true, 1980 | "fingerprint": "chrome" 1981 | } 1982 | }, 1983 | "packet_encoding": "packetaddr", 1984 | "transport": { 1985 | "headers": { 1986 | "Host": [ 1987 | "${hostName}" 1988 | ] 1989 | }, 1990 | "path": "/?ed=2560", 1991 | "type": "ws" 1992 | }, 1993 | "type": "\u0076\u006c\u0065\u0073\u0073", 1994 | "uuid": "${userID}" 1995 | }, 1996 | { 1997 | "server": "${IP11}", 1998 | "server_port": ${PT11}, 1999 | "tag": "CF_V11_${IP11}_${PT11}", 2000 | "tls": { 2001 | "enabled": true, 2002 | "server_name": "${hostName}", 2003 | "insecure": false, 2004 | "utls": { 2005 | "enabled": true, 2006 | "fingerprint": "chrome" 2007 | } 2008 | }, 2009 | "packet_encoding": "packetaddr", 2010 | "transport": { 2011 | "headers": { 2012 | "Host": [ 2013 | "${hostName}" 2014 | ] 2015 | }, 2016 | "path": "/?ed=2560", 2017 | "type": "ws" 2018 | }, 2019 | "type": "\u0076\u006c\u0065\u0073\u0073", 2020 | "uuid": "${userID}" 2021 | }, 2022 | { 2023 | "server": "${IP12}", 2024 | "server_port": ${PT12}, 2025 | "tag": "CF_V12_${IP12}_${PT12}", 2026 | "tls": { 2027 | "enabled": true, 2028 | "server_name": "${hostName}", 2029 | "insecure": false, 2030 | "utls": { 2031 | "enabled": true, 2032 | "fingerprint": "chrome" 2033 | } 2034 | }, 2035 | "packet_encoding": "packetaddr", 2036 | "transport": { 2037 | "headers": { 2038 | "Host": [ 2039 | "${hostName}" 2040 | ] 2041 | }, 2042 | "path": "/?ed=2560", 2043 | "type": "ws" 2044 | }, 2045 | "type": "\u0076\u006c\u0065\u0073\u0073", 2046 | "uuid": "${userID}" 2047 | }, 2048 | { 2049 | "server": "${IP13}", 2050 | "server_port": ${PT13}, 2051 | "tag": "CF_V13_${IP13}_${PT13}", 2052 | "tls": { 2053 | "enabled": true, 2054 | "server_name": "${hostName}", 2055 | "insecure": false, 2056 | "utls": { 2057 | "enabled": true, 2058 | "fingerprint": "chrome" 2059 | } 2060 | }, 2061 | "packet_encoding": "packetaddr", 2062 | "transport": { 2063 | "headers": { 2064 | "Host": [ 2065 | "${hostName}" 2066 | ] 2067 | }, 2068 | "path": "/?ed=2560", 2069 | "type": "ws" 2070 | }, 2071 | "type": "\u0076\u006c\u0065\u0073\u0073", 2072 | "uuid": "${userID}" 2073 | }, 2074 | { 2075 | "tag": "direct", 2076 | "type": "direct" 2077 | }, 2078 | { 2079 | "tag": "auto", 2080 | "type": "urltest", 2081 | "outbounds": [ 2082 | "CF_V8_${IP8}_${PT8}", 2083 | "CF_V9_${IP9}_${PT9}", 2084 | "CF_V10_${IP10}_${PT10}", 2085 | "CF_V11_${IP11}_${PT11}", 2086 | "CF_V12_${IP12}_${PT12}", 2087 | "CF_V13_${IP13}_${PT13}" 2088 | ], 2089 | "url": "https://www.gstatic.com/generate_204", 2090 | "interval": "1m", 2091 | "tolerance": 50, 2092 | "interrupt_exist_connections": false 2093 | } 2094 | ], 2095 | "route": { 2096 | "rule_set": [ 2097 | { 2098 | "tag": "geosite-geolocation-!cn", 2099 | "type": "remote", 2100 | "format": "binary", 2101 | "url": "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geosite/geolocation-!cn.srs", 2102 | "download_detour": "select", 2103 | "update_interval": "1d" 2104 | }, 2105 | { 2106 | "tag": "geosite-cn", 2107 | "type": "remote", 2108 | "format": "binary", 2109 | "url": "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geosite/geolocation-cn.srs", 2110 | "download_detour": "select", 2111 | "update_interval": "1d" 2112 | }, 2113 | { 2114 | "tag": "geoip-cn", 2115 | "type": "remote", 2116 | "format": "binary", 2117 | "url": "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geoip/cn.srs", 2118 | "download_detour": "select", 2119 | "update_interval": "1d" 2120 | } 2121 | ], 2122 | "auto_detect_interface": true, 2123 | "final": "select", 2124 | "rules": [ 2125 | { 2126 | "inbound": "tun-in", 2127 | "action": "sniff" 2128 | }, 2129 | { 2130 | "protocol": "dns", 2131 | "action": "hijack-dns" 2132 | }, 2133 | { 2134 | "port": 443, 2135 | "network": "udp", 2136 | "action": "reject" 2137 | }, 2138 | { 2139 | "clash_mode": "Direct", 2140 | "outbound": "direct" 2141 | }, 2142 | { 2143 | "clash_mode": "Global", 2144 | "outbound": "select" 2145 | }, 2146 | { 2147 | "rule_set": "geoip-cn", 2148 | "outbound": "direct" 2149 | }, 2150 | { 2151 | "rule_set": "geosite-cn", 2152 | "outbound": "direct" 2153 | }, 2154 | { 2155 | "ip_is_private": true, 2156 | "outbound": "direct" 2157 | }, 2158 | { 2159 | "rule_set": "geosite-geolocation-!cn", 2160 | "outbound": "select" 2161 | } 2162 | ] 2163 | }, 2164 | "ntp": { 2165 | "enabled": true, 2166 | "server": "time.apple.com", 2167 | "server_port": 123, 2168 | "interval": "30m", 2169 | "detour": "direct" 2170 | } 2171 | }`; 2172 | } 2173 | -------------------------------------------------------------------------------- /Vless_workers_pages/注意注意:以上4个文件使用说明.txt: -------------------------------------------------------------------------------- 1 | 文件说明: 2 | 1、_worker.js明文文件:不可用 3 | 2、_worker.js混淆文件:可用 (不带proxyip,必须自定义填上proxyip,不然无法访问CF类网站{推特X、Chatgpt} 4 | 3、nat64套壳版明文文件:不可用 5 | 4、nat64套壳版混淆文件:可用 (自带nat64自动转换proxyip,可以访问CF类网站{推特X、Chatgpt},不支持自定义proxyip) 6 | 7 | 8 | nat64即将枯竭,请使用文件2不带proxyip的脚本,自行添加proxyip 9 | 25.9.8更新视频教程:半混淆文件使用说明;解决你对优选IP的长期困惑;本轮1101报错的未来警示:https://youtu.be/rUpCuXTQqmQ 10 | 11 | 目前推荐使用2与4的半混淆文件,文件开头可直接修改uuid与proxyip,如pages部署,请把文件名改为_worker文件类型为js 12 | 13 | 相关教程与proxyip分享,请参考甬哥博客CF那期:https://ygkkk.blogspot.com/2023/07/cfworkers-vless.html 14 | 15 | ----------------------------------------------------------------------------------------------- 16 | 17 | 相关精选视频教程如下: 18 | 19 | workers/pages代码混淆后详细设置说明,变量值的变更设置:https://youtu.be/QSFaP5EVI04 20 | 21 | 永久免费的cf vless workers原生域名节点,无需自定义域名,无需优选IP订阅,无需面版控制台:https://youtu.be/PpPKzOYLZQg 22 | 23 | 永久免费的cf vless pages原生域名节点,NAT64生成ProxyIP的重要说明:https://youtu.be/yR-JpVV6SHs 24 | 25 | 解读优选官方IP、优选反代IP、优选域名三者的关系与特点;ProxyIP存在的意义:https://youtu.be/NaLd-orwFUE 26 | 27 | 不用自定义域名?不用频繁优选IP?不用订阅器?总结CF节点与域名的结构关系图:https://youtu.be/8s-ELRuFaeE 28 | 29 | 节点不能用,问题出在哪?多平台免费客户端设置指南及避坑说明:https://youtu.be/8E0l0nQWLxs 30 | 31 | 自建全端口通用的ProxyIP,同时支持客户端地址优选反代IP,自建反代IP的最终教程:https://youtu.be/CVZStM0t8BA 32 | 33 | 一键自动生成美国、香港、欧洲三区优选官方IP,电脑WIN、安卓android、苹果ios多平台一键通用:https://youtu.be/6kKIzObEZ2c 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /cf/386: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/cf/386 -------------------------------------------------------------------------------- /cf/amd64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/cf/amd64 -------------------------------------------------------------------------------- /cf/arm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/cf/arm -------------------------------------------------------------------------------- /cf/arm64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/cf/arm64 -------------------------------------------------------------------------------- /cf/cf.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export LANG=en_US.UTF-8 3 | case "$(uname -m)" in 4 | x86_64 | x64 | amd64 ) 5 | cpu=amd64 6 | ;; 7 | i386 | i686 ) 8 | cpu=386 9 | ;; 10 | armv8 | armv8l | arm64 | aarch64 ) 11 | cpu=arm64 12 | ;; 13 | armv7l ) 14 | cpu=arm 15 | ;; 16 | mips64le ) 17 | cpu=mips64le 18 | ;; 19 | mips64 ) 20 | cpu=mips64 21 | ;; 22 | mips ) 23 | cpu=mipsle 24 | ;; 25 | mipsle ) 26 | cpu=mipsle 27 | ;; 28 | * ) 29 | echo "当前架构为$(uname -m),暂不支持" 30 | exit 31 | ;; 32 | esac 33 | 34 | result(){ 35 | awk -F ',' '$2 ~ /BGI|YCC|YVR|YWG|YHZ|YOW|YYZ|YUL|YXE|STI|SDQ|GUA|KIN|GDL|MEX|QRO|SJU|MGM|ANC|PHX|LAX|SMF|SAN|SFO|SJC|DEN|JAX|MIA|TLH|TPA|ATL|HNL|ORD|IND|BGR|BOS|DTW|MSP|MCI|STL|OMA|LAS|EWR|ABQ|BUF|CLT|RDU|CLE|CMH|OKC|PDX|PHL|PIT|FSD|MEM|BNA|AUS|DFW|IAH|MFE|SAT|SLC|IAD|ORF|RIC|SEA/ {print $0}' $ip.csv | sort -t ',' -k5,5n | head -n 3 > US-$ip.csv 36 | awk -F ',' '$2 ~ /CGP|DAC|JSR|PBH|BWN|PNH|GUM|HKG|AMD|BLR|BBI|IXC|MAA|HYD|CNN|KNU|COK|CCU|BOM|NAG|DEL|PAT|DPS|CGK|JOG|FUK|OKA|KIX|NRT|ALA|NQZ|ICN|VTE|MFM|JHB|KUL|KCH|MLE|ULN|MDL|RGN|KTM|ISB|KHI|LHE|CGY|CEB|MNL|CRK|KJA|SVX|SIN|CMB|KHH|TPE|BKK|CNX|URT|TAS|DAD|HAN|SGN/ {print $0}' $ip.csv | sort -t ',' -k5,5n | head -n 3 > AS-$ip.csv 37 | awk -F ',' '$2 ~ /TIA|VIE|MSQ|BRU|SOF|ZAG|LCA|PRG|CPH|TLL|HEL|BOD|LYS|MRS|CDG|TBS|TXL|DUS|FRA|HAM|MUC|STR|ATH|SKG|BUD|KEF|ORK|DUB|MXP|PMO|FCO|RIX|VNO|LUX|KIV|AMS|SKP|OSL|WAW|LIS|OTP|DME|LED|KLD|BEG|BTS|BCN|MAD|GOT|ARN|GVA|ZRH|IST|ADB|KBP|EDI|LHR|MAN/ {print $0}' $ip.csv | sort -t ',' -k5,5n | head -n 3 > EU-$ip.csv 38 | } 39 | 40 | #if timeout 3 ping -c 2 google.com &> /dev/null; then 41 | #echo "当前网络已开代理,为确保准确性,请关闭代理" 42 | #else 43 | #echo "当前网络已关闭代理,继续进行……" 44 | #fi 45 | 46 | if timeout 3 ping -c 2 2400:3200::1 &> /dev/null; then 47 | echo "当前网络支持IPV4+IPV6" 48 | else 49 | echo "当前网络仅支持IPV4" 50 | fi 51 | rm -rf 6.csv 4.csv 52 | echo "甬哥Github项目 :github.com/yonggekkk" 53 | echo "甬哥Blogger博客 :ygkkk.blogspot.com" 54 | echo "甬哥YouTube频道 :www.youtube.com/@ygkkk" 55 | echo 56 | echo "如果提示:运行出错,请检查网络依赖环境!!!请先通过代理运行一次,后续只用快捷运行:bash cf.sh" 57 | echo 58 | echo "请选择优选类型" 59 | echo "1、仅IPV4优选" 60 | echo "2、仅IPV6优选" 61 | echo "3、IPV4+IPV6优选" 62 | echo "4、重置配置文件" 63 | echo "5、退出" 64 | read -p "请选择【1-5】:" menu 65 | if [ ! -e cf ]; then 66 | curl -L -o cf -# --retry 2 --insecure https://raw.githubusercontent.com/yonggekkk/Cloudflare_vless_trojan/main/cf/$cpu 67 | chmod +x cf 68 | fi 69 | if [ ! -e locations.json ]; then 70 | curl -s -o locations.json https://raw.githubusercontent.com/yonggekkk/Cloudflare_vless_trojan/main/cf/locations.json 71 | fi 72 | if [ ! -e ips-v4.txt ]; then 73 | curl -s -o ips-v4.txt https://raw.githubusercontent.com/yonggekkk/Cloudflare_vless_trojan/main/cf/ips-v4.txt 74 | fi 75 | if [ ! -e ips-v6.txt ]; then 76 | curl -s -o ips-v6.txt https://raw.githubusercontent.com/yonggekkk/Cloudflare_vless_trojan/main/cf/ips-v6.txt 77 | fi 78 | if [ "$menu" = "1" ]; then 79 | ip=4 80 | ./cf -ips 4 -outfile 4.csv 81 | result 82 | elif [ "$menu" = "2" ]; then 83 | ip=6 84 | ./cf -ips 6 -outfile 6.csv 85 | result 86 | elif [ "$menu" = "3" ]; then 87 | ip=4 88 | ./cf -ips 4 -outfile 4.csv 89 | result 90 | ip=6 91 | ./cf -ips 6 -outfile 6.csv 92 | result 93 | elif [ "$menu" = "4" ]; then 94 | rm -rf 6.csv 4.csv locations.json ips-v4.txt ips-v6.txt cf cf.sh 95 | echo "已重置成功" && exit 96 | else 97 | exit 98 | fi 99 | clear 100 | if [ -e 4.csv ]; then 101 | echo "IPV4最佳可用节点如下(取前三名):" 102 | echo "美国IPV4优选结果:" 103 | cat US-4.csv 104 | echo 105 | echo "亚洲IPV4优选结果:" 106 | cat AS-4.csv 107 | echo 108 | echo "欧洲IPV4优选结果:" 109 | cat EU-4.csv 110 | fi 111 | if [ -e 6.csv ]; then 112 | echo "IPV6最佳可用节点如下(取前三名):" 113 | echo "美国IPV6优选结果:" 114 | cat US-6.csv 115 | echo 116 | echo "亚洲IPV6优选结果:" 117 | cat AS-6.csv 118 | echo 119 | echo "欧洲IPV6优选结果:" 120 | cat EU-6.csv 121 | fi 122 | if [ ! -e 4.csv ] && [ ! -e 6.csv ]; then 123 | echo "运行出错,请检查网络依赖环境" 124 | fi 125 | -------------------------------------------------------------------------------- /cf/ips-v6.txt: -------------------------------------------------------------------------------- 1 | 2400:cb00:2048::/48 2 | 2400:cb00:2049::/48 3 | 2400:cb00:445::/48 4 | 2400:cb00:497::/48 5 | 2400:cb00:618::/48 6 | 2400:cb00:bbd0::/48 7 | 2400:cb00:bbd1::/48 8 | 2400:cb00:bbd2::/48 9 | 2400:cb00:bbd3::/48 10 | 2400:cb00:bbd4::/48 11 | 2400:cb00:bbd5::/48 12 | 2400:cb00:bbd6::/48 13 | 2400:cb00:bbd7::/48 14 | 2400:cb00:bbd8::/48 15 | 2400:cb00:bbd9::/48 16 | 2400:cb00:bbda::/48 17 | 2400:cb00:bbdb::/48 18 | 2400:cb00:bbdc::/48 19 | 2400:cb00:bbdd::/48 20 | 2400:cb00:bbde::/48 21 | 2400:cb00:bbdf::/48 22 | 2400:cb00:f00e::/48 23 | 2606:4700:0::/48 24 | 2606:4700:1::/48 25 | 2606:4700:10::/48 26 | 2606:4700:100::/48 27 | 2606:4700:101::/48 28 | 2606:4700:10f::/48 29 | 2606:4700:11::/48 30 | 2606:4700:12::/48 31 | 2606:4700:13::/48 32 | 2606:4700:130::/48 33 | 2606:4700:131::/48 34 | 2606:4700:132::/48 35 | 2606:4700:133::/48 36 | 2606:4700:134::/48 37 | 2606:4700:135::/48 38 | 2606:4700:136::/48 39 | 2606:4700:137::/48 40 | 2606:4700:138::/48 41 | 2606:4700:139::/48 42 | 2606:4700:13a::/48 43 | 2606:4700:13b::/48 44 | 2606:4700:13c::/48 45 | 2606:4700:13d::/48 46 | 2606:4700:13e::/48 47 | 2606:4700:13f::/48 48 | 2606:4700:14::/48 49 | 2606:4700:15::/48 50 | 2606:4700:16::/48 51 | 2606:4700:17::/48 52 | 2606:4700:18::/48 53 | 2606:4700:19::/48 54 | 2606:4700:1a::/48 55 | 2606:4700:1b::/48 56 | 2606:4700:1c::/48 57 | 2606:4700:1d::/48 58 | 2606:4700:1e::/48 59 | 2606:4700:1f::/48 60 | 2606:4700:2::/48 61 | 2606:4700:20::/48 62 | 2606:4700:21::/48 63 | 2606:4700:22::/48 64 | 2606:4700:23::/48 65 | 2606:4700:24::/48 66 | 2606:4700:25::/48 67 | 2606:4700:26::/48 68 | 2606:4700:27::/48 69 | 2606:4700:28::/48 70 | 2606:4700:29::/48 71 | 2606:4700:2a::/48 72 | 2606:4700:2b::/48 73 | 2606:4700:2c::/48 74 | 2606:4700:2d::/48 75 | 2606:4700:2e::/48 76 | 2606:4700:2f::/48 77 | 2606:4700:3::/48 78 | 2606:4700:3000::/48 79 | 2606:4700:3001::/48 80 | 2606:4700:3002::/48 81 | 2606:4700:3003::/48 82 | 2606:4700:3004::/48 83 | 2606:4700:3005::/48 84 | 2606:4700:3006::/48 85 | 2606:4700:3007::/48 86 | 2606:4700:3008::/48 87 | 2606:4700:3009::/48 88 | 2606:4700:300a::/48 89 | 2606:4700:300b::/48 90 | 2606:4700:300c::/48 91 | 2606:4700:300d::/48 92 | 2606:4700:300e::/48 93 | 2606:4700:300f::/48 94 | 2606:4700:3010::/48 95 | 2606:4700:3011::/48 96 | 2606:4700:3012::/48 97 | 2606:4700:3013::/48 98 | 2606:4700:3014::/48 99 | 2606:4700:3015::/48 100 | 2606:4700:3016::/48 101 | 2606:4700:3017::/48 102 | 2606:4700:3018::/48 103 | 2606:4700:3019::/48 104 | 2606:4700:301a::/48 105 | 2606:4700:301b::/48 106 | 2606:4700:301c::/48 107 | 2606:4700:301d::/48 108 | 2606:4700:301e::/48 109 | 2606:4700:301f::/48 110 | 2606:4700:3020::/48 111 | 2606:4700:3021::/48 112 | 2606:4700:3022::/48 113 | 2606:4700:3023::/48 114 | 2606:4700:3024::/48 115 | 2606:4700:3025::/48 116 | 2606:4700:3026::/48 117 | 2606:4700:3027::/48 118 | 2606:4700:3028::/48 119 | 2606:4700:3029::/48 120 | 2606:4700:302a::/48 121 | 2606:4700:302b::/48 122 | 2606:4700:302c::/48 123 | 2606:4700:302d::/48 124 | 2606:4700:302e::/48 125 | 2606:4700:302f::/48 126 | 2606:4700:3030::/48 127 | 2606:4700:3031::/48 128 | 2606:4700:3032::/48 129 | 2606:4700:3033::/48 130 | 2606:4700:3034::/48 131 | 2606:4700:3035::/48 132 | 2606:4700:3036::/48 133 | 2606:4700:3037::/48 134 | 2606:4700:3038::/48 135 | 2606:4700:3039::/48 136 | 2606:4700:303a::/48 137 | 2606:4700:303b::/48 138 | 2606:4700:303c::/48 139 | 2606:4700:303d::/48 140 | 2606:4700:303e::/48 141 | 2606:4700:303f::/48 142 | 2606:4700:3055::/48 143 | 2606:4700:3056::/48 144 | 2606:4700:3108::/48 145 | 2606:4700:310c::/48 146 | 2606:4700:3110::/48 147 | 2606:4700:3111::/48 148 | 2606:4700:3112::/48 149 | 2606:4700:3113::/48 150 | 2606:4700:3114::/48 151 | 2606:4700:3115::/48 152 | 2606:4700:3116::/48 153 | 2606:4700:3117::/48 154 | 2606:4700:3118::/48 155 | 2606:4700:3119::/48 156 | 2606:4700:311a::/48 157 | 2606:4700:311b::/48 158 | 2606:4700:311c::/48 159 | 2606:4700:311d::/48 160 | 2606:4700:311e::/48 161 | 2606:4700:311f::/48 162 | 2606:4700:4::/48 163 | 2606:4700:4400::/48 164 | 2606:4700:4401::/48 165 | 2606:4700:4402::/48 166 | 2606:4700:4403::/48 167 | 2606:4700:4404::/48 168 | 2606:4700:4405::/48 169 | 2606:4700:4406::/48 170 | 2606:4700:4407::/48 171 | 2606:4700:4408::/48 172 | 2606:4700:4409::/48 173 | 2606:4700:440a::/48 174 | 2606:4700:440b::/48 175 | 2606:4700:440c::/48 176 | 2606:4700:440d::/48 177 | 2606:4700:440e::/48 178 | 2606:4700:440f::/48 179 | 2606:4700:4700::/48 180 | 2606:4700:5::/48 181 | 2606:4700:50::/48 182 | 2606:4700:51::/48 183 | 2606:4700:52::/48 184 | 2606:4700:53::/48 185 | 2606:4700:54::/48 186 | 2606:4700:55::/48 187 | 2606:4700:56::/48 188 | 2606:4700:57::/48 189 | 2606:4700:58::/48 190 | 2606:4700:59::/48 191 | 2606:4700:5a::/48 192 | 2606:4700:5b::/48 193 | 2606:4700:5c::/48 194 | 2606:4700:5d::/48 195 | 2606:4700:6::/48 196 | 2606:4700:61::/48 197 | 2606:4700:62::/48 198 | 2606:4700:63::/48 199 | 2606:4700:64::/48 200 | 2606:4700:65::/48 201 | 2606:4700:66::/48 202 | 2606:4700:67::/48 203 | 2606:4700:6a::/48 204 | 2606:4700:6b::/48 205 | 2606:4700:6c::/48 206 | 2606:4700:6d::/48 207 | 2606:4700:6e::/48 208 | 2606:4700:6f::/48 209 | 2606:4700:7::/48 210 | 2606:4700:8::/48 211 | 2606:4700:8390::/48 212 | 2606:4700:8391::/48 213 | 2606:4700:8392::/48 214 | 2606:4700:8393::/48 215 | 2606:4700:8394::/48 216 | 2606:4700:8395::/48 217 | 2606:4700:8396::/48 218 | 2606:4700:8397::/48 219 | 2606:4700:8398::/48 220 | 2606:4700:8399::/48 221 | 2606:4700:839a::/48 222 | 2606:4700:839b::/48 223 | 2606:4700:839c::/48 224 | 2606:4700:839d::/48 225 | 2606:4700:839e::/48 226 | 2606:4700:839f::/48 227 | 2606:4700:83b0::/48 228 | 2606:4700:83b1::/48 229 | 2606:4700:83b2::/48 230 | 2606:4700:83b3::/48 231 | 2606:4700:83b4::/48 232 | 2606:4700:83b5::/48 233 | 2606:4700:83b6::/48 234 | 2606:4700:83b7::/48 235 | 2606:4700:83b8::/48 236 | 2606:4700:83b9::/48 237 | 2606:4700:83ba::/48 238 | 2606:4700:83bb::/48 239 | 2606:4700:83bc::/48 240 | 2606:4700:83bd::/48 241 | 2606:4700:83be::/48 242 | 2606:4700:83bf::/48 243 | 2606:4700:85c0::/48 244 | 2606:4700:85c1::/48 245 | 2606:4700:85c2::/48 246 | 2606:4700:85c3::/48 247 | 2606:4700:85c4::/48 248 | 2606:4700:85c5::/48 249 | 2606:4700:85c6::/48 250 | 2606:4700:85c7::/48 251 | 2606:4700:85c8::/48 252 | 2606:4700:85c9::/48 253 | 2606:4700:85ca::/48 254 | 2606:4700:85cb::/48 255 | 2606:4700:85cc::/48 256 | 2606:4700:85cd::/48 257 | 2606:4700:85ce::/48 258 | 2606:4700:85cf::/48 259 | 2606:4700:85d0::/48 260 | 2606:4700:85d1::/48 261 | 2606:4700:85d2::/48 262 | 2606:4700:85d3::/48 263 | 2606:4700:85d4::/48 264 | 2606:4700:85d5::/48 265 | 2606:4700:85d6::/48 266 | 2606:4700:85d7::/48 267 | 2606:4700:85d8::/48 268 | 2606:4700:85d9::/48 269 | 2606:4700:85da::/48 270 | 2606:4700:85db::/48 271 | 2606:4700:85dc::/48 272 | 2606:4700:85dd::/48 273 | 2606:4700:85de::/48 274 | 2606:4700:85df::/48 275 | 2606:4700:8ca0::/48 276 | 2606:4700:8ca1::/48 277 | 2606:4700:8ca2::/48 278 | 2606:4700:8ca3::/48 279 | 2606:4700:8ca4::/48 280 | 2606:4700:8ca5::/48 281 | 2606:4700:8ca6::/48 282 | 2606:4700:8ca7::/48 283 | 2606:4700:8ca8::/48 284 | 2606:4700:8ca9::/48 285 | 2606:4700:8caa::/48 286 | 2606:4700:8cab::/48 287 | 2606:4700:8cac::/48 288 | 2606:4700:8cad::/48 289 | 2606:4700:8cae::/48 290 | 2606:4700:8caf::/48 291 | 2606:4700:8d70::/48 292 | 2606:4700:8d71::/48 293 | 2606:4700:8d72::/48 294 | 2606:4700:8d73::/48 295 | 2606:4700:8d74::/48 296 | 2606:4700:8d75::/48 297 | 2606:4700:8d76::/48 298 | 2606:4700:8d77::/48 299 | 2606:4700:8d78::/48 300 | 2606:4700:8d79::/48 301 | 2606:4700:8d7a::/48 302 | 2606:4700:8d7b::/48 303 | 2606:4700:8d7c::/48 304 | 2606:4700:8d7d::/48 305 | 2606:4700:8d7e::/48 306 | 2606:4700:8d7f::/48 307 | 2606:4700:8d90::/48 308 | 2606:4700:8d91::/48 309 | 2606:4700:8d92::/48 310 | 2606:4700:8d93::/48 311 | 2606:4700:8d94::/48 312 | 2606:4700:8d95::/48 313 | 2606:4700:8d96::/48 314 | 2606:4700:8d97::/48 315 | 2606:4700:8d98::/48 316 | 2606:4700:8d99::/48 317 | 2606:4700:8d9a::/48 318 | 2606:4700:8d9b::/48 319 | 2606:4700:8d9c::/48 320 | 2606:4700:8d9d::/48 321 | 2606:4700:8d9e::/48 322 | 2606:4700:8d9f::/48 323 | 2606:4700:8dd0::/48 324 | 2606:4700:8dd1::/48 325 | 2606:4700:8dd2::/48 326 | 2606:4700:8dd3::/48 327 | 2606:4700:8dd4::/48 328 | 2606:4700:8dd5::/48 329 | 2606:4700:8dd6::/48 330 | 2606:4700:8dd7::/48 331 | 2606:4700:8dd8::/48 332 | 2606:4700:8dd9::/48 333 | 2606:4700:8dda::/48 334 | 2606:4700:8ddb::/48 335 | 2606:4700:8ddc::/48 336 | 2606:4700:8ddd::/48 337 | 2606:4700:8dde::/48 338 | 2606:4700:8ddf::/48 339 | 2606:4700:8de0::/48 340 | 2606:4700:8de1::/48 341 | 2606:4700:8de2::/48 342 | 2606:4700:8de3::/48 343 | 2606:4700:8de4::/48 344 | 2606:4700:8de5::/48 345 | 2606:4700:8de6::/48 346 | 2606:4700:8de7::/48 347 | 2606:4700:8de8::/48 348 | 2606:4700:8de9::/48 349 | 2606:4700:8dea::/48 350 | 2606:4700:8deb::/48 351 | 2606:4700:8dec::/48 352 | 2606:4700:8ded::/48 353 | 2606:4700:8dee::/48 354 | 2606:4700:8def::/48 355 | 2606:4700:9::/48 356 | 2606:4700:90c0::/48 357 | 2606:4700:90c1::/48 358 | 2606:4700:90c2::/48 359 | 2606:4700:90c3::/48 360 | 2606:4700:90c4::/48 361 | 2606:4700:90c5::/48 362 | 2606:4700:90c6::/48 363 | 2606:4700:90c7::/48 364 | 2606:4700:90c8::/48 365 | 2606:4700:90c9::/48 366 | 2606:4700:90ca::/48 367 | 2606:4700:90cb::/48 368 | 2606:4700:90cc::/48 369 | 2606:4700:90cd::/48 370 | 2606:4700:90ce::/48 371 | 2606:4700:90cf::/48 372 | 2606:4700:90d0::/48 373 | 2606:4700:90d1::/48 374 | 2606:4700:90d2::/48 375 | 2606:4700:90d3::/48 376 | 2606:4700:90d4::/48 377 | 2606:4700:90d5::/48 378 | 2606:4700:90d6::/48 379 | 2606:4700:90d7::/48 380 | 2606:4700:90d8::/48 381 | 2606:4700:90d9::/48 382 | 2606:4700:90da::/48 383 | 2606:4700:90db::/48 384 | 2606:4700:90dc::/48 385 | 2606:4700:90dd::/48 386 | 2606:4700:90de::/48 387 | 2606:4700:90df::/48 388 | 2606:4700:91b0::/48 389 | 2606:4700:91b1::/48 390 | 2606:4700:91b2::/48 391 | 2606:4700:91b3::/48 392 | 2606:4700:91b4::/48 393 | 2606:4700:91b5::/48 394 | 2606:4700:91b6::/48 395 | 2606:4700:91b7::/48 396 | 2606:4700:91b8::/48 397 | 2606:4700:91b9::/48 398 | 2606:4700:91ba::/48 399 | 2606:4700:91bb::/48 400 | 2606:4700:91bc::/48 401 | 2606:4700:91bd::/48 402 | 2606:4700:91be::/48 403 | 2606:4700:91bf::/48 404 | 2606:4700:9640::/48 405 | 2606:4700:9641::/48 406 | 2606:4700:9642::/48 407 | 2606:4700:9643::/48 408 | 2606:4700:9644::/48 409 | 2606:4700:9645::/48 410 | 2606:4700:9646::/48 411 | 2606:4700:9647::/48 412 | 2606:4700:9648::/48 413 | 2606:4700:9649::/48 414 | 2606:4700:964a::/48 415 | 2606:4700:964b::/48 416 | 2606:4700:964c::/48 417 | 2606:4700:964d::/48 418 | 2606:4700:964e::/48 419 | 2606:4700:964f::/48 420 | 2606:4700:9760::/48 421 | 2606:4700:9761::/48 422 | 2606:4700:9762::/48 423 | 2606:4700:9763::/48 424 | 2606:4700:9764::/48 425 | 2606:4700:9765::/48 426 | 2606:4700:9766::/48 427 | 2606:4700:9767::/48 428 | 2606:4700:9768::/48 429 | 2606:4700:9769::/48 430 | 2606:4700:976a::/48 431 | 2606:4700:976b::/48 432 | 2606:4700:976c::/48 433 | 2606:4700:976d::/48 434 | 2606:4700:976e::/48 435 | 2606:4700:976f::/48 436 | 2606:4700:99e0::/48 437 | 2606:4700:99e1::/48 438 | 2606:4700:99e2::/48 439 | 2606:4700:99e3::/48 440 | 2606:4700:99e4::/48 441 | 2606:4700:99e5::/48 442 | 2606:4700:99e6::/48 443 | 2606:4700:99e7::/48 444 | 2606:4700:99e8::/48 445 | 2606:4700:99e9::/48 446 | 2606:4700:99ea::/48 447 | 2606:4700:99eb::/48 448 | 2606:4700:99ec::/48 449 | 2606:4700:99ed::/48 450 | 2606:4700:99ee::/48 451 | 2606:4700:99ef::/48 452 | 2606:4700:9a60::/48 453 | 2606:4700:9a61::/48 454 | 2606:4700:9a62::/48 455 | 2606:4700:9a63::/48 456 | 2606:4700:9a64::/48 457 | 2606:4700:9a65::/48 458 | 2606:4700:9a66::/48 459 | 2606:4700:9a67::/48 460 | 2606:4700:9a68::/48 461 | 2606:4700:9a69::/48 462 | 2606:4700:9a6a::/48 463 | 2606:4700:9a6b::/48 464 | 2606:4700:9a6c::/48 465 | 2606:4700:9a6d::/48 466 | 2606:4700:9a6e::/48 467 | 2606:4700:9a6f::/48 468 | 2606:4700:9a90::/48 469 | 2606:4700:9a91::/48 470 | 2606:4700:9a92::/48 471 | 2606:4700:9a93::/48 472 | 2606:4700:9a94::/48 473 | 2606:4700:9a95::/48 474 | 2606:4700:9a96::/48 475 | 2606:4700:9a97::/48 476 | 2606:4700:9a98::/48 477 | 2606:4700:9a99::/48 478 | 2606:4700:9a9a::/48 479 | 2606:4700:9a9b::/48 480 | 2606:4700:9a9c::/48 481 | 2606:4700:9a9d::/48 482 | 2606:4700:9a9e::/48 483 | 2606:4700:9a9f::/48 484 | 2606:4700:9ad0::/48 485 | 2606:4700:9ad1::/48 486 | 2606:4700:9ad2::/48 487 | 2606:4700:9ad3::/48 488 | 2606:4700:9ad4::/48 489 | 2606:4700:9ad5::/48 490 | 2606:4700:9ad6::/48 491 | 2606:4700:9ad7::/48 492 | 2606:4700:9ad8::/48 493 | 2606:4700:9ad9::/48 494 | 2606:4700:9ada::/48 495 | 2606:4700:9adb::/48 496 | 2606:4700:9adc::/48 497 | 2606:4700:9add::/48 498 | 2606:4700:9ade::/48 499 | 2606:4700:9adf::/48 500 | 2606:4700:9ae0::/48 501 | 2606:4700:9ae1::/48 502 | 2606:4700:9ae2::/48 503 | 2606:4700:9ae3::/48 504 | 2606:4700:9ae4::/48 505 | 2606:4700:9ae5::/48 506 | 2606:4700:9ae6::/48 507 | 2606:4700:9ae7::/48 508 | 2606:4700:9ae8::/48 509 | 2606:4700:9ae9::/48 510 | 2606:4700:9aea::/48 511 | 2606:4700:9aeb::/48 512 | 2606:4700:9aec::/48 513 | 2606:4700:9aed::/48 514 | 2606:4700:9aee::/48 515 | 2606:4700:9aef::/48 516 | 2606:4700:9b00::/48 517 | 2606:4700:9b01::/48 518 | 2606:4700:9b02::/48 519 | 2606:4700:9b03::/48 520 | 2606:4700:9b04::/48 521 | 2606:4700:9b05::/48 522 | 2606:4700:9b06::/48 523 | 2606:4700:9b07::/48 524 | 2606:4700:9b08::/48 525 | 2606:4700:9b09::/48 526 | 2606:4700:9b0a::/48 527 | 2606:4700:9b0b::/48 528 | 2606:4700:9b0c::/48 529 | 2606:4700:9b0d::/48 530 | 2606:4700:9b0e::/48 531 | 2606:4700:9b0f::/48 532 | 2606:4700:9c50::/48 533 | 2606:4700:9c51::/48 534 | 2606:4700:9c52::/48 535 | 2606:4700:9c53::/48 536 | 2606:4700:9c54::/48 537 | 2606:4700:9c55::/48 538 | 2606:4700:9c56::/48 539 | 2606:4700:9c57::/48 540 | 2606:4700:9c58::/48 541 | 2606:4700:9c59::/48 542 | 2606:4700:9c5a::/48 543 | 2606:4700:9c5b::/48 544 | 2606:4700:9c5c::/48 545 | 2606:4700:9c5d::/48 546 | 2606:4700:9c5e::/48 547 | 2606:4700:9c5f::/48 548 | 2606:4700:9c60::/48 549 | 2606:4700:9c61::/48 550 | 2606:4700:9c62::/48 551 | 2606:4700:9c63::/48 552 | 2606:4700:9c64::/48 553 | 2606:4700:9c65::/48 554 | 2606:4700:9c66::/48 555 | 2606:4700:9c67::/48 556 | 2606:4700:9c68::/48 557 | 2606:4700:9c69::/48 558 | 2606:4700:9c6a::/48 559 | 2606:4700:9c6b::/48 560 | 2606:4700:9c6c::/48 561 | 2606:4700:9c6d::/48 562 | 2606:4700:9c6e::/48 563 | 2606:4700:9c6f::/48 564 | 2606:4700:a::/48 565 | 2606:4700:a0::/48 566 | 2606:4700:a1::/48 567 | 2606:4700:a9::/48 568 | 2606:4700:b::/48 569 | 2606:4700:c::/48 570 | 2606:4700:c0::/48 571 | 2606:4700:c1::/48 572 | 2606:4700:c2::/48 573 | 2606:4700:c3::/48 574 | 2606:4700:c4::/48 575 | 2606:4700:c5::/48 576 | 2606:4700:c6::/48 577 | 2606:4700:c7::/48 578 | 2606:4700:c8::/48 579 | 2606:4700:c9::/48 580 | 2606:4700:ca::/48 581 | 2606:4700:cb::/48 582 | 2606:4700:cc::/48 583 | 2606:4700:cd::/48 584 | 2606:4700:ce::/48 585 | 2606:4700:cf::/48 586 | 2606:4700:d::/48 587 | 2606:4700:d0::/48 588 | 2606:4700:d1::/48 589 | 2606:4700:e::/48 590 | 2606:4700:e0::/48 591 | 2606:4700:e1::/48 592 | 2606:4700:e2::/48 593 | 2606:4700:e3::/48 594 | 2606:4700:e4::/48 595 | 2606:4700:e5::/48 596 | 2606:4700:e6::/48 597 | 2606:4700:e7::/48 598 | 2606:4700:f::/48 599 | 2606:4700:f0::/48 600 | 2606:4700:f1::/48 601 | 2606:4700:f3::/48 602 | 2606:4700:f4::/48 603 | 2803:f800:50::/48 604 | 2803:f800:51::/48 605 | 2803:f800:52::/48 606 | 2803:f800:53::/48 607 | 2803:f800:54::/48 608 | 2a06:98c1:3100::/48 609 | 2a06:98c1:3101::/48 610 | 2a06:98c1:3102::/48 611 | 2a06:98c1:3103::/48 612 | 2a06:98c1:3104::/48 613 | 2a06:98c1:3105::/48 614 | 2a06:98c1:3106::/48 615 | 2a06:98c1:3107::/48 616 | 2a06:98c1:3108::/48 617 | 2a06:98c1:3109::/48 618 | 2a06:98c1:310a::/48 619 | 2a06:98c1:310b::/48 620 | 2a06:98c1:310c::/48 621 | 2a06:98c1:310d::/48 622 | 2a06:98c1:310e::/48 623 | 2a06:98c1:310f::/48 624 | 2a06:98c1:3120::/48 625 | 2a06:98c1:3121::/48 626 | 2a06:98c1:3122::/48 627 | 2a06:98c1:3123::/48 628 | 2a06:98c1:50::/48 629 | 2a06:98c1:51::/48 630 | 2a06:98c1:52::/48 631 | 2a06:98c1:53::/48 632 | 2a06:98c1:56::/48 633 | 2a06:98c1:58::/48 634 | -------------------------------------------------------------------------------- /cf/locations.json: -------------------------------------------------------------------------------- 1 | [{"iata":"TIA","lat":41.4146995544,"lon":19.7206001282,"cca2":"AL","region":"Europe","city":"Tirana"},{"iata":"ALG","lat":36.6910018921,"lon":3.2154099941,"cca2":"DZ","region":"Africa","city":"Algiers"},{"iata":"AAE","lat":36.85596,"lon":7.79207,"cca2":"DZ","region":"Africa","city":"Annaba"},{"iata":"ORN","lat":35.6911,"lon":-0.6416,"cca2":"DZ","region":"Africa","city":"Oran"},{"iata":"LAD","lat":-8.8583698273,"lon":13.2312002182,"cca2":"AO","region":"Africa","city":"Luanda"},{"iata":"EZE","lat":-34.8222,"lon":-58.5358,"cca2":"AR","region":"South America","city":"Buenos Aires"},{"iata":"COR","lat":-31.31,"lon":-64.208333,"cca2":"AR","region":"South America","city":"Córdoba"},{"iata":"NQN","lat":-38.9490013123,"lon":-68.1557006836,"cca2":"AR","region":"South America","city":"Neuquen"},{"iata":"EVN","lat":40.1473007202,"lon":44.3959007263,"cca2":"AM","region":"Middle East","city":"Yerevan"},{"iata":"ADL","lat":-34.9431729,"lon":138.5335637,"cca2":"AU","region":"Oceania","city":"Adelaide"},{"iata":"BNE","lat":-27.3841991425,"lon":153.117004394,"cca2":"AU","region":"Oceania","city":"Brisbane"},{"iata":"CBR","lat":-35.3069000244,"lon":149.1950073242,"cca2":"AU","region":"Oceania","city":"Canberra"},{"iata":"HBA","lat":-42.883209,"lon":147.331665,"cca2":"AU","region":"Oceania","city":"Hobart"},{"iata":"MEL","lat":-37.6733016968,"lon":144.843002319,"cca2":"AU","region":"Oceania","city":"Melbourne"},{"iata":"PER","lat":-31.9402999878,"lon":115.967002869,"cca2":"AU","region":"Oceania","city":"Perth"},{"iata":"SYD","lat":-33.9460983276,"lon":151.177001953,"cca2":"AU","region":"Oceania","city":"Sydney"},{"iata":"VIE","lat":48.1102981567,"lon":16.5697002411,"cca2":"AT","region":"Europe","city":"Vienna"},{"iata":"LLK","lat":38.7463989258,"lon":48.8180007935,"cca2":"AZ","region":"Middle East","city":"Astara"},{"iata":"GYD","lat":40.4674987793,"lon":50.0466995239,"cca2":"AZ","region":"Middle East","city":"Baku"},{"iata":"BAH","lat":26.2707996368,"lon":50.6335983276,"cca2":"BH","region":"Middle East","city":"Manama"},{"iata":"CGP","lat":22.2495995,"lon":91.8133011,"cca2":"BD","region":"Asia Pacific","city":"Chittagong"},{"iata":"DAC","lat":23.843347,"lon":90.397783,"cca2":"BD","region":"Asia Pacific","city":"Dhaka"},{"iata":"JSR","lat":23.1837997437,"lon":89.1607971191,"cca2":"BD","region":"Asia Pacific","city":"Jashore"},{"iata":"BGI","lat":13.103562,"lon":-59.603226,"cca2":"BB","region":"North America","city":"Bridgetown"},{"iata":"MSQ","lat":53.9006,"lon":27.599,"cca2":"BY","region":"Europe","city":"Minsk"},{"iata":"BRU","lat":50.9014015198,"lon":4.4844398499,"cca2":"BE","region":"Europe","city":"Brussels"},{"iata":"PBH","lat":27.4712,"lon":89.6339,"cca2":"BT","region":"Asia Pacific","city":"Thimphu"},{"iata":"LPB","lat":-16.4897,"lon":-68.1193,"cca2":"BO","region":"South America","city":"La Paz"},{"iata":"GBE","lat":-24.6282,"lon":25.9231,"cca2":"BW","region":"Africa","city":"Gaborone"},{"iata":"QWJ","lat":-22.738,"lon":-47.334,"cca2":"BR","region":"South America","city":"Americana"},{"iata":"ARU","lat":-21.1413002014,"lon":-50.4247016907,"cca2":"BR","region":"South America","city":"Aracatuba"},{"iata":"BEL","lat":-1.4563,"lon":-48.5013,"cca2":"BR","region":"South America","city":"Belém"},{"iata":"CNF","lat":-19.624444,"lon":-43.971944,"cca2":"BR","region":"South America","city":"Belo Horizonte"},{"iata":"BNU","lat":-26.89245,"lon":-49.07696,"cca2":"BR","region":"South America","city":"Blumenau"},{"iata":"BSB","lat":-15.79824,"lon":-47.90859,"cca2":"BR","region":"South America","city":"Brasilia"},{"iata":"CFC","lat":-26.7762,"lon":-51.0125,"cca2":"BR","region":"South America","city":"Cacador"},{"iata":"VCP","lat":-22.90662,"lon":-47.08576,"cca2":"BR","region":"South America","city":"Campinas"},{"iata":"CAW","lat":-21.698299408,"lon":-41.301700592,"cca2":"BR","region":"South America","city":"Campos dos Goytacazes"},{"iata":"XAP","lat":-27.1341991425,"lon":-52.6566009521,"cca2":"BR","region":"South America","city":"Chapeco"},{"iata":"CGB","lat":-15.59611,"lon":-56.09667,"cca2":"BR","region":"South America","city":"Cuiaba"},{"iata":"CWB","lat":-25.5284996033,"lon":-49.1758003235,"cca2":"BR","region":"South America","city":"Curitiba"},{"iata":"FLN","lat":-27.6702785492,"lon":-48.5525016785,"cca2":"BR","region":"South America","city":"Florianopolis"},{"iata":"FOR","lat":-3.7762799263,"lon":-38.5326004028,"cca2":"BR","region":"South America","city":"Fortaleza"},{"iata":"GYN","lat":-16.69727,"lon":-49.26851,"cca2":"BR","region":"South America","city":"Goiania"},{"iata":"ITJ","lat":-27.6116676331,"lon":-48.6727790833,"cca2":"BR","region":"South America","city":"Itajai"},{"iata":"JOI","lat":-26.304408,"lon":-48.846383,"cca2":"BR","region":"South America","city":"Joinville"},{"iata":"JDO","lat":-7.2242,"lon":-39.313,"cca2":"BR","region":"South America","city":"Juazeiro do Norte"},{"iata":"MAO","lat":-3.11286,"lon":-60.01949,"cca2":"BR","region":"South America","city":"Manaus"},{"iata":"PMW","lat":-10.2915000916,"lon":-48.3569984436,"cca2":"BR","region":"South America","city":"Palmas"},{"iata":"POA","lat":-29.9944000244,"lon":-51.1713981628,"cca2":"BR","region":"South America","city":"Porto Alegre"},{"iata":"REC","lat":-8.1264896393,"lon":-34.9235992432,"cca2":"BR","region":"South America","city":"Recife"},{"iata":"RAO","lat":-21.1363887787,"lon":-47.7766685486,"cca2":"BR","region":"South America","city":"Ribeirao Preto"},{"iata":"GIG","lat":-22.8099994659,"lon":-43.2505569458,"cca2":"BR","region":"South America","city":"Rio de Janeiro"},{"iata":"SSA","lat":-12.9086112976,"lon":-38.3224983215,"cca2":"BR","region":"South America","city":"Salvador"},{"iata":"SJP","lat":-20.807157,"lon":-49.378994,"cca2":"BR","region":"South America","city":"São José do Rio Preto"},{"iata":"SJK","lat":-23.1791,"lon":-45.8872,"cca2":"BR","region":"South America","city":"São José dos Campos"},{"iata":"GRU","lat":-23.4355564117,"lon":-46.4730567932,"cca2":"BR","region":"South America","city":"São Paulo"},{"iata":"SOD","lat":-23.54389,"lon":-46.63445,"cca2":"BR","region":"South America","city":"Sorocaba"},{"iata":"NVT","lat":-26.8251,"lon":-49.2695,"cca2":"BR","region":"South America","city":"Timbo"},{"iata":"UDI","lat":-18.8836116791,"lon":-48.225276947,"cca2":"BR","region":"South America","city":"Uberlandia"},{"iata":"VIX","lat":-20.64871,"lon":-41.90857,"cca2":"BR","region":"South America","city":"Vitoria"},{"iata":"BWN","lat":4.903052,"lon":114.939819,"cca2":"BN","region":"Asia Pacific","city":"Bandar Seri Begawan"},{"iata":"SOF","lat":42.6966934204,"lon":23.4114360809,"cca2":"BG","region":"Europe","city":"Sofia"},{"iata":"OUA","lat":12.3531999588,"lon":-1.5124200583,"cca2":"BF","region":"Africa","city":"Ouagadougou"},{"iata":"PNH","lat":11.5466003418,"lon":104.84400177,"cca2":"KH","region":"Asia Pacific","city":"Phnom Penh"},{"iata":"YYC","lat":51.113899231,"lon":-114.019996643,"cca2":"CA","region":"North America","city":"Calgary"},{"iata":"YVR","lat":49.193901062,"lon":-123.183998108,"cca2":"CA","region":"North America","city":"Vancouver"},{"iata":"YWG","lat":49.9099998474,"lon":-97.2398986816,"cca2":"CA","region":"North America","city":"Winnipeg"},{"iata":"YHZ","lat":44.64601,"lon":-63.66844,"cca2":"CA","region":"North America","city":"Halifax"},{"iata":"YOW","lat":45.3224983215,"lon":-75.6691970825,"cca2":"CA","region":"North America","city":"Ottawa"},{"iata":"YYZ","lat":43.6772003174,"lon":-79.6305999756,"cca2":"CA","region":"North America","city":"Toronto"},{"iata":"YUL","lat":45.4706001282,"lon":-73.7407989502,"cca2":"CA","region":"North America","city":"Montréal"},{"iata":"YXE","lat":52.1707992554,"lon":-106.699996948,"cca2":"CA","region":"North America","city":"Saskatoon"},{"iata":"ARI","lat":-18.348611,"lon":-70.338889,"cca2":"CL","region":"South America","city":"Arica"},{"iata":"SCL","lat":-33.3930015564,"lon":-70.7857971191,"cca2":"CL","region":"South America","city":"Santiago"},{"iata":"BAQ","lat":10.8896,"lon":-74.7808,"cca2":"CO","region":"South America","city":"Barranquilla"},{"iata":"BOG","lat":4.70159,"lon":-74.1469,"cca2":"CO","region":"South America","city":"Bogota"},{"iata":"MDE","lat":6.16454,"lon":-75.4231,"cca2":"CO","region":"South America","city":"Medellín"},{"iata":"FIH","lat":-4.3857498169,"lon":15.4446001053,"cca2":"CD","region":"Africa","city":"Kinshasa"},{"iata":"SJO","lat":9.9938602448,"lon":-84.2088012695,"cca2":"CR","region":"South America","city":"San José"},{"iata":"ABJ","lat":5.292598,"lon":-3.999133,"cca2":"CI","region":"Africa","city":"Abidjan"},{"iata":"ASK","lat":6.842178,"lon":-5.259932,"cca2":"CI","region":"Africa","city":"Yamoussoukro"},{"iata":"ZAG","lat":45.7429008484,"lon":16.0687999725,"cca2":"HR","region":"Europe","city":"Zagreb"},{"iata":"LCA","lat":34.8750991821,"lon":33.6249008179,"cca2":"CY","region":"Europe","city":"Nicosia"},{"iata":"PRG","lat":50.1007995605,"lon":14.2600002289,"cca2":"CZ","region":"Europe","city":"Prague"},{"iata":"CPH","lat":55.6179008484,"lon":12.6560001373,"cca2":"DK","region":"Europe","city":"Copenhagen"},{"iata":"JIB","lat":11.5473003387,"lon":43.1595001221,"cca2":"DJ","region":"Africa","city":"Djibouti"},{"iata":"STI","lat":19.4060993195,"lon":-70.6046981812,"cca2":"DO","region":"North America","city":"Santiago de los Caballeros"},{"iata":"SDQ","lat":18.4297008514,"lon":-69.6688995361,"cca2":"DO","region":"North America","city":"Santo Domingo"},{"iata":"GYE","lat":-2.1894,"lon":-79.8891,"cca2":"EC","region":"South America","city":"Guayaquil"},{"iata":"UIO","lat":-0.1291666667,"lon":-78.3575,"cca2":"EC","region":"South America","city":"Quito"},{"iata":"CAI","lat":30.1219005585,"lon":31.4055995941,"cca2":"EG","region":"Africa","city":"Cairo"},{"iata":"TLL","lat":59.4132995605,"lon":24.8327999115,"cca2":"EE","region":"Europe","city":"Tallinn"},{"iata":"SUV","lat":-18.11319,"lon":178.43859,"cca2":"FJ","region":"Oceania","city":"Suva"},{"iata":"HEL","lat":60.317199707,"lon":24.963300705,"cca2":"FI","region":"Europe","city":"Helsinki"},{"iata":"BOD","lat":44.82946,"lon":-0.58355,"cca2":"FR","region":"Europe","city":"Bordeaux"},{"iata":"LYS","lat":45.7263,"lon":5.0908,"cca2":"FR","region":"Europe","city":"Lyon"},{"iata":"MRS","lat":43.439271922,"lon":5.2214241028,"cca2":"FR","region":"Europe","city":"Marseille"},{"iata":"CDG","lat":49.0127983093,"lon":2.5499999523,"cca2":"FR","region":"Europe","city":"Paris"},{"iata":"PPT","lat":-17.5536994934,"lon":-149.606994629,"cca2":"PF","region":"Oceania","city":"Tahiti"},{"iata":"TBS","lat":41.6692008972,"lon":44.95470047,"cca2":"GE","region":"Europe","city":"Tbilisi"},{"iata":"TXL","lat":52.5597000122,"lon":13.2876996994,"cca2":"DE","region":"Europe","city":"Berlin"},{"iata":"DUS","lat":51.2895011902,"lon":6.7667798996,"cca2":"DE","region":"Europe","city":"Düsseldorf"},{"iata":"FRA","lat":50.0264015198,"lon":8.543129921,"cca2":"DE","region":"Europe","city":"Frankfurt"},{"iata":"HAM","lat":53.6304016113,"lon":9.9882297516,"cca2":"DE","region":"Europe","city":"Hamburg"},{"iata":"MUC","lat":48.3538017273,"lon":11.7861003876,"cca2":"DE","region":"Europe","city":"Munich"},{"iata":"STR","lat":48.783333,"lon":9.183333,"cca2":"DE","region":"Europe","city":"Stuttgart"},{"iata":"ACC","lat":5.614818,"lon":-0.205874,"cca2":"GH","region":"Africa","city":"Accra"},{"iata":"ATH","lat":37.9364013672,"lon":23.9444999695,"cca2":"GR","region":"Europe","city":"Athens"},{"iata":"SKG","lat":40.5196990967,"lon":22.9708995819,"cca2":"GR","region":"Europe","city":"Thessaloniki"},{"iata":"GND","lat":12.007116,"lon":-61.7882288,"cca2":"GD","region":"South America","city":"St. George's"},{"iata":"GUM","lat":13.4834003448,"lon":144.796005249,"cca2":"GU","region":"Asia Pacific","city":"Hagatna"},{"iata":"GUA","lat":14.5832996368,"lon":-90.5274963379,"cca2":"GT","region":"North America","city":"Guatemala City"},{"iata":"GEO","lat":6.825648,"lon":-58.163756,"cca2":"GY","region":"South America","city":"Georgetown"},{"iata":"TGU","lat":14.0608,"lon":-87.2172,"cca2":"HN","region":"South America","city":"Tegucigalpa"},{"iata":"HKG","lat":22.3089008331,"lon":113.915000916,"cca2":"HK","region":"Asia Pacific","city":"Hong Kong"},{"iata":"BUD","lat":47.4369010925,"lon":19.2555999756,"cca2":"HU","region":"Europe","city":"Budapest"},{"iata":"KEF","lat":63.9850006104,"lon":-22.6056003571,"cca2":"IS","region":"Europe","city":"Reykjavík"},{"iata":"AMD","lat":23.0225,"lon":72.5714,"cca2":"IN","region":"Asia Pacific","city":"Ahmedabad"},{"iata":"BLR","lat":13.7835719,"lon":76.6165937,"cca2":"IN","region":"Asia Pacific","city":"Bangalore"},{"iata":"BBI","lat":20.2961,"lon":85.8245,"cca2":"IN","region":"Asia Pacific","city":"Bhubaneswar"},{"iata":"IXC","lat":30.673500061,"lon":76.7884979248,"cca2":"IN","region":"Asia Pacific","city":"Chandigarh"},{"iata":"MAA","lat":12.9900054932,"lon":80.1692962646,"cca2":"IN","region":"Asia Pacific","city":"Chennai"},{"iata":"HYD","lat":17.2313175201,"lon":78.4298553467,"cca2":"IN","region":"Asia Pacific","city":"Hyderabad"},{"iata":"CNN","lat":11.915858,"lon":75.55094,"cca2":"IN","region":"Asia Pacific","city":"Kannur"},{"iata":"KNU","lat":26.4499,"lon":80.3319,"cca2":"IN","region":"Asia Pacific","city":"Kanpur"},{"iata":"COK","lat":9.9312,"lon":76.2673,"cca2":"IN","region":"Asia Pacific","city":"Kochi"},{"iata":"CCU","lat":22.6476933,"lon":88.4349249,"cca2":"IN","region":"Asia Pacific","city":"Kolkata"},{"iata":"BOM","lat":19.0886993408,"lon":72.8678970337,"cca2":"IN","region":"Asia Pacific","city":"Mumbai"},{"iata":"NAG","lat":21.1610714,"lon":79.0024702,"cca2":"IN","region":"Asia Pacific","city":"Nagpur"},{"iata":"DEL","lat":28.5664997101,"lon":77.1031036377,"cca2":"IN","region":"Asia Pacific","city":"New Delhi"},{"iata":"PAT","lat":25.591299057,"lon":85.0879974365,"cca2":"IN","region":"Asia Pacific","city":"Patna"},{"iata":"DPS","lat":-8.748169899,"lon":115.1669998169,"cca2":"ID","region":"Asia Pacific","city":"Denpasar"},{"iata":"CGK","lat":-6.1275229,"lon":106.6515118,"cca2":"ID","region":"Asia Pacific","city":"Jakarta"},{"iata":"JOG","lat":-7.7881798744,"lon":110.4319992065,"cca2":"ID","region":"Asia Pacific","city":"Yogyakarta"},{"iata":"BGW","lat":33.2625007629,"lon":44.2346000671,"cca2":"IQ","region":"Middle East","city":"Baghdad"},{"iata":"BSR","lat":30.5491008759,"lon":47.6621017456,"cca2":"IQ","region":"Middle East","city":"Basra"},{"iata":"EBL","lat":36.1901,"lon":43.993,"cca2":"IQ","region":"Middle East","city":"Erbil"},{"iata":"NJF","lat":31.989722,"lon":44.404167,"cca2":"IQ","region":"Middle East","city":"Najaf"},{"iata":"XNH","lat":30.9358005524,"lon":46.0900993347,"cca2":"IQ","region":"Middle East","city":"Nasiriyah"},{"iata":"ISU","lat":35.5668,"lon":45.4161,"cca2":"IQ","region":"Middle East","city":"Sulaymaniyah"},{"iata":"ORK","lat":51.8413009644,"lon":-8.491109848,"cca2":"IE","region":"Europe","city":"Cork"},{"iata":"DUB","lat":53.4212989807,"lon":-6.270070076,"cca2":"IE","region":"Europe","city":"Dublin"},{"iata":"HFA","lat":32.78492,"lon":34.96069,"cca2":"IL","region":"Middle East","city":"Haifa"},{"iata":"TLV","lat":32.0113983154,"lon":34.8866996765,"cca2":"IL","region":"Middle East","city":"Tel Aviv"},{"iata":"MXP","lat":45.6305999756,"lon":8.7281103134,"cca2":"IT","region":"Europe","city":"Milan"},{"iata":"PMO","lat":38.16114,"lon":13.31546,"cca2":"IT","region":"Europe","city":"Palermo"},{"iata":"FCO","lat":41.8045005798,"lon":12.2508001328,"cca2":"IT","region":"Europe","city":"Rome"},{"iata":"KIN","lat":17.9951,"lon":-76.7846,"cca2":"JM","region":"North America","city":"Kingston"},{"iata":"FUK","lat":33.5902,"lon":130.4017,"cca2":"JP","region":"Asia Pacific","city":"Fukuoka"},{"iata":"OKA","lat":26.1958,"lon":127.646,"cca2":"JP","region":"Asia Pacific","city":"Naha"},{"iata":"KIX","lat":34.4272994995,"lon":135.244003296,"cca2":"JP","region":"Asia Pacific","city":"Osaka"},{"iata":"NRT","lat":35.7647018433,"lon":140.386001587,"cca2":"JP","region":"Asia Pacific","city":"Tokyo"},{"iata":"AMM","lat":31.7226009369,"lon":35.9931983948,"cca2":"JO","region":"Middle East","city":"Amman"},{"iata":"ALA","lat":43.3521003723,"lon":77.0404968262,"cca2":"KZ","region":"Asia Pacific","city":"Almaty"},{"iata":"NQZ","lat":51.167801,"lon":71.418893,"cca2":"KZ","region":"Asia Pacific","city":"ASTANA"},{"iata":"MBA","lat":-4.0348300934,"lon":39.5942001343,"cca2":"KE","region":"Africa","city":"Mombasa"},{"iata":"NBO","lat":-1.319239974,"lon":36.9277992249,"cca2":"KE","region":"Africa","city":"Nairobi"},{"iata":"ICN","lat":37.4691009521,"lon":126.450996399,"cca2":"KR","region":"Asia Pacific","city":"Seoul"},{"iata":"KWI","lat":29.226600647,"lon":47.9688987732,"cca2":"KW","region":"Middle East","city":"Kuwait City"},{"iata":"VTE","lat":17.9757,"lon":102.5683,"cca2":"LA","region":"Asia Pacific","city":"Vientiane"},{"iata":"RIX","lat":56.9235992432,"lon":23.9710998535,"cca2":"LV","region":"Europe","city":"Riga"},{"iata":"BEY","lat":33.8208999634,"lon":35.4883995056,"cca2":"LB","region":"Middle East","city":"Beirut"},{"iata":"VNO","lat":54.6341018677,"lon":25.2858009338,"cca2":"LT","region":"Europe","city":"Vilnius"},{"iata":"LUX","lat":49.6265983582,"lon":6.211520195,"cca2":"LU","region":"Europe","city":"Luxembourg City"},{"iata":"MFM","lat":22.1495990753,"lon":113.592002869,"cca2":"MO","region":"Asia Pacific","city":"Macau"},{"iata":"TNR","lat":-18.91368,"lon":47.53613,"cca2":"MG","region":"Africa","city":"Antananarivo"},{"iata":"JHB","lat":1.635848,"lon":103.665943,"cca2":"MY","region":"Asia Pacific","city":"Johor Bahru"},{"iata":"KUL","lat":2.745579958,"lon":101.709999084,"cca2":"MY","region":"Asia Pacific","city":"Kuala Lumpur"},{"iata":"MLE","lat":4.1748,"lon":73.50888,"cca2":"MV","region":"Asia Pacific","city":"Male"},{"iata":"MRU","lat":-20.4302005768,"lon":57.6836013794,"cca2":"MU","region":"Africa","city":"Port Louis"},{"iata":"GDL","lat":20.5217990875,"lon":-103.3109970093,"cca2":"MX","region":"North America","city":"Guadalajara"},{"iata":"MEX","lat":19.4363002777,"lon":-99.0720977783,"cca2":"MX","region":"North America","city":"Mexico City"},{"iata":"QRO","lat":20.6173000336,"lon":-100.185997009,"cca2":"MX","region":"North America","city":"Queretaro"},{"iata":"KIV","lat":46.9277000427,"lon":28.9309997559,"cca2":"MD","region":"Europe","city":"Chișinău"},{"iata":"ULN","lat":47.8431015015,"lon":106.766998291,"cca2":"MN","region":"Asia Pacific","city":"Ulaanbaatar"},{"iata":"CMN","lat":33.3675003052,"lon":-7.5899701118,"cca2":"MA","region":"Africa","city":"Casablanca"},{"iata":"MPM","lat":-25.9207992554,"lon":32.5726013184,"cca2":"MZ","region":"Africa","city":"Maputo"},{"iata":"MDL","lat":21.7051697,"lon":95.9695206,"cca2":"MM","region":"Asia Pacific","city":"Mandalay"},{"iata":"RGN","lat":16.9073009491,"lon":96.1332015991,"cca2":"MM","region":"Asia Pacific","city":"Yangon"},{"iata":"WDH","lat":-22.565587,"lon":17.085334,"cca2":"NA","region":"Africa","city":"Windhoek"},{"iata":"KTM","lat":27.6965999603,"lon":85.3591003418,"cca2":"NP","region":"Asia Pacific","city":"Kathmandu"},{"iata":"AMS","lat":52.3086013794,"lon":4.7638897896,"cca2":"NL","region":"Europe","city":"Amsterdam"},{"iata":"NOU","lat":-22.0146007538,"lon":166.212997436,"cca2":"NC","region":"Oceania","city":"Noumea"},{"iata":"AKL","lat":-37.0080986023,"lon":174.792007446,"cca2":"NZ","region":"Oceania","city":"Auckland"},{"iata":"CHC","lat":-43.4893989563,"lon":172.5319976807,"cca2":"NZ","region":"Oceania","city":"Christchurch"},{"iata":"LOS","lat":6.5773701668,"lon":3.321160078,"cca2":"NG","region":"Africa","city":"Lagos"},{"iata":"SKP","lat":41.9616012573,"lon":21.6214008331,"cca2":"MK","region":"Europe","city":"Skopje"},{"iata":"OSL","lat":60.193901062,"lon":11.100399971,"cca2":"NO","region":"Europe","city":"Oslo"},{"iata":"MCT","lat":23.5932998657,"lon":58.2844009399,"cca2":"OM","region":"Middle East","city":"Muscat"},{"iata":"ISB","lat":33.6166992188,"lon":73.0991973877,"cca2":"PK","region":"Asia Pacific","city":"Islamabad"},{"iata":"KHI","lat":24.9064998627,"lon":67.1607971191,"cca2":"PK","region":"Asia Pacific","city":"Karachi"},{"iata":"LHE","lat":31.5216007233,"lon":74.4036026001,"cca2":"PK","region":"Asia Pacific","city":"Lahore"},{"iata":"ZDM","lat":32.2719,"lon":35.0194,"cca2":"PS","region":"Middle East","city":"Ramallah"},{"iata":"PTY","lat":9.0713596344,"lon":-79.3834991455,"cca2":"PA","region":"South America","city":"Panama City"},{"iata":"ASU","lat":-25.2399997711,"lon":-57.5200004578,"cca2":"PY","region":"South America","city":"Asunción"},{"iata":"LIM","lat":-12.021900177,"lon":-77.1143035889,"cca2":"PE","region":"South America","city":"Lima"},{"iata":"CGY","lat":8.4156198502,"lon":124.611000061,"cca2":"PH","region":"Asia Pacific","city":"Cagayan de Oro"},{"iata":"CEB","lat":10.3074998856,"lon":123.978996277,"cca2":"PH","region":"Asia Pacific","city":"Cebu"},{"iata":"MNL","lat":14.508600235,"lon":121.019996643,"cca2":"PH","region":"Asia Pacific","city":"Manila"},{"iata":"CRK","lat":15.1859,"lon":120.5599,"cca2":"PH","region":"Asia Pacific","city":"Tarlac City"},{"iata":"WAW","lat":52.1656990051,"lon":20.9671001434,"cca2":"PL","region":"Europe","city":"Warsaw"},{"iata":"LIS","lat":38.7812995911,"lon":-9.1359195709,"cca2":"PT","region":"Europe","city":"Lisbon"},{"iata":"SJU","lat":18.411391,"lon":-66.102793,"cca2":"PR","region":"North America","city":"San Juan"},{"iata":"DOH","lat":25.2605946,"lon":51.6137665,"cca2":"QA","region":"Middle East","city":"Doha"},{"iata":"RUN","lat":-20.8871002197,"lon":55.5102996826,"cca2":"RE","region":"Africa","city":"Saint-Denis"},{"iata":"OTP","lat":44.5722007751,"lon":26.1021995544,"cca2":"RO","region":"Europe","city":"Bucharest"},{"iata":"KJA","lat":56.0153,"lon":92.8932,"cca2":"RU","region":"Asia Pacific","city":"Krasnoyarsk"},{"iata":"DME","lat":55.4087982178,"lon":37.9062995911,"cca2":"RU","region":"Europe","city":"Moscow"},{"iata":"LED","lat":59.8003005981,"lon":30.2625007629,"cca2":"RU","region":"Europe","city":"Saint Petersburg"},{"iata":"KLD","lat":56.8587,"lon":35.9176,"cca2":"RU","region":"Europe","city":"Tver"},{"iata":"SVX","lat":56.8431,"lon":60.6454,"cca2":"RU","region":"Asia Pacific","city":"Yekaterinburg"},{"iata":"KGL","lat":-1.9686299563,"lon":30.1394996643,"cca2":"RW","region":"Africa","city":"Kigali"},{"iata":"DMM","lat":26.471200943,"lon":49.7979011536,"cca2":"SA","region":"Middle East","city":"Dammam"},{"iata":"JED","lat":21.679599762,"lon":39.15650177,"cca2":"SA","region":"Middle East","city":"Jeddah"},{"iata":"RUH","lat":24.9575996399,"lon":46.6987991333,"cca2":"SA","region":"Middle East","city":"Riyadh"},{"iata":"DKR","lat":14.7412099,"lon":-17.4889771,"cca2":"SN","region":"Africa","city":"Dakar"},{"iata":"BEG","lat":44.8184013367,"lon":20.3090991974,"cca2":"RS","region":"Europe","city":"Belgrade"},{"iata":"SIN","lat":1.3501900434,"lon":103.994003296,"cca2":"SG","region":"Asia Pacific","city":"Singapore"},{"iata":"BTS","lat":48.1486,"lon":17.1077,"cca2":"SK","region":"Europe","city":"Bratislava"},{"iata":"CPT","lat":-33.9648017883,"lon":18.6016998291,"cca2":"ZA","region":"Africa","city":"Cape Town"},{"iata":"DUR","lat":-29.6144444444,"lon":31.1197222222,"cca2":"ZA","region":"Africa","city":"Durban"},{"iata":"JNB","lat":-26.133333,"lon":28.25,"cca2":"ZA","region":"Africa","city":"Johannesburg"},{"iata":"BCN","lat":41.2971000671,"lon":2.0784599781,"cca2":"ES","region":"Europe","city":"Barcelona"},{"iata":"MAD","lat":40.4936,"lon":-3.56676,"cca2":"ES","region":"Europe","city":"Madrid"},{"iata":"CMB","lat":7.1807599068,"lon":79.8841018677,"cca2":"LK","region":"Asia Pacific","city":"Colombo"},{"iata":"PBM","lat":5.452831,"lon":-55.187783,"cca2":"SR","region":"South America","city":"Paramaribo"},{"iata":"GOT","lat":57.6627998352,"lon":12.279800415,"cca2":"SE","region":"Europe","city":"Gothenburg"},{"iata":"ARN","lat":59.6519012451,"lon":17.9186000824,"cca2":"SE","region":"Europe","city":"Stockholm"},{"iata":"GVA","lat":46.2380981445,"lon":6.1089501381,"cca2":"CH","region":"Europe","city":"Geneva"},{"iata":"ZRH","lat":47.4646987915,"lon":8.5491695404,"cca2":"CH","region":"Europe","city":"Zurich"},{"iata":"KHH","lat":22.5771007538,"lon":120.3499984741,"cca2":"TW","region":"Asia Pacific","city":"Kaohsiung City"},{"iata":"TPE","lat":25.0776996613,"lon":121.233001709,"cca2":"TW","region":"Asia Pacific","city":"Taipei"},{"iata":"DAR","lat":-6.8781099319,"lon":39.2025985718,"cca2":"TZ","region":"Africa","city":"Dar es Salaam"},{"iata":"BKK","lat":13.6810998917,"lon":100.747001648,"cca2":"TH","region":"Asia Pacific","city":"Bangkok"},{"iata":"CNX","lat":18.7667999268,"lon":98.962600708,"cca2":"TH","region":"Asia Pacific","city":"Chiang Mai"},{"iata":"URT","lat":9.1325998306,"lon":99.135597229,"cca2":"TH","region":"Asia Pacific","city":"Surat Thani"},{"iata":"POS","lat":10.5953998566,"lon":-61.3372001648,"cca2":"TT","region":"South America","city":"Port of Spain"},{"iata":"TUN","lat":36.8510017395,"lon":10.2271995544,"cca2":"TN","region":"Africa","city":"Tunis"},{"iata":"IST","lat":40.9768981934,"lon":28.8145999908,"cca2":"TR","region":"Europe","city":"Istanbul"},{"iata":"ADB","lat":38.32377,"lon":27.14317,"cca2":"TR","region":"Europe","city":"Izmir"},{"iata":"EBB","lat":0.3152,"lon":32.5816,"cca2":"UG","region":"Africa","city":"KAMPALA"},{"iata":"KBP","lat":50.3450012207,"lon":30.8946990967,"cca2":"UA","region":"Europe","city":"Kyiv"},{"iata":"DXB","lat":25.2527999878,"lon":55.3643989563,"cca2":"AE","region":"Middle East","city":"Dubai"},{"iata":"EDI","lat":55.9500007629,"lon":-3.3724999428,"cca2":"GB","region":"Europe","city":"Edinburgh"},{"iata":"LHR","lat":51.4706001282,"lon":-0.4619410038,"cca2":"GB","region":"Europe","city":"London"},{"iata":"MAN","lat":53.3536987305,"lon":-2.2749500275,"cca2":"GB","region":"Europe","city":"Manchester"},{"iata":"MGM","lat":32.30059814,"lon":-86.39399719,"cca2":"US","region":"North America","city":"Montgomery"},{"iata":"ANC","lat":61.158555,"lon":-149.890208,"cca2":"US","region":"North America","city":"Anchorage"},{"iata":"PHX","lat":33.434299469,"lon":-112.012001038,"cca2":"US","region":"North America","city":"Phoenix"},{"iata":"LAX","lat":33.94250107,"lon":-118.4079971,"cca2":"US","region":"North America","city":"Los Angeles"},{"iata":"SMF","lat":38.695400238,"lon":-121.591003418,"cca2":"US","region":"North America","city":"Sacramento"},{"iata":"SAN","lat":32.7336006165,"lon":-117.190002441,"cca2":"US","region":"North America","city":"San Diego"},{"iata":"SFO","lat":37.6189994812,"lon":-122.375,"cca2":"US","region":"North America","city":"San Francisco"},{"iata":"SJC","lat":37.3625984192,"lon":-121.929000855,"cca2":"US","region":"North America","city":"San Jose"},{"iata":"DEN","lat":39.8616981506,"lon":-104.672996521,"cca2":"US","region":"North America","city":"Denver"},{"iata":"JAX","lat":30.4941005707,"lon":-81.6878967285,"cca2":"US","region":"North America","city":"Jacksonville"},{"iata":"MIA","lat":25.7931995392,"lon":-80.2906036377,"cca2":"US","region":"North America","city":"Miami"},{"iata":"TLH","lat":30.3964996338,"lon":-84.3503036499,"cca2":"US","region":"North America","city":"Tallahassee"},{"iata":"TPA","lat":27.9755001068,"lon":-82.533203125,"cca2":"US","region":"North America","city":"Tampa"},{"iata":"ATL","lat":33.6366996765,"lon":-84.4281005859,"cca2":"US","region":"North America","city":"Atlanta"},{"iata":"HNL","lat":21.3187007904,"lon":-157.9219970703,"cca2":"US","region":"North America","city":"Honolulu"},{"iata":"ORD","lat":41.97859955,"lon":-87.90480042,"cca2":"US","region":"North America","city":"Chicago"},{"iata":"IND","lat":39.717300415,"lon":-86.2944030762,"cca2":"US","region":"North America","city":"Indianapolis"},{"iata":"BGR","lat":44.8081,"lon":-68.795,"cca2":"US","region":"North America","city":"Bangor"},{"iata":"BOS","lat":42.36429977,"lon":-71.00520325,"cca2":"US","region":"North America","city":"Boston"},{"iata":"DTW","lat":42.2123985291,"lon":-83.3534011841,"cca2":"US","region":"North America","city":"Detroit"},{"iata":"MSP","lat":44.8819999695,"lon":-93.2218017578,"cca2":"US","region":"North America","city":"Minneapolis"},{"iata":"MCI","lat":39.2975997925,"lon":-94.7138977051,"cca2":"US","region":"North America","city":"Kansas City"},{"iata":"STL","lat":38.7486991882,"lon":-90.3700027466,"cca2":"US","region":"North America","city":"St. Louis"},{"iata":"OMA","lat":41.3031997681,"lon":-95.8940963745,"cca2":"US","region":"North America","city":"Omaha"},{"iata":"LAS","lat":36.08010101,"lon":-115.1520004,"cca2":"US","region":"North America","city":"Las Vegas"},{"iata":"EWR","lat":40.6925010681,"lon":-74.1687011719,"cca2":"US","region":"North America","city":"Newark"},{"iata":"ABQ","lat":35.0844,"lon":-106.6504,"cca2":"US","region":"North America","city":"Albuquerque"},{"iata":"BUF","lat":42.94049835,"lon":-78.73220062,"cca2":"US","region":"North America","city":"Buffalo"},{"iata":"CLT","lat":35.2140007019,"lon":-80.9430999756,"cca2":"US","region":"North America","city":"Charlotte"},{"iata":"RDU","lat":35.93543,"lon":-78.88075,"cca2":"US","region":"North America","city":"Durham"},{"iata":"CLE","lat":41.50069,"lon":-81.68412,"cca2":"US","region":"North America","city":"Cleveland"},{"iata":"CMH","lat":39.9980010986,"lon":-82.8918991089,"cca2":"US","region":"North America","city":"Columbus"},{"iata":"OKC","lat":35.46655,"lon":-97.65373,"cca2":"US","region":"North America","city":"Oklahoma City"},{"iata":"PDX","lat":45.58869934,"lon":-122.5979996,"cca2":"US","region":"North America","city":"Portland"},{"iata":"PHL","lat":39.8718986511,"lon":-75.2410964966,"cca2":"US","region":"North America","city":"Philadelphia"},{"iata":"PIT","lat":40.49150085,"lon":-80.23290253,"cca2":"US","region":"North America","city":"Pittsburgh"},{"iata":"FSD","lat":43.540819819502,"lon":-96.65511577730963,"cca2":"US","region":"North America","city":"Sioux Falls"},{"iata":"MEM","lat":35.0424003601,"lon":-89.9766998291,"cca2":"US","region":"North America","city":"Memphis"},{"iata":"BNA","lat":36.1245002747,"lon":-86.6781997681,"cca2":"US","region":"North America","city":"Nashville"},{"iata":"AUS","lat":30.1975,"lon":-97.6664,"cca2":"US","region":"North America","city":"Austin"},{"iata":"DFW","lat":32.8968009949,"lon":-97.0380020142,"cca2":"US","region":"North America","city":"Dallas"},{"iata":"IAH","lat":29.9843997955,"lon":-95.3414001465,"cca2":"US","region":"North America","city":"Houston"},{"iata":"MFE","lat":26.17580032,"lon":-98.23860168,"cca2":"US","region":"North America","city":"McAllen"},{"iata":"SAT","lat":29.429461,"lon":-98.487061,"cca2":"US","region":"North America","city":"San Antonio"},{"iata":"SLC","lat":40.7883987427,"lon":-111.977996826,"cca2":"US","region":"North America","city":"Salt Lake City"},{"iata":"IAD","lat":38.94449997,"lon":-77.45580292,"cca2":"US","region":"North America","city":"Ashburn"},{"iata":"ORF","lat":36.8945999146,"lon":-76.2012023926,"cca2":"US","region":"North America","city":"Norfolk"},{"iata":"RIC","lat":37.5051994324,"lon":-77.3197021484,"cca2":"US","region":"North America","city":"Richmond"},{"iata":"SEA","lat":47.4490013123,"lon":-122.308998108,"cca2":"US","region":"North America","city":"Seattle"},{"iata":"TAS","lat":41.257900238,"lon":69.2811965942,"cca2":"UZ","region":"Asia Pacific","city":"Tashkent"},{"iata":"DAD","lat":16.02636,"lon":108.20869,"cca2":"VN","region":"Asia Pacific","city":"Da Nang"},{"iata":"HAN","lat":21.221200943,"lon":105.806999206,"cca2":"VN","region":"Asia Pacific","city":"Hanoi"},{"iata":"SGN","lat":10.8187999725,"lon":106.652000427,"cca2":"VN","region":"Asia Pacific","city":"Ho Chi Minh City"},{"iata":"HRE","lat":-17.9318008423,"lon":31.0928001404,"cca2":"ZW","region":"Africa","city":"Harare"}] -------------------------------------------------------------------------------- /cf/mips64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/cf/mips64 -------------------------------------------------------------------------------- /cf/mips64le: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/cf/mips64le -------------------------------------------------------------------------------- /cf/mipsle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yonggekkk/Cloudflare-vless-trojan/719d4224a2f479dce3f669668a7318273a912b10/cf/mipsle -------------------------------------------------------------------------------- /locations.json: -------------------------------------------------------------------------------- 1 | [{"iata":"TIA","lat":41.4146995544,"lon":19.7206001282,"cca2":"AL","region":"Europe","city":"Tirana"},{"iata":"ALG","lat":36.6910018921,"lon":3.2154099941,"cca2":"DZ","region":"Africa","city":"Algiers"},{"iata":"AAE","lat":36.85596,"lon":7.79207,"cca2":"DZ","region":"Africa","city":"Annaba"},{"iata":"ORN","lat":35.6911,"lon":-0.6416,"cca2":"DZ","region":"Africa","city":"Oran"},{"iata":"LAD","lat":-8.8583698273,"lon":13.2312002182,"cca2":"AO","region":"Africa","city":"Luanda"},{"iata":"EZE","lat":-34.8222,"lon":-58.5358,"cca2":"AR","region":"South America","city":"Buenos Aires"},{"iata":"COR","lat":-31.31,"lon":-64.208333,"cca2":"AR","region":"South America","city":"Córdoba"},{"iata":"NQN","lat":-38.9490013123,"lon":-68.1557006836,"cca2":"AR","region":"South America","city":"Neuquen"},{"iata":"EVN","lat":40.1473007202,"lon":44.3959007263,"cca2":"AM","region":"Middle East","city":"Yerevan"},{"iata":"ADL","lat":-34.9431729,"lon":138.5335637,"cca2":"AU","region":"Oceania","city":"Adelaide"},{"iata":"BNE","lat":-27.3841991425,"lon":153.117004394,"cca2":"AU","region":"Oceania","city":"Brisbane"},{"iata":"CBR","lat":-35.3069000244,"lon":149.1950073242,"cca2":"AU","region":"Oceania","city":"Canberra"},{"iata":"HBA","lat":-42.883209,"lon":147.331665,"cca2":"AU","region":"Oceania","city":"Hobart"},{"iata":"MEL","lat":-37.6733016968,"lon":144.843002319,"cca2":"AU","region":"Oceania","city":"Melbourne"},{"iata":"PER","lat":-31.9402999878,"lon":115.967002869,"cca2":"AU","region":"Oceania","city":"Perth"},{"iata":"SYD","lat":-33.9460983276,"lon":151.177001953,"cca2":"AU","region":"Oceania","city":"Sydney"},{"iata":"VIE","lat":48.1102981567,"lon":16.5697002411,"cca2":"AT","region":"Europe","city":"Vienna"},{"iata":"LLK","lat":38.7463989258,"lon":48.8180007935,"cca2":"AZ","region":"Middle East","city":"Astara"},{"iata":"GYD","lat":40.4674987793,"lon":50.0466995239,"cca2":"AZ","region":"Middle East","city":"Baku"},{"iata":"BAH","lat":26.2707996368,"lon":50.6335983276,"cca2":"BH","region":"Middle East","city":"Manama"},{"iata":"CGP","lat":22.2495995,"lon":91.8133011,"cca2":"BD","region":"Asia Pacific","city":"Chittagong"},{"iata":"DAC","lat":23.843347,"lon":90.397783,"cca2":"BD","region":"Asia Pacific","city":"Dhaka"},{"iata":"JSR","lat":23.1837997437,"lon":89.1607971191,"cca2":"BD","region":"Asia Pacific","city":"Jashore"},{"iata":"BGI","lat":13.103562,"lon":-59.603226,"cca2":"BB","region":"North America","city":"Bridgetown"},{"iata":"MSQ","lat":53.9006,"lon":27.599,"cca2":"BY","region":"Europe","city":"Minsk"},{"iata":"BRU","lat":50.9014015198,"lon":4.4844398499,"cca2":"BE","region":"Europe","city":"Brussels"},{"iata":"PBH","lat":27.4712,"lon":89.6339,"cca2":"BT","region":"Asia Pacific","city":"Thimphu"},{"iata":"GBE","lat":-24.6282,"lon":25.9231,"cca2":"BW","region":"Africa","city":"Gaborone"},{"iata":"QWJ","lat":-22.738,"lon":-47.334,"cca2":"BR","region":"South America","city":"Americana"},{"iata":"BEL","lat":-1.4563,"lon":-48.5013,"cca2":"BR","region":"South America","city":"Belém"},{"iata":"CNF","lat":-19.624444,"lon":-43.971944,"cca2":"BR","region":"South America","city":"Belo Horizonte"},{"iata":"BNU","lat":-26.89245,"lon":-49.07696,"cca2":"BR","region":"South America","city":"Blumenau"},{"iata":"BSB","lat":-15.79824,"lon":-47.90859,"cca2":"BR","region":"South America","city":"Brasilia"},{"iata":"CFC","lat":-26.7762,"lon":-51.0125,"cca2":"BR","region":"South America","city":"Cacador"},{"iata":"VCP","lat":-22.90662,"lon":-47.08576,"cca2":"BR","region":"South America","city":"Campinas"},{"iata":"CAW","lat":-21.698299408,"lon":-41.301700592,"cca2":"BR","region":"South America","city":"Campos dos Goytacazes"},{"iata":"XAP","lat":-27.1341991425,"lon":-52.6566009521,"cca2":"BR","region":"South America","city":"Chapeco"},{"iata":"CGB","lat":-15.59611,"lon":-56.09667,"cca2":"BR","region":"South America","city":"Cuiaba"},{"iata":"CWB","lat":-25.5284996033,"lon":-49.1758003235,"cca2":"BR","region":"South America","city":"Curitiba"},{"iata":"FLN","lat":-27.6702785492,"lon":-48.5525016785,"cca2":"BR","region":"South America","city":"Florianopolis"},{"iata":"FOR","lat":-3.7762799263,"lon":-38.5326004028,"cca2":"BR","region":"South America","city":"Fortaleza"},{"iata":"GYN","lat":-16.69727,"lon":-49.26851,"cca2":"BR","region":"South America","city":"Goiania"},{"iata":"ITJ","lat":-27.6116676331,"lon":-48.6727790833,"cca2":"BR","region":"South America","city":"Itajai"},{"iata":"JOI","lat":-26.304408,"lon":-48.846383,"cca2":"BR","region":"South America","city":"Joinville"},{"iata":"JDO","lat":-7.2242,"lon":-39.313,"cca2":"BR","region":"South America","city":"Juazeiro do Norte"},{"iata":"MAO","lat":-3.11286,"lon":-60.01949,"cca2":"BR","region":"South America","city":"Manaus"},{"iata":"POA","lat":-29.9944000244,"lon":-51.1713981628,"cca2":"BR","region":"South America","city":"Porto Alegre"},{"iata":"REC","lat":-8.1264896393,"lon":-34.9235992432,"cca2":"BR","region":"South America","city":"Recife"},{"iata":"RAO","lat":-21.1363887787,"lon":-47.7766685486,"cca2":"BR","region":"South America","city":"Ribeirao Preto"},{"iata":"GIG","lat":-22.8099994659,"lon":-43.2505569458,"cca2":"BR","region":"South America","city":"Rio de Janeiro"},{"iata":"SSA","lat":-12.9086112976,"lon":-38.3224983215,"cca2":"BR","region":"South America","city":"Salvador"},{"iata":"SJP","lat":-20.807157,"lon":-49.378994,"cca2":"BR","region":"South America","city":"São José do Rio Preto"},{"iata":"SJK","lat":-23.1791,"lon":-45.8872,"cca2":"BR","region":"South America","city":"São José dos Campos"},{"iata":"GRU","lat":-23.4355564117,"lon":-46.4730567932,"cca2":"BR","region":"South America","city":"São Paulo"},{"iata":"SOD","lat":-23.54389,"lon":-46.63445,"cca2":"BR","region":"South America","city":"Sorocaba"},{"iata":"NVT","lat":-26.8251,"lon":-49.2695,"cca2":"BR","region":"South America","city":"Timbo"},{"iata":"UDI","lat":-18.8836116791,"lon":-48.225276947,"cca2":"BR","region":"South America","city":"Uberlandia"},{"iata":"VIX","lat":-20.64871,"lon":-41.90857,"cca2":"BR","region":"South America","city":"Vitoria"},{"iata":"BWN","lat":4.903052,"lon":114.939819,"cca2":"BN","region":"Asia Pacific","city":"Bandar Seri Begawan"},{"iata":"SOF","lat":42.6966934204,"lon":23.4114360809,"cca2":"BG","region":"Europe","city":"Sofia"},{"iata":"OUA","lat":12.3531999588,"lon":-1.5124200583,"cca2":"BF","region":"Africa","city":"Ouagadougou"},{"iata":"PNH","lat":11.5466003418,"lon":104.84400177,"cca2":"KH","region":"Asia Pacific","city":"Phnom Penh"},{"iata":"YYC","lat":51.113899231,"lon":-114.019996643,"cca2":"CA","region":"North America","city":"Calgary"},{"iata":"YVR","lat":49.193901062,"lon":-123.183998108,"cca2":"CA","region":"North America","city":"Vancouver"},{"iata":"YWG","lat":49.9099998474,"lon":-97.2398986816,"cca2":"CA","region":"North America","city":"Winnipeg"},{"iata":"YOW","lat":45.3224983215,"lon":-75.6691970825,"cca2":"CA","region":"North America","city":"Ottawa"},{"iata":"YYZ","lat":43.6772003174,"lon":-79.6305999756,"cca2":"CA","region":"North America","city":"Toronto"},{"iata":"YUL","lat":45.4706001282,"lon":-73.7407989502,"cca2":"CA","region":"North America","city":"Montréal"},{"iata":"YXE","lat":52.1707992554,"lon":-106.699996948,"cca2":"CA","region":"North America","city":"Saskatoon"},{"iata":"ARI","lat":-18.348611,"lon":-70.338889,"cca2":"CL","region":"South America","city":"Arica"},{"iata":"SCL","lat":-33.3930015564,"lon":-70.7857971191,"cca2":"CL","region":"South America","city":"Santiago"},{"iata":"BOG","lat":4.70159,"lon":-74.1469,"cca2":"CO","region":"South America","city":"Bogotá"},{"iata":"MDE","lat":6.16454,"lon":-75.4231,"cca2":"CO","region":"South America","city":"Medellín"},{"iata":"FIH","lat":-4.3857498169,"lon":15.4446001053,"cca2":"CD","region":"Africa","city":"Kinshasa"},{"iata":"SJO","lat":9.9938602448,"lon":-84.2088012695,"cca2":"CR","region":"South America","city":"San José"},{"iata":"ZAG","lat":45.7429008484,"lon":16.0687999725,"cca2":"HR","region":"Europe","city":"Zagreb"},{"iata":"CUR","lat":12.1888999939,"lon":-68.9598007202,"cca2":"CW","region":"North America","city":"Willemstad"},{"iata":"LCA","lat":34.8750991821,"lon":33.6249008179,"cca2":"CY","region":"Europe","city":"Nicosia"},{"iata":"PRG","lat":50.1007995605,"lon":14.2600002289,"cca2":"CZ","region":"Europe","city":"Prague"},{"iata":"CPH","lat":55.6179008484,"lon":12.6560001373,"cca2":"DK","region":"Europe","city":"Copenhagen"},{"iata":"JIB","lat":11.5473003387,"lon":43.1595001221,"cca2":"DJ","region":"Africa","city":"Djibouti"},{"iata":"SDQ","lat":18.4297008514,"lon":-69.6688995361,"cca2":"DO","region":"North America","city":"Santo Domingo"},{"iata":"GYE","lat":-2.1894,"lon":-79.8891,"cca2":"EC","region":"South America","city":"Guayaquil"},{"iata":"UIO","lat":-0.1291666667,"lon":-78.3575,"cca2":"EC","region":"South America","city":"Quito"},{"iata":"CAI","lat":30.1219005585,"lon":31.4055995941,"cca2":"EG","region":"Africa","city":"Cairo"},{"iata":"TLL","lat":59.4132995605,"lon":24.8327999115,"cca2":"EE","region":"Europe","city":"Tallinn"},{"iata":"HEL","lat":60.317199707,"lon":24.963300705,"cca2":"FI","region":"Europe","city":"Helsinki"},{"iata":"BOD","lat":44.82946,"lon":-0.58355,"cca2":"FR","region":"Europe","city":"Bordeaux"},{"iata":"LYS","lat":45.7263,"lon":5.0908,"cca2":"FR","region":"Europe","city":"Lyon"},{"iata":"MRS","lat":43.439271922,"lon":5.2214241028,"cca2":"FR","region":"Europe","city":"Marseille"},{"iata":"CDG","lat":49.0127983093,"lon":2.5499999523,"cca2":"FR","region":"Europe","city":"Paris"},{"iata":"PPT","lat":-17.5536994934,"lon":-149.606994629,"cca2":"PF","region":"Oceania","city":"Tahiti"},{"iata":"TBS","lat":41.6692008972,"lon":44.95470047,"cca2":"GE","region":"Europe","city":"Tbilisi"},{"iata":"TXL","lat":52.5597000122,"lon":13.2876996994,"cca2":"DE","region":"Europe","city":"Berlin"},{"iata":"DUS","lat":51.2895011902,"lon":6.7667798996,"cca2":"DE","region":"Europe","city":"Düsseldorf"},{"iata":"FRA","lat":50.0264015198,"lon":8.543129921,"cca2":"DE","region":"Europe","city":"Frankfurt"},{"iata":"HAM","lat":53.6304016113,"lon":9.9882297516,"cca2":"DE","region":"Europe","city":"Hamburg"},{"iata":"MUC","lat":48.3538017273,"lon":11.7861003876,"cca2":"DE","region":"Europe","city":"Munich"},{"iata":"STR","lat":48.783333,"lon":9.183333,"cca2":"DE","region":"Europe","city":"Stuttgart"},{"iata":"ACC","lat":5.614818,"lon":-0.205874,"cca2":"GH","region":"Africa","city":"Accra"},{"iata":"ATH","lat":37.9364013672,"lon":23.9444999695,"cca2":"GR","region":"Europe","city":"Athens"},{"iata":"SKG","lat":40.5196990967,"lon":22.9708995819,"cca2":"GR","region":"Europe","city":"Thessaloniki"},{"iata":"GND","lat":12.007116,"lon":-61.7882288,"cca2":"GD","region":"South America","city":"St. George's"},{"iata":"GUM","lat":13.4834003448,"lon":144.796005249,"cca2":"GU","region":"Asia Pacific","city":"Hagatna"},{"iata":"GUA","lat":14.5832996368,"lon":-90.5274963379,"cca2":"GT","region":"North America","city":"Guatemala City"},{"iata":"GEO","lat":6.825648,"lon":-58.163756,"cca2":"GY","region":"South America","city":"Georgetown"},{"iata":"TGU","lat":14.0608,"lon":-87.2172,"cca2":"HN","region":"South America","city":"Tegucigalpa"},{"iata":"HKG","lat":22.3089008331,"lon":113.915000916,"cca2":"HK","region":"Asia Pacific","city":"Hong Kong"},{"iata":"BUD","lat":47.4369010925,"lon":19.2555999756,"cca2":"HU","region":"Europe","city":"Budapest"},{"iata":"KEF","lat":63.9850006104,"lon":-22.6056003571,"cca2":"IS","region":"Europe","city":"Reykjavík"},{"iata":"AMD","lat":23.0225,"lon":72.5714,"cca2":"IN","region":"Asia Pacific","city":"Ahmedabad"},{"iata":"BLR","lat":13.7835719,"lon":76.6165937,"cca2":"IN","region":"Asia Pacific","city":"Bangalore"},{"iata":"BBI","lat":20.2961,"lon":85.8245,"cca2":"IN","region":"Asia Pacific","city":"Bhubaneswar"},{"iata":"IXC","lat":30.673500061,"lon":76.7884979248,"cca2":"IN","region":"Asia Pacific","city":"Chandigarh"},{"iata":"MAA","lat":12.9900054932,"lon":80.1692962646,"cca2":"IN","region":"Asia Pacific","city":"Chennai"},{"iata":"HYD","lat":17.2313175201,"lon":78.4298553467,"cca2":"IN","region":"Asia Pacific","city":"Hyderabad"},{"iata":"CNN","lat":11.915858,"lon":75.55094,"cca2":"IN","region":"Asia Pacific","city":"Kannur"},{"iata":"KNU","lat":26.4499,"lon":80.3319,"cca2":"IN","region":"Asia Pacific","city":"Kanpur"},{"iata":"COK","lat":9.9312,"lon":76.2673,"cca2":"IN","region":"Asia Pacific","city":"Kochi"},{"iata":"CCU","lat":22.6476933,"lon":88.4349249,"cca2":"IN","region":"Asia Pacific","city":"Kolkata"},{"iata":"BOM","lat":19.0886993408,"lon":72.8678970337,"cca2":"IN","region":"Asia Pacific","city":"Mumbai"},{"iata":"NAG","lat":21.1610714,"lon":79.0024702,"cca2":"IN","region":"Asia Pacific","city":"Nagpur"},{"iata":"DEL","lat":28.5664997101,"lon":77.1031036377,"cca2":"IN","region":"Asia Pacific","city":"New Delhi"},{"iata":"PAT","lat":25.591299057,"lon":85.0879974365,"cca2":"IN","region":"Asia Pacific","city":"Patna"},{"iata":"DPS","lat":-8.748169899,"lon":115.1669998169,"cca2":"ID","region":"Asia Pacific","city":"Denpasar"},{"iata":"CGK","lat":-6.1275229,"lon":106.6515118,"cca2":"ID","region":"Asia Pacific","city":"Jakarta"},{"iata":"JOG","lat":-7.7881798744,"lon":110.4319992065,"cca2":"ID","region":"Asia Pacific","city":"Yogyakarta"},{"iata":"BGW","lat":33.2625007629,"lon":44.2346000671,"cca2":"IQ","region":"Middle East","city":"Baghdad"},{"iata":"BSR","lat":30.5491008759,"lon":47.6621017456,"cca2":"IQ","region":"Middle East","city":"Basra"},{"iata":"EBL","lat":36.1901,"lon":43.993,"cca2":"IQ","region":"Middle East","city":"Erbil"},{"iata":"NJF","lat":31.989722,"lon":44.404167,"cca2":"IQ","region":"Middle East","city":"Najaf"},{"iata":"XNH","lat":30.9358005524,"lon":46.0900993347,"cca2":"IQ","region":"Middle East","city":"Nasiriyah"},{"iata":"ISU","lat":35.5668,"lon":45.4161,"cca2":"IQ","region":"Middle East","city":"Sulaymaniyah"},{"iata":"ORK","lat":51.8413009644,"lon":-8.491109848,"cca2":"IE","region":"Europe","city":"Cork"},{"iata":"DUB","lat":53.4212989807,"lon":-6.270070076,"cca2":"IE","region":"Europe","city":"Dublin"},{"iata":"HFA","lat":32.78492,"lon":34.96069,"cca2":"IL","region":"Middle East","city":"Haifa"},{"iata":"TLV","lat":32.0113983154,"lon":34.8866996765,"cca2":"IL","region":"Middle East","city":"Tel Aviv"},{"iata":"MXP","lat":45.6305999756,"lon":8.7281103134,"cca2":"IT","region":"Europe","city":"Milan"},{"iata":"PMO","lat":38.16114,"lon":13.31546,"cca2":"IT","region":"Europe","city":"Palermo"},{"iata":"FCO","lat":41.8045005798,"lon":12.2508001328,"cca2":"IT","region":"Europe","city":"Rome"},{"iata":"KIN","lat":17.9951,"lon":-76.7846,"cca2":"JM","region":"North America","city":"Kingston"},{"iata":"FUK","lat":33.5902,"lon":130.4017,"cca2":"JP","region":"Asia Pacific","city":"Fukuoka"},{"iata":"OKA","lat":26.1958,"lon":127.646,"cca2":"JP","region":"Asia Pacific","city":"Naha"},{"iata":"KIX","lat":34.4272994995,"lon":135.244003296,"cca2":"JP","region":"Asia Pacific","city":"Osaka"},{"iata":"NRT","lat":35.7647018433,"lon":140.386001587,"cca2":"JP","region":"Asia Pacific","city":"Tokyo"},{"iata":"AMM","lat":31.7226009369,"lon":35.9931983948,"cca2":"JO","region":"Middle East","city":"Amman"},{"iata":"ALA","lat":43.3521003723,"lon":77.0404968262,"cca2":"KZ","region":"Asia Pacific","city":"Almaty"},{"iata":"MBA","lat":-4.0348300934,"lon":39.5942001343,"cca2":"KE","region":"Africa","city":"Mombasa"},{"iata":"NBO","lat":-1.319239974,"lon":36.9277992249,"cca2":"KE","region":"Africa","city":"Nairobi"},{"iata":"ICN","lat":37.4691009521,"lon":126.450996399,"cca2":"KR","region":"Asia Pacific","city":"Seoul"},{"iata":"KWI","lat":29.226600647,"lon":47.9688987732,"cca2":"KW","region":"Middle East","city":"Kuwait City"},{"iata":"VTE","lat":17.9757,"lon":102.5683,"cca2":"LA","region":"Asia Pacific","city":"Vientiane"},{"iata":"RIX","lat":56.9235992432,"lon":23.9710998535,"cca2":"LV","region":"Europe","city":"Riga"},{"iata":"BEY","lat":33.8208999634,"lon":35.4883995056,"cca2":"LB","region":"Middle East","city":"Beirut"},{"iata":"VNO","lat":54.6341018677,"lon":25.2858009338,"cca2":"LT","region":"Europe","city":"Vilnius"},{"iata":"LUX","lat":49.6265983582,"lon":6.211520195,"cca2":"LU","region":"Europe","city":"Luxembourg City"},{"iata":"MFM","lat":22.1495990753,"lon":113.592002869,"cca2":"MO","region":"Asia Pacific","city":"Macau"},{"iata":"TNR","lat":-18.91368,"lon":47.53613,"cca2":"MG","region":"Africa","city":"Antananarivo"},{"iata":"JHB","lat":1.635848,"lon":103.665943,"cca2":"MY","region":"Asia Pacific","city":"Johor Bahru"},{"iata":"KUL","lat":2.745579958,"lon":101.709999084,"cca2":"MY","region":"Asia Pacific","city":"Kuala Lumpur"},{"iata":"MLE","lat":4.1748,"lon":73.50888,"cca2":"MV","region":"Asia Pacific","city":"Male"},{"iata":"MRU","lat":-20.4302005768,"lon":57.6836013794,"cca2":"MU","region":"Africa","city":"Port Louis"},{"iata":"GDL","lat":20.5217990875,"lon":-103.3109970093,"cca2":"MX","region":"North America","city":"Guadalajara"},{"iata":"MEX","lat":19.4363002777,"lon":-99.0720977783,"cca2":"MX","region":"North America","city":"Mexico City"},{"iata":"QRO","lat":20.6173000336,"lon":-100.185997009,"cca2":"MX","region":"North America","city":"Queretaro"},{"iata":"KIV","lat":46.9277000427,"lon":28.9309997559,"cca2":"MD","region":"Europe","city":"Chișinău"},{"iata":"ULN","lat":47.8431015015,"lon":106.766998291,"cca2":"MN","region":"Asia Pacific","city":"Ulaanbaatar"},{"iata":"CMN","lat":33.3675003052,"lon":-7.5899701118,"cca2":"MA","region":"Africa","city":"Casablanca"},{"iata":"MPM","lat":-25.9207992554,"lon":32.5726013184,"cca2":"MZ","region":"Africa","city":"Maputo"},{"iata":"MDL","lat":21.7051697,"lon":95.9695206,"cca2":"MM","region":"Asia Pacific","city":"Mandalay"},{"iata":"RGN","lat":16.9073009491,"lon":96.1332015991,"cca2":"MM","region":"Asia Pacific","city":"Yangon"},{"iata":"KTM","lat":27.6965999603,"lon":85.3591003418,"cca2":"NP","region":"Asia Pacific","city":"Kathmandu"},{"iata":"AMS","lat":52.3086013794,"lon":4.7638897896,"cca2":"NL","region":"Europe","city":"Amsterdam"},{"iata":"NOU","lat":-22.0146007538,"lon":166.212997436,"cca2":"NC","region":"Oceania","city":"Noumea"},{"iata":"AKL","lat":-37.0080986023,"lon":174.792007446,"cca2":"NZ","region":"Oceania","city":"Auckland"},{"iata":"CHC","lat":-43.4893989563,"lon":172.5319976807,"cca2":"NZ","region":"Oceania","city":"Christchurch"},{"iata":"LOS","lat":6.5773701668,"lon":3.321160078,"cca2":"NG","region":"Africa","city":"Lagos"},{"iata":"OSL","lat":60.193901062,"lon":11.100399971,"cca2":"NO","region":"Europe","city":"Oslo"},{"iata":"MCT","lat":23.5932998657,"lon":58.2844009399,"cca2":"OM","region":"Middle East","city":"Muscat"},{"iata":"ISB","lat":33.6166992188,"lon":73.0991973877,"cca2":"PK","region":"Asia Pacific","city":"Islamabad"},{"iata":"KHI","lat":24.9064998627,"lon":67.1607971191,"cca2":"PK","region":"Asia Pacific","city":"Karachi"},{"iata":"LHE","lat":31.5216007233,"lon":74.4036026001,"cca2":"PK","region":"Asia Pacific","city":"Lahore"},{"iata":"ZDM","lat":32.2719,"lon":35.0194,"cca2":"PS","region":"Middle East","city":"Ramallah"},{"iata":"PTY","lat":9.0713596344,"lon":-79.3834991455,"cca2":"PA","region":"South America","city":"Panama City"},{"iata":"ASU","lat":-25.2399997711,"lon":-57.5200004578,"cca2":"PY","region":"South America","city":"Asunción"},{"iata":"LIM","lat":-12.021900177,"lon":-77.1143035889,"cca2":"PE","region":"South America","city":"Lima"},{"iata":"CGY","lat":8.4156198502,"lon":124.611000061,"cca2":"PH","region":"Asia Pacific","city":"Cagayan de Oro"},{"iata":"CEB","lat":10.3074998856,"lon":123.978996277,"cca2":"PH","region":"Asia Pacific","city":"Cebu"},{"iata":"MNL","lat":14.508600235,"lon":121.019996643,"cca2":"PH","region":"Asia Pacific","city":"Manila"},{"iata":"WAW","lat":52.1656990051,"lon":20.9671001434,"cca2":"PL","region":"Europe","city":"Warsaw"},{"iata":"LIS","lat":38.7812995911,"lon":-9.1359195709,"cca2":"PT","region":"Europe","city":"Lisbon"},{"iata":"DOH","lat":25.2605946,"lon":51.6137665,"cca2":"QA","region":"Middle East","city":"Doha"},{"iata":"RUN","lat":-20.8871002197,"lon":55.5102996826,"cca2":"RE","region":"Africa","city":"Saint-Denis"},{"iata":"OTP","lat":44.5722007751,"lon":26.1021995544,"cca2":"RO","region":"Europe","city":"Bucharest"},{"iata":"KHV","lat":48.5279998779,"lon":135.18800354,"cca2":"RU","region":"Asia Pacific","city":"Khabarovsk"},{"iata":"KJA","lat":56.0153,"lon":92.8932,"cca2":"RU","region":"Asia Pacific","city":"Krasnoyarsk"},{"iata":"DME","lat":55.4087982178,"lon":37.9062995911,"cca2":"RU","region":"Europe","city":"Moscow"},{"iata":"LED","lat":59.8003005981,"lon":30.2625007629,"cca2":"RU","region":"Europe","city":"Saint Petersburg"},{"iata":"KLD","lat":56.8587,"lon":35.9176,"cca2":"RU","region":"Europe","city":"Tver"},{"iata":"SVX","lat":56.8431,"lon":60.6454,"cca2":"RU","region":"Asia Pacific","city":"Yekaterinburg"},{"iata":"KGL","lat":-1.9686299563,"lon":30.1394996643,"cca2":"RW","region":"Africa","city":"Kigali"},{"iata":"DMM","lat":26.471200943,"lon":49.7979011536,"cca2":"SA","region":"Middle East","city":"Dammam"},{"iata":"JED","lat":21.679599762,"lon":39.15650177,"cca2":"SA","region":"Middle East","city":"Jeddah"},{"iata":"RUH","lat":24.9575996399,"lon":46.6987991333,"cca2":"SA","region":"Middle East","city":"Riyadh"},{"iata":"DKR","lat":14.7412099,"lon":-17.4889771,"cca2":"SN","region":"Africa","city":"Dakar"},{"iata":"BEG","lat":44.8184013367,"lon":20.3090991974,"cca2":"RS","region":"Europe","city":"Belgrade"},{"iata":"SIN","lat":1.3501900434,"lon":103.994003296,"cca2":"SG","region":"Asia Pacific","city":"Singapore"},{"iata":"BTS","lat":48.1486,"lon":17.1077,"cca2":"SK","region":"Europe","city":"Bratislava"},{"iata":"CPT","lat":-33.9648017883,"lon":18.6016998291,"cca2":"ZA","region":"Africa","city":"Cape Town"},{"iata":"DUR","lat":-29.6144444444,"lon":31.1197222222,"cca2":"ZA","region":"Africa","city":"Durban"},{"iata":"JNB","lat":-26.133333,"lon":28.25,"cca2":"ZA","region":"Africa","city":"Johannesburg"},{"iata":"BCN","lat":41.2971000671,"lon":2.0784599781,"cca2":"ES","region":"Europe","city":"Barcelona"},{"iata":"MAD","lat":40.4936,"lon":-3.56676,"cca2":"ES","region":"Europe","city":"Madrid"},{"iata":"CMB","lat":7.1807599068,"lon":79.8841018677,"cca2":"LK","region":"Asia Pacific","city":"Colombo"},{"iata":"PBM","lat":5.452831,"lon":-55.187783,"cca2":"SR","region":"South America","city":"Paramaribo"},{"iata":"GOT","lat":57.6627998352,"lon":12.279800415,"cca2":"SE","region":"Europe","city":"Gothenburg"},{"iata":"ARN","lat":59.6519012451,"lon":17.9186000824,"cca2":"SE","region":"Europe","city":"Stockholm"},{"iata":"GVA","lat":46.2380981445,"lon":6.1089501381,"cca2":"CH","region":"Europe","city":"Geneva"},{"iata":"ZRH","lat":47.4646987915,"lon":8.5491695404,"cca2":"CH","region":"Europe","city":"Zurich"},{"iata":"KHH","lat":22.5771007538,"lon":120.3499984741,"cca2":"TW","region":"Asia Pacific","city":"Kaohsiung City"},{"iata":"TPE","lat":25.0776996613,"lon":121.233001709,"cca2":"TW","region":"Asia Pacific","city":"Taipei"},{"iata":"DAR","lat":-6.8781099319,"lon":39.2025985718,"cca2":"TZ","region":"Africa","city":"Dar es Salaam"},{"iata":"BKK","lat":13.6810998917,"lon":100.747001648,"cca2":"TH","region":"Asia Pacific","city":"Bangkok"},{"iata":"CNX","lat":18.7667999268,"lon":98.962600708,"cca2":"TH","region":"Asia Pacific","city":"Chiang Mai"},{"iata":"URT","lat":9.1325998306,"lon":99.135597229,"cca2":"TH","region":"Asia Pacific","city":"Surat Thani"},{"iata":"TUN","lat":36.8510017395,"lon":10.2271995544,"cca2":"TN","region":"Africa","city":"Tunis"},{"iata":"IST","lat":40.9768981934,"lon":28.8145999908,"cca2":"TR","region":"Europe","city":"Istanbul"},{"iata":"ADB","lat":38.32377,"lon":27.14317,"cca2":"TR","region":"Europe","city":"Izmir"},{"iata":"KBP","lat":50.3450012207,"lon":30.8946990967,"cca2":"UA","region":"Europe","city":"Kyiv"},{"iata":"DXB","lat":25.2527999878,"lon":55.3643989563,"cca2":"AE","region":"Middle East","city":"Dubai"},{"iata":"EDI","lat":55.9500007629,"lon":-3.3724999428,"cca2":"GB","region":"Europe","city":"Edinburgh"},{"iata":"LHR","lat":51.4706001282,"lon":-0.4619410038,"cca2":"GB","region":"Europe","city":"London"},{"iata":"MAN","lat":53.3536987305,"lon":-2.2749500275,"cca2":"GB","region":"Europe","city":"Manchester"},{"iata":"MGM","lat":32.30059814,"lon":-86.39399719,"cca2":"US","region":"North America","city":"Montgomery"},{"iata":"PHX","lat":33.434299469,"lon":-112.012001038,"cca2":"US","region":"North America","city":"Phoenix"},{"iata":"LAX","lat":33.94250107,"lon":-118.4079971,"cca2":"US","region":"North America","city":"Los Angeles"},{"iata":"SMF","lat":38.695400238,"lon":-121.591003418,"cca2":"US","region":"North America","city":"Sacramento"},{"iata":"SAN","lat":32.7336006165,"lon":-117.190002441,"cca2":"US","region":"North America","city":"San Diego"},{"iata":"SFO","lat":37.6189994812,"lon":-122.375,"cca2":"US","region":"North America","city":"San Francisco"},{"iata":"SJC","lat":37.3625984192,"lon":-121.929000855,"cca2":"US","region":"North America","city":"San Jose"},{"iata":"DEN","lat":39.8616981506,"lon":-104.672996521,"cca2":"US","region":"North America","city":"Denver"},{"iata":"JAX","lat":30.4941005707,"lon":-81.6878967285,"cca2":"US","region":"North America","city":"Jacksonville"},{"iata":"MIA","lat":25.7931995392,"lon":-80.2906036377,"cca2":"US","region":"North America","city":"Miami"},{"iata":"TLH","lat":30.3964996338,"lon":-84.3503036499,"cca2":"US","region":"North America","city":"Tallahassee"},{"iata":"TPA","lat":27.9755001068,"lon":-82.533203125,"cca2":"US","region":"North America","city":"Tampa"},{"iata":"ATL","lat":33.6366996765,"lon":-84.4281005859,"cca2":"US","region":"North America","city":"Atlanta"},{"iata":"HNL","lat":21.3187007904,"lon":-157.9219970703,"cca2":"US","region":"North America","city":"Honolulu"},{"iata":"ORD","lat":41.97859955,"lon":-87.90480042,"cca2":"US","region":"North America","city":"Chicago"},{"iata":"IND","lat":39.717300415,"lon":-86.2944030762,"cca2":"US","region":"North America","city":"Indianapolis"},{"iata":"BGR","lat":44.8081,"lon":-68.795,"cca2":"US","region":"North America","city":"Bangor"},{"iata":"BOS","lat":42.36429977,"lon":-71.00520325,"cca2":"US","region":"North America","city":"Boston"},{"iata":"DTW","lat":42.2123985291,"lon":-83.3534011841,"cca2":"US","region":"North America","city":"Detroit"},{"iata":"MSP","lat":44.8819999695,"lon":-93.2218017578,"cca2":"US","region":"North America","city":"Minneapolis"},{"iata":"MCI","lat":39.2975997925,"lon":-94.7138977051,"cca2":"US","region":"North America","city":"Kansas City"},{"iata":"STL","lat":38.7486991882,"lon":-90.3700027466,"cca2":"US","region":"North America","city":"St. Louis"},{"iata":"OMA","lat":41.3031997681,"lon":-95.8940963745,"cca2":"US","region":"North America","city":"Omaha"},{"iata":"LAS","lat":36.08010101,"lon":-115.1520004,"cca2":"US","region":"North America","city":"Las Vegas"},{"iata":"EWR","lat":40.6925010681,"lon":-74.1687011719,"cca2":"US","region":"North America","city":"Newark"},{"iata":"ABQ","lat":35.0844,"lon":-106.6504,"cca2":"US","region":"North America","city":"Albuquerque"},{"iata":"BUF","lat":42.94049835,"lon":-78.73220062,"cca2":"US","region":"North America","city":"Buffalo"},{"iata":"CLT","lat":35.2140007019,"lon":-80.9430999756,"cca2":"US","region":"North America","city":"Charlotte"},{"iata":"RDU","lat":35.93543,"lon":-78.88075,"cca2":"US","region":"North America","city":"Durham"},{"iata":"CLE","lat":41.50069,"lon":-81.68412,"cca2":"US","region":"North America","city":"Cleveland"},{"iata":"CMH","lat":39.9980010986,"lon":-82.8918991089,"cca2":"US","region":"North America","city":"Columbus"},{"iata":"OKC","lat":35.46655,"lon":-97.65373,"cca2":"US","region":"North America","city":"Oklahoma City"},{"iata":"PDX","lat":45.58869934,"lon":-122.5979996,"cca2":"US","region":"North America","city":"Portland"},{"iata":"PHL","lat":39.8718986511,"lon":-75.2410964966,"cca2":"US","region":"North America","city":"Philadelphia"},{"iata":"PIT","lat":40.49150085,"lon":-80.23290253,"cca2":"US","region":"North America","city":"Pittsburgh"},{"iata":"FSD","lat":43.540819819502,"lon":-96.65511577730963,"cca2":"US","region":"North America","city":"Sioux Falls"},{"iata":"MEM","lat":35.0424003601,"lon":-89.9766998291,"cca2":"US","region":"North America","city":"Memphis"},{"iata":"BNA","lat":36.1245002747,"lon":-86.6781997681,"cca2":"US","region":"North America","city":"Nashville"},{"iata":"AUS","lat":30.1975,"lon":-97.6664,"cca2":"US","region":"North America","city":"Austin"},{"iata":"DFW","lat":32.8968009949,"lon":-97.0380020142,"cca2":"US","region":"North America","city":"Dallas"},{"iata":"IAH","lat":29.9843997955,"lon":-95.3414001465,"cca2":"US","region":"North America","city":"Houston"},{"iata":"MFE","lat":26.17580032,"lon":-98.23860168,"cca2":"US","region":"North America","city":"McAllen"},{"iata":"SAT","lat":29.429461,"lon":-98.487061,"cca2":"US","region":"North America","city":"San Antonio"},{"iata":"SLC","lat":40.7883987427,"lon":-111.977996826,"cca2":"US","region":"North America","city":"Salt Lake City"},{"iata":"IAD","lat":38.94449997,"lon":-77.45580292,"cca2":"US","region":"North America","city":"Ashburn"},{"iata":"ORF","lat":36.8945999146,"lon":-76.2012023926,"cca2":"US","region":"North America","city":"Norfolk"},{"iata":"RIC","lat":37.5051994324,"lon":-77.3197021484,"cca2":"US","region":"North America","city":"Richmond"},{"iata":"SEA","lat":47.4490013123,"lon":-122.308998108,"cca2":"US","region":"North America","city":"Seattle"},{"iata":"TAS","lat":41.257900238,"lon":69.2811965942,"cca2":"UZ","region":"Asia Pacific","city":"Tashkent"},{"iata":"HAN","lat":21.221200943,"lon":105.806999206,"cca2":"VN","region":"Asia Pacific","city":"Hanoi"},{"iata":"SGN","lat":10.8187999725,"lon":106.652000427,"cca2":"VN","region":"Asia Pacific","city":"Ho Chi Minh City"},{"iata":"HRE","lat":-17.9318008423,"lon":31.0928001404,"cca2":"ZW","region":"Africa","city":"Harare"}] --------------------------------------------------------------------------------