2023:浏览器从 A 到 Z

资讯 3个月前 admin
20 0 0

将 A-Z 逐一输入到 Google Chrome 的地址栏里,Google Chrome 都会自动补全出哪些域名呢(诶?) A assemblyscript.org AssemblyScript 是一个语法和 TypeScript 接近、但是编译产物是 WebAssembly 的语言。过去我用 AssemblyScript 重写了 cidr-tools,把性能翻了一倍(cidr-tools-wasm);不过后来我用 TypeScript 又重写了一遍,结果性能再翻了 10 倍(fast-cidr-tools)。事实上,在计算密集型的场景下 AssemblyScript 的优势也不一定明显。 apple.com.cn 今年新买了一台 MacBook Pro 16′ M2 Max 64G 2 TiB 作为我的主力机、换掉了之前的装了黑苹果的 Lenovo Legion Y9000X 2020。 B bgp.tools 过去一年,我逐步用 bgp.tools 代替了 bgp.he.net 作为我的 BGP 查询工具。bgp.tools 支持查看某一个广播的的 prefixes 的 Connectivity 路由图、而 bgp.he.net 仅支持查看一个 ASN 全部广播的 prefixes 的汇总 Connectivity 路由图。 bun.sh Bun 是一个基于 JavaScriptCore 和 WebKit、使用 Zig 编写的 JavaScript Runtime,自带编译器和打包器、支持直接执行 TypeScript 和 JSX/TSX。我把 Sukka/Surge 项目(自用的 Surge 规则组)从 Node.js 迁移到 Bun,加上基于 SQLite 的 Cross Build Cache 以后,项目的编译时间从 31 秒缩短到 10 秒。 C caniuse.com 查询 Web API 和 ECMAScript Feature 的浏览器兼容性,部分数据来自 MDN 的 Compat Table。 D dashflare.skk.moe Dashflare 是我使用 React 编写的,基于 Cloudflare API 的非官方 Cloudflare 控制面板。4 年前用 Cloudflare Partner(Legacy SKU)的方式启用了 Cloudflare 的 CNAME Setup,但是自从 Cloudflare Partner Legacy 被 EOL 以后,Cloudflare Partner API 就无法使用了。所幸 Cloudflare Zone API 仍然可以被用来管理 DNS,所以我就用 React 写了一个不依赖任何服务器的、纯前端的控制面板,后来又陆陆续续加了「开关 IPv6」、「切换 Universal SSL 的 CA」、「切换 Universal SSL 验证方式」、「快速启用 ETag 支持」等功能。 dash.cloudflare.com Cloudflare 官方的控制面板。我时不时会上去检查一下各个网站和 API 的 Cache 命中率和 WAF 日志。 E eslint.style 在 ESLint 的下一个大版本 ESLint 9.0.0,ESLint 决定弃用所有和格式化有关的规则(如缩进、换行、空行)、并将这些规则移除出 ESLint 项目。这些规则由 Anthony Fu 为首的 ESLint Stylistic 项目维护。 Rel1cx/eslint-react 使用 React 的对 eslint-plugin-react 一定不会陌生。最早由 yannickcr 创建,现由 ljharb 劫持 维护。ljharb 为了无谓的「拒绝任何 Breaking Changes、兼容 Node.js 4」、引入了大量无用的 polyfill,不仅浪费磁盘空间、还拖累运行速度。eslint-plugin-react 也不支持通过 TypeScript 获取类型信息,导致规则的准确性大打折扣。考虑到 ljharb 冥顽不化的 固执己见,Rel1cx 决定全新重写一版 React 的 ESLint Plugin @eslint-react/eslint-plugin。目前我已经将 eslint-plugin-react 全部迁移到了 @eslint-react/eslint-plugin 上,并且我也推荐所有使用 TypeScript 的 React 项目进行迁移。 F foxact.skk.moe foxact 是我创立并活跃维护的开源 React Hooks/Utilities 库。即使目前已经有许多现成的 React Hooks 开源库,在阅读了它们的源码后,我觉得它们都不达标:阿里的 ahooks 在 Render Phase 期间读写 React Ref、并不 Concurrent Rendering Safe;usehooks-ts 在应该使用 useSyncExternalStore 的地方滥用 useEffect;react-hookz/web 则有着一大堆过于抽象/错误的 Hooks 封装。因此我还是决定重复造一次轮子,维护一个 React 18 优先、支持 React Concurrent Rendering 和 React Server Component、TypeScript 友好的 React Hooks 库,目前 foxact 除了包含一些常用 Hooks 以外,还包含了一些 React 项目中常用的组件和实用函数。 fast.com fast.com 是 Netflix 提供的一个测速网站,所有测速节点都来自于 Netflix 的 CDN 节点。 G github.com 2023 年,我在 GitHub 产生了 2664 次贡献,向 89 个开源项目贡献过代码,有 115 个来自我的 PR 被合并。 H hv-monster.skk.moe HentaiVerse Monster Database 是我给来自 E-Hentai 的页端 RPG 小游戏 HentaiVerse 的周边项目,记录、统计和展示玩家创建的怪物。 I ip.skk.moe ip.skk.moe 是我 2019 年建立的查询 IP 的网站,最初一开始只是一个简单查看当前 IP 的网站,后来陆续新增了许多新功能。2023 年我用 Next.js + React 18 重写了 ip.skk.moe,并新增了一系列功能: 多出口 IP 分流查询:通过超过 200 个 speedtest.net 的测速节点 测试 IP 出口的策略路由(PBR) 多数据来源 IP 地理位置查询:同时向 12 个 GeoIP 数据库查询一个 IPv4 IP 的地理位置 UDP IP 出口查询:在浏览器中测试 TCP 和 UDP 是否共享同一个 IP 出口 域名分流测试:测试基于域名的策略路由是否生效 J jsdelivr.com jsDelivr 是一家由多家 CDN 供应商和 DNS 供应商赞助的开源 CDN 服务。2023 年我配合 jsDelivr 打掉了超过 80 个滥用 jsDelivr 免费服务的 GitHub 仓库,平均每月为 jsDelivr 节省了 600 TiB 的流量,约占 jsDelivr 总流量的 6%。 2023 年 jsDelivr 新上线了 Globalping 平台,可以使用通过全球遍布 70 多个国家、260 多个城市的 900 多个探针测试 ICMP、DNS、MTR、traceroute 和 HTTP。 K binary-factory.kde.org KDE Connect 是一个开源、免费、跨平台、比 AirDrop 更强大的多设备间数据同步工具。截止至 2023 年,KDE Connect for macOS 版仍然没有发布稳定版,试用每夜版(Nightly)需要前往 KDE 的 CI 下载。 L localhost 严格来讲,localhost 也算是一个域名。 lab.skk.moe 我个人的试验场,主要会 Bootstrap 一些 idea 和体验最新的 Web API。2023 年我为 lab.skk.moe 新增了下述功能: 完全在浏览器中执行、无需服务器的图片自动去除背景工具 在浏览器中识别 QRCode 使用 NextDNS API 查看 NextDNS 完整的解析日志 无广告、高精度的流量消耗器 M mail.office365.com skk.moe 的域名邮箱托管在 Microsoft 365 上。 mantine.dev 一个 React 组件库,完成度很高。2023 年释出了新的大版本 Mantine v7。Mantine v7 全部使用 PostCSS 和 CSS Modules 重构,提供了对 React Server Component 和 Next.js App Router 的第一方支持。 N npmgraph.js.org npmgraph 是一个可以查看 npm 包依赖关系的网站,可以方便的查看一个 npm 包的所有间接依赖和依赖关系。例如 通过 npmgraph 查看 [email protected] 就可以看到 冥顽不化的 ljharb 为了所谓的「使 eslint-plugin-react 向下兼容 Node.js 4」而引入了超过 70 多个间接依赖(全部都是 Polyfill)。 nolyfill nolyfill 是我为了对抗 冥顽不化的 ljharb 的众多无用 Polyfill 的项目。nolyfill 利用 Package Manager 的 overrides、resolution,将 ljharb 的 Polyfill 替换成行为完全一致、但 size 只有数 KiB 的包。 nolyfill 还提供了 CLI,可以在项目目录下执行 npx nolyfill 命令就可以查看项目中那些依赖可以被 nolyfill 替换、然后可以使用 npx nolyfill install 命令执行替换。一般替换后,node_modules 体积可以减少超过 50 MiB。 O one.dash.cloudflare.com Cloudflare 的 Zero Trust SASE 方案「Cloudflare One」,我主要使用 Cloudflare One 提供的 DNS 服务。 P play.swc.rs SWC 是一个用 Rust 编写的 JavaScript 编译器,目前已经可以在几乎所有场合替代 Babel、TypeScript Compiler 和 Terser。play.swc.rs 是 SWC 的 Playground,有的时候我会在上面寻找 SWC Bug 的最小复现。 Q quillbot.com 一个基于 AI 的文字纠错和美化工具。我只简单体验过,感觉不如配合专门的 System Instruction 的 ChatGPT: You are an advanced and intelligent grammar correction AI assistant, responsible for fine-tuning and enhancing text content. You will take the user inputs, rectifying spelling mistakes and grammatical inaccuracies, you are endowed with the capability to streamline clarity, enrich the language spectrum, and condense verbosity, ensuring concise and compelling output. All corrections and enhancements should be seamlessly integrated to maintain the user’s unique voice and tone, ensuring the end message aligns with their intended communication. R react.dev React 的官网和文档。2023 年我为 React 文档提交了一个 PR,将 React 文档中的 Error Decoder 迁移到新版网站。这个 PR 历时 4 个月,我独自完成了初版的 PoC,并和多位 React Core Team Member 合作完成了最终的版本。因为这个 PR,我还在 Twitter 上受到了 Rick Hanlon 和 Dan Abramov 的感谢: ruleset.skk.moe 2022 年我 在 GitHub 上开源了我自用的 Surge 的规则组,2023 年我为所有规则组增加了 Clash Premium 支持。大部分数据通过 GitHub Actions 每日从上游同步数据。其中比较有亮点的规则组: https://ruleset.skk.moe/List/domainset/reject.conf:通过 GitHub Actions 每日从 uBlock Origin、AdGuard、EasyList 等 30 余常用 AdBlock 规则组中,解析筛选出纯域名的、适用于 Surge 的规则,目前已有 30 万条域名。所有数据均来自上游,零误杀(如果真的出现误杀,会影响全世界所有 AdGuard、ADBlock Plus 用户,上游的规则组自然会很快修复)。 https://ruleset.skk.moe/List/non_ip/sogouinput.conf:搜狗输入法相关规则。早在 2021 年我就已经发现搜狗输入法会使用 HTTP 明文上传用户配置文件和输入法输入记录,因此我维护了相关规则,可以在 Surge 中完全禁止搜狗输入法联网。 https://ruleset.skk.moe/List/domainset/cdn.conf 和 https://ruleset.skk.moe/List/domainset/download.conf:静态 CDN 类域名(不包含 Microsoft 和 Apple 在国内的 CDN 域名),一般分发图片、CSS、JS 等网页静态文件或软件更新、操作系统更新,一般无 WAF 和风控,属于低优先级流量。 https://ruleset.skk.moe/List/ip/china_ip.conf:基于 chnroute2 的中国 IP 列表,比 MaxMind GeoLite2 和 Clash.Meta 的 GEOSITE 数据准确得多。 https://ruleset.skk.moe/List/ip/telegram.conf:基于 Telegram 官方释出的 CIDR 列表,每日自动更新。从 2021 年开始 Telegram macOS 客户端总是随机连接一些非 Telegram IP,Telegram Team 对此拒绝做出任何回应,使用这个规则配合 PROCESS-NAME,Telegram,REJECT-DROP 可以防止 Telegram 连接非 Telegram 的 IP、同时 Telegram 客户端的 功能没有受到任何影响。 完整规则组可以在 GitHub 仓库的 README 中查看。 S skk.moe 我自己的域名,嗯。 speedtest.net Ookla 的测速网站。 T twitter.com 虽然 Twitter 已经被马斯克重命名为 X 和 x.com,但是我还是习惯称呼它为 Twitter。 U undraw.co/illustrations unDraw 提供 PNG 和 SVG 格式的免费、可商用的矢量图素材。 V vercel-dns.skk.moe 我的 skk.moe 域名的 NS 托管在 Vercel DNS 上。不过我觉得 Vercel 自己的 DNS 面板功能不够强大,所以自己写了一版 开源的基于 Vercel API 的 DNS 面板,开源在 GitHub SukkaW/vercel-dns-console。 W N/A X xdaforums.com 2023 年 6 月的时候,XDA 论坛的域名不再使用 XDA 资讯主站的域名(xda-developers.com)的子域名,而是使用了新的独立域名 xdaforums.com。 Y youtube.com 全世界最大的视频网站。 Z zod.dev 一个开源的、TypeScript 友好的、类型完备的数据类型校验库。我一般在项目里用 zod 校验后端 API 返回的数据、提供「安全的」类型断言 以及在后端瞎搞的时候有理有据地甩锅给后端。


商业转载请联系作者获得授权,非商业转载请注明出处。
作者:Sukka
来源:2023:浏览器从 A 到 Z
链接:https://blog.skk.moe/post/2023-browser-from-a-to-z/

原文始发于Sukka:2023:浏览器从 A 到 Z

版权声明:admin 发表于 2024年1月24日 上午10:27。
转载请注明:2023:浏览器从 A 到 Z | CTF导航

相关文章