Canapin
(Coin-coin le Canapin)
41
如何确认我们是否真的被 IP 封禁?
我是这样做的:
但视频下载没有任何问题。
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 错误。
bletch
(Danny Goodall)
42
我现在没时间详细回复,但先说几点:
-
目前所有的重新烘焙(re-bake)任务是否都已通过 Sidekiq 处理完毕?https://yourforum/sidekiq 页面是否显示大量待处理任务?如果是,那可能只是因为 Onebox 处理需要一些时间。
-
请查看我执行的一项诊断,尝试复现该过程并反馈结果。
-
如果在重新烘焙过程中 YouTube 封禁了你,那么你就必须重新执行一次重新烘焙,因为你无法确定哪些包含嵌入链接的帖子已经被处理过。我实际上编写了一个工具,用于重新格式化 YouTube 帖子并按批次进行重新烘焙。
-
遗憾的是,Oneboxer 似乎会在没有提示的情况下失败,因此很难确定原因。我不得不 fork 并修改 @merefield 的插件,以记录错误日志,最终发现我收到了 429 错误。你当然可以使用我的 fork 版本,但这有点算是 hack,而且(我刚刚注意到)它比 Roberts 的版本落后了几个提交。
- 如果你确实受到了速率限制(即从 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/36?u=bletch
- 最后,关于你询问的 embed.rocks,我已经注册了 embed.rocks 的账户,并用 Onebox Assistant 进行了测试,在部分重新烘焙过程中表现完美。不过,由于它表现出第 5 点中描述的异常行为,我随后已将其配置移除。
bletch
(Danny Goodall)
43
在运行了一段时间的论坛中,曾经有效的 YouTube 链接失效是很常见的。视频可能因版权问题被删除,或账户被关闭,导致这些链接无法使用。您是否可能遇到了这种情况?
Canapin
(Coin-coin le Canapin)
44
你好,
不,视频可以正常播放 
目前仍有 90 万条(总共 130 万条)帖子等待重新生成(至少需要一周时间),但一两天前,新帖子的 Onebox 功能是正常工作的。
现在,如果我在发布新帖子时包含 YouTube 链接,或者重新构建已包含 YouTube 链接的帖子的 HTML,就会出现以下 404 错误:
其他 Onebox 功能正常(已测试 Vimeo、Twitter 等)。
编辑:重新阅读了这里的帖子,看来我遇到了和大家一样的问题。
当你说他们解除了你的封禁时,我理解为你并没有主动联系他们,封禁是自动解除的吗?
我并不太在意旧帖子中是否嵌入了视频,但我非常关注新帖子的体验。
我的论坛尚未开放,我希望能为用户提供良好的体验。
编辑:抱歉多次编辑,打扰大家了。
我尝试了这里描述的奇怪变通方法:"Onebox Assistant", crawl for those previews reliably! - #35
确实有效。我想我会等待“全部重新生成”完成,既然 YouTube 似乎会自动解除 IP 封禁,我就再等几天或几周吧。
Saiano
(Saiano)
45
您好,
我的论坛在嵌入 YouTube 视频时出现问题。
我们一周前创建了一个包含大量音乐视频的帖子,现在似乎遇到了与 @marcozambi 相同的问题:嵌入视频时返回 404 错误。
请问我该如何解决?
legrit
(Alex Legrand)
47
你好,我也遇到了同样的问题:
- 我的服务器似乎没有被 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 不匹配:
Falco
(Falco)
49
@legrit 你能分享一下你正在尝试嵌入的 URL 吗?另外,请在你的服务器上运行以下命令:
cd /var/discourse
./launcher enter app
curl -vI https://www.youtube.com
并将输出结果粘贴到这里。
legrit
(Alex Legrand)
50
我解决了这个问题。
在 Docker 容器的 /etc/resolv.conf 文件中,我将我的服务器 IP 设为第一个地址,将 Google 的 8.8.8.8 设为第二个地址。我移除了第一个地址后,问题就解决了。
我不太确定具体原因,但当时只有 YouTube 无法从容器内访问。
我的 YouTube 嵌入视频无法加载……
看起来被重定向到了“同意”页面。在 Meta 上运行正常。
最近有什么变化吗?
Richie
(Richie Rich)
52