wazroth
(wazroth)
2월 18, 2024, 11:29오후
1
다른 Discourse 포럼에서 @sam이 여기에 버그 보고를 하라고 제안했습니다: CNN 기사의 원박싱(oneboxing)이 (최소) 간헐적으로 실패하는 것 같습니다. 이 사이트가 중요한 사이트이므로 꽤 심각한 문제인 것 같습니다. 레이트 리미팅 문제인지, 사용자 에이전트 차단인지, Discourse 측 문제인지, 실제 oEmbed 데이터 문제인지, 아니면 그 외의 문제인지는 명확하지 않습니다.
예시:
(신규 사용자 제한으로 인해 추가 예시는 제거되었습니다.)
4개의 좋아요
Lilly
(Lillian )
2월 18, 2024, 11:46오후
2
안녕하세요 @wazroth Meta에 오신 것을 환영합니다. 보고해 주셔서 감사합니다.
네, 제 개발 인스턴스와 호스팅된 사이트에서 이 문제를 재현할 수 있었습니다. CNN 링크가 원박싱(oneboxing)이 전혀 되지 않고 있습니다.
3개의 좋아요
sam
(Sam Saffron)
2월 19, 2024, 12:25오전
3
@wazroth 감사합니다. 이 문제를 디버깅할 작업을 앞으로 4주 내의 일정으로 잡아두었습니다.
4개의 좋아요
tgxworld
(Alan Tan)
5월 7, 2024, 6:05오전
7
@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개의 좋아요
sam
(Sam Saffron)
5월 7, 2024, 6:29오전
8
음, 그리고 … 계속해서 말하자면, 우리가 필요한 모든 정보는 어차피 처음 2MB 안에 다 들어있지 않나요?
2개의 좋아요
참고로 Amazon Onebox broken 도 관련이 있을 수 있습니다.
Richie
(Richie Rich)
5월 7, 2024, 5:27오후
10
이 max_download_kb 설정은 하드코딩되어 있나요? 관리자 메뉴에서 변경할 수 없는 건가요?
tgxworld
(Alan Tan)
5월 8, 2024, 4:10오전
11
원박스 엔진에 따라 다릅니다. Amazon과 같은 일부 원박스 엔진은 <body> 내에서 가격과 같은 특정 정보를 스크래핑합니다. 오픈그래프 엔진의 경우, 이론적으로 <head> 안의 <meta>와 같은 특정 태그만 있으면 됩니다.
가장 효율적인 방법은 스트리밍으로 응답을 수신하는 동안 필요한 정보를 파싱하는 것입니다. 그러나 모든 엔진을 이렇게 변경하는 것은 상당한 노력이 필요하며 훨씬 더 복잡한 솔루션이 됩니다.
실제로 HTML 응답을 파싱하는 데 사용하는 Nokogiri는 불완전한 HTML 텍스트도 파싱할 수 있으므로, 응답이 너무 크다고 해서 전체 응답을 폐기할 필요가 없습니다. 응답 본문을 2MB로 제한하고, 응답 크기가 이를 초과할 경우 처음 2MB만 파싱하려고 시도하면 된다고 생각합니다.
1개의 좋아요
tgxworld
(Alan Tan)
5월 8, 2024, 5:33오전
12
다음 PR로 수정되었습니다.
main ← fix_dont_throw_away_response_body_when_max_download_exceeded
merged 11:00PM - 08 May 24 UTC
In 95a82d608d6377faf68a0e2c5d9640b043557852, we lowered the default for
`Onebox… .options.max_download_kb` from 10mb to 2mb for security hardening
purposes. However, this resulted in multiple bug reports where seemingly
nomral URLs stopped being oneboxed. It turns out that lowering
`Onebox.options.max_download_kb` resulted in `Onebox::Helpers::DownloadTooLarge` being raised
more often for more URLs in `Onebox::Helpers.fetch_response` which
`Onebox::Helpers.fetch_html_doc` relies on. When
`Onebox::Helpers::DownloadTooLarge` is raised in
`Onebox::Helpers.fetch_response`, we throw away whatever response body
which we have already downloaded at that point. This is not ideal
because Nokogiri can parse incomplete HTML documents and there is a
really high chance that the incomplete HTML document contains the
information which we need for generating a reasonable onebox.
Therefore, this commit updates `Onebox::Helpers.fetch_html_doc` to not
throw away the response body when the size of the response body exceeds
`Onebox.options.max_download_size`. Instead, we just take whatever
we have and get Nokogiri to parse it.
로컬 환경에서 이 주제에서 보고된 “문제 있는” URL은 이제 onebox 처리를 시도할 때 더 이상 오류를 표시하지 않습니다.
5개의 좋아요