CNN 원박스 처리 오류

다른 Discourse 포럼에서 @sam이 여기에 버그 보고를 하라고 제안했습니다: CNN 기사의 원박싱(oneboxing)이 (최소) 간헐적으로 실패하는 것 같습니다. 이 사이트가 중요한 사이트이므로 꽤 심각한 문제인 것 같습니다. 레이트 리미팅 문제인지, 사용자 에이전트 차단인지, Discourse 측 문제인지, 실제 oEmbed 데이터 문제인지, 아니면 그 외의 문제인지는 명확하지 않습니다.

예시:

(신규 사용자 제한으로 인해 추가 예시는 제거되었습니다.)

4개의 좋아요

안녕하세요 @wazroth :wave: Meta에 오신 것을 환영합니다. :slight_smile: 보고해 주셔서 감사합니다.

네, 제 개발 인스턴스와 호스팅된 사이트에서 이 문제를 재현할 수 있었습니다. CNN 링크가 원박싱(oneboxing)이 전혀 되지 않고 있습니다.

3개의 좋아요

@wazroth 감사합니다. 이 문제를 디버깅할 작업을 앞으로 4주 내의 일정으로 잡아두었습니다.

4개의 좋아요

@ted max_download_kb를 onebox에서 10mb에서 2mb로 낮춘 이유가 혹시 기억하시나요? SECURITY: Prevent Onebox cache overflow by limiting downloads and URL… · discourse/discourse@95a82d6 · GitHub

보고된 CNN 링크가 응답 크기가 2.7mb로 현재 제한인 2mb보다 크기 때문에 onebox로 처리되지 않고 있습니다. 기본 크기를 높이면 이 문제를 수정할 수 있지만, 그렇게 할 때의 위험성을 더 잘 이해하고 싶습니다.

4개의 좋아요

음, 그리고 … 계속해서 말하자면, 우리가 필요한 모든 정보는 어차피 처음 2MB 안에 다 들어있지 않나요?

2개의 좋아요

참고로 Amazon Onebox broken 도 관련이 있을 수 있습니다.

이 max_download_kb 설정은 하드코딩되어 있나요? 관리자 메뉴에서 변경할 수 없는 건가요?

원박스 엔진에 따라 다릅니다. Amazon과 같은 일부 원박스 엔진은 <body> 내에서 가격과 같은 특정 정보를 스크래핑합니다. 오픈그래프 엔진의 경우, 이론적으로 <head> 안의 <meta>와 같은 특정 태그만 있으면 됩니다.

가장 효율적인 방법은 스트리밍으로 응답을 수신하는 동안 필요한 정보를 파싱하는 것입니다. 그러나 모든 엔진을 이렇게 변경하는 것은 상당한 노력이 필요하며 훨씬 더 복잡한 솔루션이 됩니다.

실제로 HTML 응답을 파싱하는 데 사용하는 Nokogiri는 불완전한 HTML 텍스트도 파싱할 수 있으므로, 응답이 너무 크다고 해서 전체 응답을 폐기할 필요가 없습니다. 응답 본문을 2MB로 제한하고, 응답 크기가 이를 초과할 경우 처음 2MB만 파싱하려고 시도하면 된다고 생각합니다.

1개의 좋아요

다음 PR로 수정되었습니다.

로컬 환경에서 이 주제에서 보고된 “문제 있는” URL은 이제 onebox 처리를 시도할 때 더 이상 오류를 표시하지 않습니다.

5개의 좋아요

훌륭해요, 감사합니다 @tgxworld :smiley:

2개의 좋아요