Go 语言服务器可以实现令人印象深刻的代码导航
摘要
Go 语言服务器 (gopls) 为 Go 开发者提供了令人印象深刻的代码导航功能,增强了 IDE 的能力。
<p><a href="https://lobste.rs/s/swa6iv/go_language_server_can_do_some_impressive">评论</a></p>
查看缓存全文
缓存时间: 2026/05/30 04:03
# 您使用的浏览器版本过旧
来源:https://utcc.utoronto.ca/~cks/cspace-bad/cspace-old-browser.html
## 您使用的浏览器版本异常陈旧
您看到此页面,很可能是因为您尝试访问我的博客《Wandering Thoughts》(https://utcc.utoronto.ca/~cks/space/blog/)或其所归属的 wiki 站点 CSpace(https://utcc.utoronto.ca/~cks/space/)的某些内容。遗憾的是,您使用的浏览器版本被我用于反爬虫的防护措施判定为可疑,最常见的原因是版本过旧(尤其多见于 Chrome 浏览器)。不幸的是,截至 2025 年初,大量高并发爬虫(部分用于收集 LLM 训练数据)正使用各种旧版浏览器的 User-Agent,尤其是 Chrome 的旧版 User-Agent。为了减轻《Wandering Thoughts》(https://utcc.utoronto.ca/~cks/space/blog/)的负载,我正在尝试(尽可能)拦截所有此类请求,而您正好撞上了。
如果您使用的是当前最新版本的浏览器,而此次拦截属于误判,您可通过我在大学的当前地址(https://www.cs.toronto.edu/~cks/)联系我(您应能从中推算出电子邮件地址)。如果可能,请告知我您使用的浏览器等信息,最好能提供确切的 User-Agent 字符串。
## 致 Inoreader(订阅阅读器)用户的特别说明
我并未拦截 Inoreader 的 feed 抓取器,也未将其视为版本过旧,它正常抓取我的 feed。我不清楚为何 Inoreader 会向您展示此页面。可能是它们偶尔会使用旧版浏览器的 HTTP User-Agent(或实际运行旧版浏览器)来抓取 feed 或页面,并将此次抓取结果(即本页面)作为向用户展示的内容,而非其 syndication feed 抓取工具的正常结果。这在当下是一个严重错误;现代 HTTP 抓取的结果部分取决于所使用的 HTTP User-Agent(https://utcc.utoronto.ca/~cks/space/blog/web/HTTPResultsAndUserAgents)。
## 致 Feedly(订阅阅读器)用户的特别说明
与 Inoreader 类似,Feedly 会定期使用伪造的旧版浏览器 HTTP User-Agent 标头抓取我的 syndication feed,导致抓取失败,然后固执地将该结果用于其常规的 Feedly HTTP User-Agent 进行实际 feed 抓取。对此我无能为力;您应联系 Feedly 支持(如果能找到的话)。详情请参见我在《Wandering Thoughts》中的这条评论(https://utcc.utoronto.ca/~cks/space/blog/web/FeedReaderErrorsProblem?showcomments#cks-20260215115901)。
## 致 Vivaldi 用户的特别说明
由于持续存在的攻击,您可能需要修改「User Agent Brand Masking」设置(https://help.vivaldi.com/desktop/miscellaneous/user-agent-brand-masking/),使您的 Vivaldi 浏览器以 Vivaldi 身份标识自身,而非冒充 Google Chrome。此设置甚至适用于当前最新版本的 Vivaldi。
## 致 archive.\* 用户的特别说明
您可能是通过 archive.today、archive.ph、archive.is 等站点看到此页面。不幸的是,archive.\* 在抓取网页进行归档时,其行为模式与恶意攻击者难以区分。它们使用旧版 Chrome 的 User-Agent 值,通过广泛分布且未明确标识归属的 IP 地址段进行抓取,并且部分 IP 地址的逆向 DNS 记录被伪造为 googlebot 的 IP 地址(这通常是相当恶劣的行为者才会做的事)。我建议您改用 archive.org,它的归档爬虫行为更规范,能够正常抓取我的博客《Wandering Thoughts》(https://utcc.utoronto.ca/~cks/space/blog/)。
Chris Siebenmann,2025-02-17
相似文章
gopls 中的交互式重构
gopls v0.24.0 通过一项新的 LSP 提案能力引入了交互式重构,支持多步对话框,允许语言服务器在计算编辑前收集用户输入——该能力作为开放标准与 Dart 团队合作设计,适用于所有编辑器和语言。
Go 1.27 交互式导览
Go 1.27 新功能的实践性交互式导览,重点介绍泛型方法、结构体字面量字段选择器等,并提供基于官方发布说明的可运行示例。
Golang开发者应该尝试Odin
本文主张Golang开发者应该探索Odin,这是一种新的编程语言,通过内存管理和数组编程等功能解决了Go的一些局限性。
在浏览器代码运行器中添加Go语言
作者详细介绍了在基于浏览器的代码运行器(dailyprog)中添加Go语言所面临的挑战及解决方案,解释了为什么标准的GOOS=js方法无法在V8隔离环境中工作,以及如何通过使用GOOS=wasip1和最小的WASI主机shim来成功实现。
Soppo - Go,但具备它所缺失的特性
Soppo 是一门新的编程语言,它在 Go 的基础上扩展了枚举、模式匹配、“?”错误传播运算符以及编译期空值安全,同时保持与现有 Go 代码和工具链的完全互操作性。