# YouTube 视频 Onebox 嵌入功能停止工作

**URL:** https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748
**Category:** Support
**Created:** [2020年六月3日 21:52 UTC](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748 "2020-06-03T21:52:04Z")
**Posts on this page:** 10
**Page:** 3

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [2020年九月24日 19:53 UTC](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748/41 "2020-09-24T19:53:13Z")

</div>

如何确认我们是否真的被 IP 封禁？

我是这样做的：

> [@marcozambi](#):
>
> 我找到了根本原因：YouTube 封禁了我们的 IP，但不清楚具体原因，因为当时我们并没有进行大规模的重新渲染或其他类似操作。
> 
> ![image](https://global.discourse-cdn.com/meta/original/3X/1/5/15de608d5b845cdf05f708ecd5f6ae27b4341c85.png)

但视频下载没有任何问题。

```plaintext
root@ubuntu-8gb-hel1-4:~# youtube-dl https://www.youtube.com/watch?v=Xl-PTTeRsik
[youtube] Xl-PTTeRsik: 正在下载网页
[youtube] Xl-PTTeRsik: 正在下载 MPD 清单
[download] 目标文件：Loading cargo into HTV-9 Konutori-Xl-PTTeRsik.mp4
[download] 100% 完成，共 11.41MiB，耗时 00:01

```

那我的问题是否来自其他地方呢？😕

当 Discourse 尝试将 YouTube 链接进行 onebox 时，我收到了 404 错误。

---

<div class="post-metadata">

### Author: ![bletch](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bletch/32/69088_2.png) [@bletch](https://meta.discourse.org/u/bletch)
#### Post date: [2020年九月24日 21:09 UTC](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748/42 "2020-09-24T21:09:25Z")

</div>

我现在没时间详细回复，但先说几点：

1. 目前所有的重新烘焙（re-bake）任务是否都已通过 Sidekiq 处理完毕？`https://yourforum/sidekiq` 页面是否显示大量待处理任务？如果是，那可能只是因为 Onebox 处理需要一些时间。

2. 请查看我执行的一项诊断，尝试复现该过程并反馈结果。

> [@Youtube videos onebox embedding stopped working](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748/20?u=bletch):
>
> Here are some more results. Note, there are many assumptions in the post below - based on a lack of real knowledge. I’ll follow this post up with my opinion of what is going on and what should happen. Thanks for the response, Robert. Note that Oneboxing of videos using the /watch route were (and still are!) failing when I tried this so I didn’t need a loop to force it to fail. So one assumption I’ve made is that the user-agent that Onebox is using is Discourse Forum Onebox v2.6.0.beta1 base…

1. 如果在重新烘焙过程中 YouTube 封禁了你，那么你就必须重新执行一次重新烘焙，因为你无法确定哪些包含嵌入链接的帖子已经被处理过。我实际上编写了一个工具，用于重新格式化 YouTube 帖子并按批次进行重新烘焙。

2. 遗憾的是，Oneboxer 似乎会在没有提示的情况下失败，因此很难确定原因。我不得不 fork 并修改 @merefield 的插件，以记录错误日志，最终发现我收到了 429 错误。你当然可以使用我的 fork 版本，但这有点算是 hack，而且（我刚刚注意到）它比 Roberts 的版本落后了几个提交。

> **[GitHub - DannyGoodall/discourse-onebox-assistant: Discourse plugin to provide alternative path for...](https://github.com/DannyGoodall/discourse-onebox-assistant)**
>
> Discourse plugin to provide alternative path for oneboxing crawl via 3rd party API to improve reliability of bringing back previews of external sites

1. 如果你 **确实** 受到了速率限制（即从 YouTube 收到 429 错误），那么我之前通过安装 @merefield 的 Onebox Assistant 并启用它，但不更改任何设置（即保留所有设置为空）取得了成功。注意：这看起来很奇怪，按理说不该生效，但它确实有效。

详见我的帖子：

[https://meta.discourse.org/t/onebox-assistant-crawl-for-those-previews-reliably/107405/35?u=bletch](https://meta.discourse.org/t/onebox-assistant-crawl-for-those-previews-reliably/107405/35?u=bletch)

以及

[https://meta.discourse.org/t/onebox-assistant-crawl-for-those-previews-reliably/107405/36?u=bletch](https://meta.discourse.org/t/onebox-assistant-crawl-for-those-previews-reliably/107405/36?u=bletch)

1. 最后，关于你询问的 embed.rocks，我已经注册了 embed.rocks 的账户，并用 Onebox Assistant 进行了测试，在部分重新烘焙过程中表现完美。不过，由于它表现出第 5 点中描述的异常行为，我随后已将其配置移除。

---

<div class="post-metadata">

### Author: ![bletch](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bletch/32/69088_2.png) [@bletch](https://meta.discourse.org/u/bletch)
#### Post date: [2020年九月24日 21:10 UTC](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748/43 "2020-09-24T21:10:56Z")

</div>

> [@Canapin](#):
>
> 当 Discourse 尝试将 YouTube 链接转换为单框时，我遇到了 404 错误。

在运行了一段时间的论坛中，曾经有效的 YouTube 链接失效是很常见的。视频可能因版权问题被删除，或账户被关闭，导致这些链接无法使用。您是否可能遇到了这种情况？

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [2020年九月24日 21:45 UTC](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748/44 "2020-09-24T21:45:59Z")

</div>

你好，

> [@bletch](#):
>
> 在一个运营了一段时间的论坛中，曾经有效的 YouTube 链接失效是很常见的。视频可能因版权原因被移除，或因账号被关闭，导致这些链接无法使用。你遇到的情况是否也是如此？

不，视频可以正常播放 ☹

> [@bletch](#):
>
> - 目前所有重新生成（re-bake）任务是否已通过 Sidekiq 处理完毕？访问 `https://yourforum/sidekiq` 是否显示大量任务？如果是，那可能只是“Onebox”处理需要一些时间。

目前仍有 90 万条（总共 130 万条）帖子等待重新生成（至少需要一周时间），但一两天前，新帖子的 Onebox 功能是正常工作的。

现在，如果我在发布新帖子时包含 YouTube 链接，或者重新构建已包含 YouTube 链接的帖子的 HTML，就会出现以下 404 错误：

 ![image](https://global.discourse-cdn.com/meta/original/3X/8/1/8141bbc203d5ff3588f56fcafba2e46bbae42aa9.png)

其他 Onebox 功能正常（已测试 Vimeo、Twitter 等）。

编辑：重新阅读了这里的帖子，看来我遇到了和大家一样的问题。

> [@marcozambi](#):
>
> 昨天 YouTube 解除了我们的封禁，我们恢复正常了。

当你说他们解除了你的封禁时，我理解为你并没有主动联系他们，封禁是自动解除的吗？

我并不太在意旧帖子中是否嵌入了视频，但我非常关注新帖子的体验。  
我的论坛尚未开放，我希望能为用户提供良好的体验。🙂

编辑：抱歉多次编辑，打扰大家了。  
我尝试了这里描述的奇怪变通方法：["Onebox Assistant", crawl for those previews reliably! - #35](https://meta.discourse.org/t/onebox-assistant-crawl-for-those-previews-reliably/107405/35?u=canapin)  
确实有效。我想我会等待“全部重新生成”完成，既然 YouTube 似乎会自动解除 IP 封禁，我就再等几天或几周吧。

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2020年十一月12日 19:09 UTC](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748/45 "2020-11-12T19:09:17Z")

</div>

您好，  
我的论坛在嵌入 YouTube 视频时出现问题。  
我们一周前创建了一个包含大量音乐视频的帖子，现在似乎遇到了与 @marcozambi 相同的问题：嵌入视频时返回 404 错误。  
请问我该如何解决？

---

<div class="post-metadata">

### Author: ![legrit](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/legrit/32/90307_2.png) [@legrit](https://meta.discourse.org/u/legrit)
#### Post date: [2021年一月25日 11:32 UTC](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748/47 "2021-01-25T11:32:44Z")

</div>

你好，我也遇到了同样的问题：

- 我的服务器似乎没有被 IP 封禁：curl 请求可以正常执行（而且我也可以从服务器浏览 YouTube）
- 在我的浏览器控制台中，我没有看到 404 错误，而是 504 网关超时错误
- 另外，任何版本的 URL 对我来说都无法使用

不过，我在 discourse 的 production.log 中看到了这个 SSL 错误：

`Failed to onebox https://www.youtube.com/post/ ***** hostname "www.youtube.com" does not match the server certificate (OpenSSL::SSL::SSLError) ["/usr/local/lib/ruby/2.7.0/openssl/ssl.rb:395:in 'post_connection_check'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/ssl_socket.rb:146:in 'initialize'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/connection.rb:471:in 'new'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/connection.rb:471:in 'socket'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/connection.rb:118:in 'request_call'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/middlewares/mock.rb:57:in 'request_call'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/middlewares/instrumentor.rb:34:in 'request_call'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/middlewares/idempotent.rb:19:in 'request_call'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/middlewares/base.rb:22:in 'request_call'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/middlewares/base.rb:22:in 'request_call'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon/connection.rb:283:in 'request'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/excon-0.78.1/lib/excon.rb:250:in 'head'", "/var/www/discourse/lib/final_destination.rb:186:in 'public_send'", "/var/www/discourse/lib/final_destination.rb:186:in 'resolve'", "/var/www/discourse/lib/oneboxer.rb:365:in 'block in external_onebox'", "/var/www/discourse/lib/cache.rb:94:in 'fetch'", "/var/www/discourse/lib/oneboxer.rb:358:in 'external_onebox'", "/var/www/discourse/lib/oneboxer.rb:199:in 'onebox_raw'", "/var/www/discourse/lib/oneboxer.rb:44:in 'preview'", "/var/www/discourse/app/controllers/onebox_controller.rb:27:in 'block in show'", "/var/www/discourse/lib/hijack.rb:56:in 'instance_eval'", "/var/www/discourse/lib/hijack.rb:56:in 'block in hijack'", "/var/www/discourse/lib/scheduler/defer.rb:94:in 'block in do_work'", "/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-2.5.0/lib/rails_multisite/connection_management.rb:76:in 'with_connection'", "/var/www/discourse/lib/scheduler/defer.rb:89:in 'do_work'", "/var/www/discourse/lib/scheduler/defer.rb:79:in 'block (2 levels) in start_thread'"]`

我不明白为什么我的服务器会突然认为 `youtube.com` 的证书与 URL 不匹配：🤨

---

<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: [2021年一月28日 17:31 UTC](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748/49 "2021-01-28T17:31:22Z")

</div>

@legrit 你能分享一下你正在尝试嵌入的 URL 吗？另外，请在你的服务器上运行以下命令：

```plaintext
cd /var/discourse
./launcher enter app
curl -vI https://www.youtube.com

```

并将输出结果粘贴到这里。

---

<div class="post-metadata">

### Author: ![legrit](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/legrit/32/90307_2.png) [@legrit](https://meta.discourse.org/u/legrit)
#### Post date: [2021年一月30日 01:35 UTC](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748/50 "2021-01-30T01:35:33Z")

</div>

我解决了这个问题。

在 Docker 容器的 /etc/resolv.conf 文件中，我将我的服务器 IP 设为第一个地址，将 Google 的 8.8.8.8 设为第二个地址。我移除了第一个地址后，问题就解决了。

我不太确定具体原因，但当时只有 YouTube 无法从容器内访问。

---

<div class="post-metadata">

### Author: ![Overgrow](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/overgrow/32/478189_2.png) [@Overgrow](https://meta.discourse.org/u/Overgrow)
#### Post date: [2021年四月5日 20:28 UTC](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748/51 "2021-04-05T20:28:59Z")

</div>

我的 YouTube 嵌入视频无法加载……

 ![image](https://global.discourse-cdn.com/meta/original/3X/3/5/35db9721383a5d37cc16ebe8abde4a128adb5a5b.png)

看起来被重定向到了“同意”页面。在 Meta 上运行正常。

最近有什么变化吗？

---

<div class="post-metadata">

### Author: ![Richie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/richie/32/115110_2.png) [@Richie](https://meta.discourse.org/u/Richie)
#### Post date: [2021年四月5日 20:36 UTC](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748/52 "2021-04-05T20:36:36Z")

</div>

@Overgrow 请查看：[Youtube embeddings have stopped working for servers in Europe](https://meta.discourse.org/t/youtube-embeddings-have-stopped-working-for-servers-in-europe/185128)

[上一頁](https://meta.discourse.org/t/youtube-videos-onebox-embedding-stopped-working/153748.md?page=2)
