# Tor浏览器因本地优化而损坏图像

**URL:** https://meta.discourse.org/t/tor-browser-wrecks-images-because-of-local-optimization/218540
**Category:** Bug
**Created:** [2022年二月17日 12:25 UTC](https://meta.discourse.org/t/tor-browser-wrecks-images-because-of-local-optimization/218540 "2022-02-17T12:25:02Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [2022年二月17日 12:25 UTC](https://meta.discourse.org/t/tor-browser-wrecks-images-because-of-local-optimization/218540/1 "2022-02-17T12:25:02Z")

</div>

使用 Windows Tor 浏览器上传图片会破坏 JPG 上传功能。

将 `composer media optimization image bytes optimization threshold` 设置为一个非常高的值可以解决此问题。这很可能是 Tor 浏览器的问题，但到目前为止，似乎只在 Discourse 中发生，所以我还是在这里发帖，即使只是为了分享这个变通方法。

 ![image](https://global.discourse-cdn.com/meta/original/3X/f/1/f1c840aa7abb0e5d9783bfdc62ad3cab794e23bd.jpeg)

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022年二月17日 13:25 UTC](https://meta.discourse.org/t/tor-browser-wrecks-images-because-of-local-optimization/218540/2 "2022-02-17T13:25:08Z")

</div>

在我的测试中，Tor 浏览器在此处阻止了此调用：

> <https://github.com/discourse/discourse/blob/1c73b97d508fd79e6c8eff0cc8a44bdc5084f4a7/app/assets/javascripts/discourse/app/lib/media-optimization-utils.js#L52>

并显示：

> 由于未检测到用户输入，因此阻止了 [https://try.discourse.org/](https://try.discourse.org/) 从提取画布数据。

这显然是谎言，因为文件选择器就是用户输入。

这是由我们的故障安全机制检测到的：

> 调整大小失败：调整大小时图像损坏。回退到原始图像进行编码

这会提示 Discourse 仅重新编码文件，这似乎成功了，但随后在使用多部分上传完成时因 422 而失败……

Tor 浏览器应该阻止画布创建 API，而不是默默地损坏返回值 🤔

总之，用户可以通过在 `about:config` 中切换 `privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts` 来禁用画布操作的静默失败，这将允许用户看到此提示：

 ![image](https://global.discourse-cdn.com/meta/original/3X/2/0/20074365790bb61198ad0de39442fd2712fa761e.png)

我刚刚测试过，这可以修复上传。

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [2022年二月17日 15:51 UTC](https://meta.discourse.org/t/tor-browser-wrecks-images-because-of-local-optimization/218540/3 "2022-02-17T15:51:29Z")

</div>

太棒了。谢谢你 @falco！！！

---

<div class="post-metadata">

### Author: ![Decorbuz](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/decorbuz/32/235124_2.png) [@Decorbuz](https://meta.discourse.org/u/Decorbuz)
#### Post date: [2022年二月17日 16:25 UTC](https://meta.discourse.org/t/tor-browser-wrecks-images-because-of-local-optimization/218540/4 "2022-02-17T16:25:36Z")

</div>

根据我的经验，同样的问题也出现在一些网站图标（可能是以 JPG 文件上传的）上。切换 `privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts` 也能解决这个问题吗？
