배경
#9(플로팅 창 노출)는 OSR 전환으로 해결됐으나, 제보자(Linux)가 후속 확인:
window is not opening, that is fine but the problem statement is also not appearing, it just says Fetching.... after waiting for a while the same error appears
즉 창 노출은 해결됐지만, OSR 폴백이 그 환경에서 페이지를 가져오지 못하고 JCEF internal timeout으로 끝남.
원인 (추정)
에러가 "Cloudflare challenge not passed"가 아니라 JCEF internal timeout인 점으로 보아, 챌린지 난이도 문제가 아니라 OSR 브라우저가 해당 환경(Linux/Wayland)에서 페이지 로드·JS 실행을 못 하고 있을 가능성:
- 창 없이 만든 OSR 컴포넌트의 뷰포트가 0×0으로 잡혀 렌더링이 안 돎
- 또는 Cloudflare가 클릭이 필요한 인터랙티브 챌린지를 내는 경우 (보이지 않는 브라우저로는 원리적으로 통과 불가)
수정
SWEA fetch가 이미 쓰는 3단 폴백 패턴을 코드포스에도 적용:
- OSR 뷰포트 보강 –
setBounds 후 cefBrowser.wasResized() 호출로 뷰포트 크기를 확실히 전달 (0×0 렌더링 방지)
- 보이는 다이얼로그 폴백 신설 – OSR이 실패하면 제목줄·닫기 버튼이 있는 정식
DialogWrapper에 JCEF 브라우저를 띄워 사용자가 직접 Cloudflare 챌린지를 통과하게 함. .problem-statement가 나타나면 자동 추출·닫기. (SweaFetchDialog와 동일 패턴)
이러면 원인이 OSR 렌더링 실패든 인터랙티브 챌린지든 최종적으로 항상 동작.
배경
#9(플로팅 창 노출)는 OSR 전환으로 해결됐으나, 제보자(Linux)가 후속 확인:
즉 창 노출은 해결됐지만, OSR 폴백이 그 환경에서 페이지를 가져오지 못하고
JCEF internal timeout으로 끝남.원인 (추정)
에러가 "Cloudflare challenge not passed"가 아니라
JCEF internal timeout인 점으로 보아, 챌린지 난이도 문제가 아니라 OSR 브라우저가 해당 환경(Linux/Wayland)에서 페이지 로드·JS 실행을 못 하고 있을 가능성:수정
SWEA fetch가 이미 쓰는 3단 폴백 패턴을 코드포스에도 적용:
setBounds후cefBrowser.wasResized()호출로 뷰포트 크기를 확실히 전달 (0×0 렌더링 방지)DialogWrapper에 JCEF 브라우저를 띄워 사용자가 직접 Cloudflare 챌린지를 통과하게 함..problem-statement가 나타나면 자동 추출·닫기. (SweaFetchDialog와 동일 패턴)이러면 원인이 OSR 렌더링 실패든 인터랙티브 챌린지든 최종적으로 항상 동작.