XIU2

Results 246 comments of XIU2

确实有人反馈过(部分地区)出现阻断的情况 #217 (以及其他 Issues 里零零散散的提到 包括我这边联通也是,不过我这边是要建立 HTTP 链接后才会触发阻断,单纯 TCPing 是正常的。 前段时间有个人提了个 HTTP Ping 的 Pull requests(`即每个 IP 建立一个完整的 HTTPS 链接,并计算整个过程耗时,优点是相比 下载测速 这样可以快速准确测试 IP 指向域名的可用性`)。 结果测试过程中发现大量 HTTP Ping 就会被立即阻断一段时间,恢复后短时间内再次测速即使流量很小也会被再次阻断,我们两个测试都能轻松复现,最后找不到解决方法只能关闭 PR,取消了这个 HTTPing...

控制变量排除法 的测试结果,你描述清晰具体点,例如: - **在同网络下,不同设备测速比较**: 电脑 + 宽带 = X 手机 + 宽带 = X - **在同设备下,不同网络测速比较**: 电脑 + 宽带 = X 电脑 + 数据 = X 等等... 这样才能逻辑清楚的初步判断是设备问题,还是网络问题。

@1265578519 MTR 我记得一般都是 ICMP 协议的,而该软件延迟测速是 TCP 协议的,不同协议之间存在差异也算正常,虽然我遇到的基本都是 TCP 丢包但 ICMP 稳定的 “ICMP 优化” 。。。 另外该软件延迟测速间隔时间极短,因此可能或多或少会影响丢包率准确度,但具体影响是好还是坏我也不确定~

理论上能实现,但我不感兴趣,因为我现在已经不怎么看知乎了。。。所以该脚本也基本上不考虑添加新功能了

我测试了下,结果大致符合你的描述。 不同的点在于,我这边 Chrome+Violentmonkey 下,直接点击文件后不会显示 Raw 加速按钮,但是我点击左侧列表里的其他文件后,就可以正确显示出来了(当然显示的是新文件的加速 URL),其他的都和你说的差不多。 初步判断是 Violentmonkey 与 Tampermonkey 的差异导致的,毕竟我主用 Tampermonkey,Violentmonkey 也就是因为兼容 Tampermonkey 所以才适配了的,但这两者在细微之处存在差异。 我会研究下原因的。

> 已登录、未登录 其实对应的就是 新版界面、旧版界面。 我测试的情况是,在 Chrome+Violentmonkey 下,新版界面不正常(已登录,情况如我楼上所说),旧版界面正常(未登录)。 而 Firefox+Violentmonkey 下,则都不正常。

根据我以前的经验,Violentmonkey 在加载脚本时间上存在差异,于是我尝试延迟加载 addRawFile() 函数(该函数就是加 Raw 加速按钮的),Chrome+Violentmonkey 新版界面下正常了,但 Firefox+Violentmonkey 依然不行。 调试了下,似乎是监听网页 URL 变化的代码方面的问题,因为 Tampermonkey 自带了该函数(监听网页 URL 变化),而为了兼容 Violentmonkey 等其他脚本管理器,我需要一个类似功能的函数,但因为 Tampermonkey 不是开源的,因此我是自己仿造的该功能函数。 我刚刚测试该函数,在 Chrome 上是可以工作正常的,在 Firefox 上似乎有点问题,可能又是可恶的兼容性问题吧,我研究研究吧。。。

我这边测试只需要将脚本 145 行的代码: ``` addRawFile(); ``` 改为这样: ``` if (GM_info.scriptHandler === 'Tampermonkey') {addRawFile();} else {setTimeout(addRawFile, 1000);} ``` Chrome+Violentmonkey 新版界面下就会完全工作正常了。 > 即非 Tampermonkey 的都延迟 1 秒后再执行函数。 但这个改动对 Firefox+Violentmonkey 无效,因为这个组合下我排查后问题还是出在 监听网页 URL...

研究后发现,似乎不算是兼容性问题,而是 Firefox 存在一些限制。 我仿写的函数会覆盖 window.history 函数来监听网页 URL 变化,但在 Firefox 浏览器上,无论是什么脚本管理器均无法覆盖,哪怕我加上 `// @grant unsafeWindow` 也不行(该标识让脚本可以完全控制网页内的变量等等),而在 Firefox 浏览器开发者工具下手动运行该函数覆盖的话,却可以正常工作(脚本功能也恢复正常)。

好像确实是有限制。 我看了下 Violentmonkey 的注入方式说明: https://violentmonkey.github.io/posts/inject-into-context/ 想要脚本影响网页,就需要 page 方式注入,但这又会导致脚本被 Github 的 CSP 限制注入。 ``` // @inject-into page ``` 而使用其他方式,不会被 Github 的 CSP 限制注入,但却会导致我仿写的 监听网页 URL 变化 函数无法生效。。。 Tampermonkey 也有类似的东西,即我脚本里写的: ``` //...