updates

FlowPick v1.1.1: 보호 리소스 미리보기 및 다운로드

v1.1.1 출시——안티 핫링크 프록시 미리보기와 다운로드. Referer 검증이 있는 사이트의 이미지, 오디오, 문서, 자막이 드디어 받아진다. 비디오 커버 로딩도 빠르고, Firefox 지원도 강화.
FlowPick Team
7분 분량
# 릴리즈 # v1.1.1 # 업데이트 # changelog # 안티 핫링크 # firefox

v1.1.0은 "더 많이 감지"였다. v1.1.1은 "이미 감지한 것을 실제로 받는 것"이다——구체적으로, 다운로드하려 하면 실패하는 것들.

계속 부딪히던 벽: FlowPick이 미디어 리소스를 감지하고, 목록에 표시하고, 사용자가 다운로드를 클릭하면…… 아무것도 안 일어난다. 또는 더 최악으로, HTML 에러 페이지가 image.jpg로 저장된다. 원인? 안티 핫링크 보호. 서버가 Referer 헤더를 검사하고, 브라우저 확장을 예상 페이지 대신 보면, 403이나 "로그인하세요" HTML 페이지를 반환한다. FlowPick의 URL은 맞지만 그 요청이 "승인된 출처"임을 증명할 수 없다.

v1.1.1은 프록시 레이어로 이를 해결한다——프록시가 올바른 헤더를 운반한다. FlowPick을 쓰고 있다면 GitHub Releases에서 업데이트. 처음이라면 v1.0.0 릴리즈 노트부터.

안티 핫링크 프록시 미리보기

가장 먼저 눈치챌 것: 깨진 플레이스홀더로 표시되던 이미지가 이제 로드된다.

  • 프록시 기반 이미지 미리보기. 이미지 목록, 커버 아트, 호버 미리보기, 전체 크기 보기가 모두 프록시를 경유하여, 이용 가능한 Referer와 쿠키를 운반. 직접 요청을 차단하던 크로스 오리진 제한을 우회.
  • 쿠키 자동 전달. 원래 페이지에 이미지를 인가하는 세션 쿠키가 있으면, 프록시가 그걸 운반. 수동 헤더 설정 불필요.

이게 시각적 버그 1위였다——FlowPick이 갤러리 페이지에서 이미지 50장을 감지하고, 절반의 썸네일이 빈칸이 된다. CDN이 일치하는 Referer 없는 크로스 오리진 요청을 거부하기 때문. 이제 전부 로드된다.

통합 프록시 다운로드

미리보기는 한 가지, 다운로드는 또 다른 문제——v1.1.0에는 성가신 버그가 있었다. 안티 핫링크 보호된 다운로드가 HTML 에러 페이지를 요청한 파일로 조용히 저장하는 것. cover.jpg를 열면 로그인 폼이 나왔다.

v1.1.1은 통합 프록시 다운로드를 추가:

  • 이미지 —— JPG, PNG, GIF, WebP, SVG, AVIF
  • 오디오 —— MP3, AAC, WAV, OGG, FLAC, M4A
  • 문서 —— PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, EPUB, CSV, RTF
  • 자막 —— SRT, VTT

프록시는 Referer, 쿠키, 인증 헤더를 운반. 저장 전에 응답을 검사——서버가 HTML 페이지를 반환한 경우(그 "로그인하세요" 리다이렉트), FlowPick은 저장을 거부하고 쓰레기를 쓰지 않는다. 이게 "이미지를 다운로드했는데 HTML 파일을 받았다"는 보고의 수정.

비디오 커버 로딩 속도 향상

v1.0.0과 v1.1.0의 비디오 커버 처리는 멍청했다: 먼저 직접 크로스 오리진 요청을 시도하고, 타임아웃을 기다리고(10초 이상), 그리고 프록시로 폴백. v1.1.1은 이 대기 시간을 건너뛴다.

  • 직접 프록시 프리로드. Referer가 있는 비디오 커버는 이제 직접 프록시 리소스로 간다. 크로스 오리진 요청이 실패하기를 기다렸다가 전환할 필요 없음.
  • 팝업 더 빠르게. 미디어 목록의 커버 채우기가 눈에 띄게 빨라진다. 특히 이미지·비디오가 밀집한 페이지에서 20개 이상의 커버가 동시에 로드될 때.

작은 변경이지만 체감 향상이 크다. 팝업이 더 반응적으로 느껴진다. 썸네일이 15초에 걸쳐 하나둘씩 나타나는 걸 지켜볼 필요가 없다.

Firefox 지원 강화

Firefox는 v1.1.0에서 손해를 봤다——Chrome의 declarativeNetRequest API는 헤더 주입이 직관적이었지만, Firefox 구현에는 빈틈이 있었다. v1.1.1이 그걸 메운다.

  • webRequestBlocking으로 헤더 주입. Firefox는 이제 webRequestBlocking을 사용해 미디어 요청에 Referer와 인증 헤더를 주입. 이 API는 Chrome은 폐기했지만 Firefox는 여전히 지원——이 용도에는 올바른 도구.
  • Origin 헤더 제거. Firefox의 기본 Origin 헤더가 일부 서버에서 크로스 오리진 미디어 요청을 거부하는 원인이었다. v1.1.1은 미디어 리소스에 대해 자동으로 이를 제거.
  • 크로스 오리진 로딩 안정화. 보호된 이미지, 오디오, 비디오, 기타 미디어가 Firefox에서 안정적으로 로드된다. 이전에 많은 Firefox 사용자가 "FlowPick은 리소스를 보지만 다운로드할 수 없다"고 보고——CORS + 헤더 부족이 원인, 수정 완료.

Firefox 사용자, 이 버전은 당신을 위한 것이다. v1.0.0 릴리즈 노트가 기능 동등성을 약속했고, 우리는 진심이었다——v1.1.1은 그 약속을 보호 리소스에서 실현한다.

버그 수정

안티 핫링크 재작성은 엣지 케이스 더미도 정리했다:

  • 안티 핫링크 보호로 이미지가 표시되지 않는 문제 수정.
  • 이미지 다운로드가 실제 이미지 대신 HTML 에러 페이지를 조용히 저장하는 문제 수정.
  • 필수 요청 헤더 누락으로 오디오·문서 다운로드가 실패하는 문제 수정.
  • Firefox에서 크로스 오리진 CORS 리소스 로딩이 실패하는 문제 수정.
  • 일부 비디오 커버 로딩이 너무 느린 문제 수정.
  • 프록시 요청이 캐시 헤더를 운반하여 응답이 부정확하거나 불완전해지는 문제 수정.

다음은

v1.1.1은 신뢰성 릴리즈——FlowPick이 이미 감지한 것을 실제로 다운로드 가능하게 만든다. 다음 릴리즈는 포맷 변환(TS→MP4는 되지만, MKV/MP3 내보내기가 가장 요청이 많은 기능)과 4K 스트림 성능에 집중할 것이다.

v1.1.1에서도 감지된 리소스를 다운로드할 수 없는 사이트를 만나면, GitHub에 issue를 제출해달라. URL과 브라우저 버전을 함께. changelog 페이지가 모든 버전을 추적한다.


추천 글

추천 읽기