원문 캡처 · frankensurf.dev
원문 캡처 · frankensurf.dev

중고 Contax S2 필름 카메라를 찾던 제작자가 웹페이지를 읽는 여러 도구를 단계적으로 연결한 오픈소스 프로젝트 Frankensurf를 만들었다. 제작자가 공개한 테스트에서는 처음 보는 사이트 150곳을 대상으로 95.3%의 페이지를 읽었고, 무료 도구만 썼을 때는 84.7%를 기록했다.

Frankensurf는 페이지를 읽을 때 일반 HTTP 요청처럼 비용이 낮은 방법부터 시도하고, 페이지가 차단됐거나 실제 내용이 불완전하면 브라우저와 스크래퍼 등 다음 도구로 넘어간다. 유료 도구 사용은 선택할 수 있으며, 각 시도에서 무엇이 실패했는지와 걸린 시간, 비용을 기록한다. 제작자는 도구별로 잘 읽는 사이트가 달라 여러 도구를 조합하는 방식을 택했다고 설명했다.

성능 수치는 제작자가 공개한 벤치마크 결과다. 처음 접한 150개 사이트 테스트에서 Frankensurf는 95.3%, Zyte는 86.0%, Firecrawl은 85.3%를 기록했다. 별도의 150개 사이트 테스트에서는 Frankensurf가 96.0%, Firecrawl이 84.7%였다. 무료 도구만 사용한 Frankensurf는 해당 테스트에서 88.0%를 기록했다. 다만 이 결과들은 제작자가 구성한 테스트에 따른 것으로, 모든 웹사이트에서 같은 성능을 보장하지 않는다.

검색 기능도 자체 평가를 수정한 뒤 다시 측정했다. 제작자는 처음에는 Exa와 비슷하다고 주장했지만, 검색 결과를 가리는 방식의 검토에서 Exa가 더 나은 결과를 내자 기존 주장을 철회했다. 이후 새로 만든 질의 120개씩 두 묶음으로 평가한 결과, 무료 설정은 Firecrawl 검색보다 35개 질의에서 나았고 5개에서 뒤졌다. 유료 도구를 허용한 설정은 Exa와 유용한 결과 수가 각각 4.67개와 4.66개로 비슷했으며 비용은 약간 낮았다고 밝혔다.

Frankensurf는 페이지 내용이 실제로 불러와졌는지 확인하고, 검색 결과에는 검색어와 관련된 항목이 있는지 점검한다. 로그인 세션을 로컬 기기에 암호화해 저장해 두고, 로그인한 사용자로 eBay의 판매 완료 가격을 읽는 기능도 있다. 결과는 제목·가격·위치·경매 종료 시각·사진 같은 구조화된 항목으로 받을 수 있다. 사이트별 검색 주소와 결과 위치 등은 코드가 아닌 데이터로 저장해 다음 이용 때 활용한다.

로그인한 Chrome에서 양식을 작성하거나 버튼을 누르는 작업도 지원하지만, 사이트를 읽을 수 있다고 해서 쓰기 권한까지 자동으로 부여되는 것은 아니다. 각 작업은 사이트와 허용할 단계, 금전이나 계정 관련 작업 여부를 따로 승인해야 한다. 비밀번호 입력란, 파일 업로드, 임의의 자바스크립트 실행은 차단한다. 제작자는 중복 제출을 막기 위한 고유 키와 작업 전후 페이지 기록도 둔다고 설명했다.

제작자가 밝힌 한계는 여러 도구를 시도해 직접 읽기보다 느릴 수 있고, 구성 요소가 많으며, 유료 도구를 켜면 비용이 발생한다는 점이다. 프로젝트는 알파 단계라 기능이 바뀔 수 있다. 제작자는 아직 Contax S2를 찾지 못했지만 Gumtree, eBay, Facebook Marketplace와 경매 사이트를 확인하는 데 쓰고 있다고 밝혔다.

Frankensurf 저장소