유튜브 영상 원박스 임베딩이 작동하지 않습니다

우리가 실제로 IP 차단되었는지 아닌지 어떻게 알 수 있을까요?

저는 이렇게 해보았습니다:

하지만 영상은 아무 문제 없이 다운로드되었습니다.

root@ubuntu-8gb-hel1-4:~# youtube-dl https://www.youtube.com/watch?v=Xl-PTTeRsik
[youtube] Xl-PTTeRsik: Downloading webpage
[youtube] Xl-PTTeRsik: Downloading MPD manifest
[download] Destination: Loading cargo into HTV-9 Konutori-Xl-PTTeRsik.mp4
[download] 100% of 11.41MiB in 00:01

혹시 제 문제는 다른 곳에서 비롯된 걸까요? :confused:

Discourse가 YouTube 링크를 onebox 처리하려고 할 때 404 오류가 발생합니다.

지금은 시간이 많지 않아 간단하게 몇 가지 코멘트만 남깁니다.

  1. 현재 모든 재처리(re-bake) 작업이 Sidekiq를 통해 처리되었나요? https://yourforum/sidekiq에 많은 작업이 표시되고 있나요? 그렇다면 단순히 Onebox 처리에 시간이 걸리고 있는 것일 수 있습니다.

  2. 제가 수행한 이 진단을 확인해 보고, 해당 과정을 재현한 후 결과를 보고해 주세요.

  1. 재처리 도중에 YouTube에 의해 차단되었다면, 임베드된 링크가 포함된 게시물이 처리되었는지 여부를 알 수 없으므로 다시 재처리를 해야 합니다. 저는 YouTube 게시물을 다시 형식화하고 청크 단위로 재처리하는 유틸리티를 직접 작성한 바 있습니다.

  2. 불행히도 Oneboxer는 오류 메시지를 출력하지 않고 실패하는 경우가 많아 원인을 파악하기 어렵습니다. 저는 429 오류가 발생하고 있다는 사실을 발견하기 위해 @merefield의 플러그인을 포크하여 수정하고 오류 메시지를 로그에 기록하도록 해야 했습니다. 제 포크를 자유롭게 사용하셔도 되지만, 이는 다소 해킹적인 방식이며(방금 알아차렸는데) Roberts의 버전보다 몇 개의 커밋이 뒤처져 있습니다.

  1. 실제로 레이트 리미팅(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

  1. 마지막으로, embed.rocks에 대한 질문에 답하자면, 저는 embed.rocks 계정에 가입하여 Onebox Assistant와 함께 테스트해 보았으며, 부분 재처리 과정에서 완벽하게 작동했습니다. 그러나 5번에서 설명한 이상한 동작 방식으로 인해 이미 설정을 해제했습니다.

오래된 포럼에서는 과거에 유효했던 YouTube 링크가 더 이상 작동하지 않는 경우가 흔합니다. 저작권 문제나 계정 폐쇄 등으로 인해 영상이 삭제되어 해당 링크가 무효화되기 때문입니다. 혹시 이러한 상황을 겪고 계신 건가요?

안녕하세요,

아니요, 영상은 작동합니다 :frowning:

130만 개 중 90만 개의 게시글이 아직 rebake 대기 상태입니다(최소 일주일 이상 소요될 것입니다). 하지만 1~2일 전까지는 새 게시글에 대해 oneboxing이 완벽하게 작동하고 있었습니다.

이제 YouTube 링크를 포함한 새 게시글을 만들거나, 이미 YouTube 링크가 포함된 게시글의 HTML을 다시 빌드하면 다음 404 오류가 발생합니다:

다른 onebox들은 잘 작동합니다(vimeo, twitter 등을 시도해 보았음).

수정: 여기서 게시글들을 다시 읽어보니 여러분과 동일한 문제를 겪고 있는 것 같습니다.

메시지에서 BAN이 해제되었다고 하셨을 때, 여러분이 직접 YouTube에 연락한 것이 아니라 아무 조치 없이 BAN이 해제된 것으로 이해했습니다.

구식 게시글에 임베드된 영상이 없는 것은 크게 신경 쓰지 않지만, 새 게시글은 신경 쓰입니다.
제 포럼은 아직 오픈되지 않았고, 사용자에게 좋은 경험을 제공하고자 합니다. :slight_smile:

수정: 여러 번 수정해서 죄송합니다.
여기에서 설명된 기이한 우회 방법을 시도해 보았습니다: "Onebox Assistant", crawl for those previews reliably! - #35
그리고 실제로 작동합니다. "전체 rebake"가 끝나기를 기다린 후, YouTube가 IP BAN을 자동으로 해제하는 것 같으니 며칠에서 몇 주 정도 더 기다리겠습니다.

안녕하세요,
제 포럼에서 YouTube 영상 하나가 박싱(boxing)되지 않습니다.
일주일 전 많은 음악 영상이 포함된 주제를 시작했는데, @marcozambi 님과 동일한 문제가 발생하여 원박스(oneboxing) 시 404 오류가 나고 있습니다.
어떻게 해야 할까요?

안녕하세요, 저도 같은 문제를 겪고 있습니다. 다만:

  • 제 서버는 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과 일치하지 않는다고 생각하는 이유를 이해할 수 없습니다. :face_with_raised_eyebrow:

@legrit 임베드하려는 URL이 무엇인지 공유해 주시겠어요? 또한 서버에서 다음 명령을 실행해 보세요:

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

그리고 출력을 여기에 붙여넣어 주세요.

문제를 해결했습니다.

Docker 컨테이너의 /etc/resolv.conf 파일에서 내 서버 IP를 첫 번째 주소로, Google의 8.8.8.8을 두 번째 주소로 설정해 두었습니다. 첫 번째 주소를 제거하니 정상적으로 작동했습니다.

정확히 무슨 일이 있었는지는 확실하지 않습니다. 컨테이너에서 접근할 수 없었던 사이트는 YouTube뿐이었거든요.

YouTube 임베드가 작동하지 않습니다 ..

“동의” 페이지로 리다이렉트되는 것 같습니다. 메타에서는 잘 작동하고 있습니다.

최근에 변경된 사항이 있나요?

@Overgrow 다음 링크를 확인해 주세요: Youtube embeddings have stopped working for servers in Europe