네이버 카페 글은 검색 허용이 되어 있다면 네이버 검색을 통해서 멤버 공개인 글도 볼 수 있다.
지난번 검색엔진 추적링크 차단 유저 스크립트을 만들다가 어느 분의 댓글 덕분에 리퍼러 관련해서 이것저것 해봤는데 카페 글에 들어갈 때 리퍼러를 search.naver.com로 조작하면 네이버 검색을 통하지 않고도 글을 볼 수 있었다.
리퍼러 조작은 유저 스크립트로는 불가능하고 브라우저 확장으론 가능해서 일단 찾아봤는데 크롬 쪽은 이미 관련 확장 프로그램이 있더라.. 뭐 내가 사용 중인 파이어폭스에선 관련 부가 기능이 없어서 직접 만들어 보기로 했다.
좀 찾아보니 부가 기능 개발은 WebExtensions이라는 걸 알아보면 됐었다. 근데 이게 크롬 이후로 파이어폭스, 엣지 등 대부분의 브라우저가 지원하는 확장 API라길래 이왕 만드는 김에 다른 브라우저들도 지원하기로 했다.
제작 과정에서 할 얘기가 많지만 아래로 넘기고 일단 설치 링크부터...
네이버 카페 패스는 네이버 카페 게시글 중 검색 허용되었으나 멤버 공개인 글을 카페 가입 없이 바로 볼 수 있게 해주는 브라우저 확장이다.
Chrome: https://chrome.google.com/webstore/detail/gipgjcnhbklggnannochejcaieghkmcn
Whale: https://store.whale.naver.com/detail/jbhpjfbiohcbmahilfnkaencepaaohmn
이 외에도 크롬 웹 스토어를 지원하는 브라우저(웨일, 비발디, 오페라 등)라면 설치 가능하다. 오페라, 엣지 확장 스토어에도 등록하려고 준비 중.ㅎㅎ
크롬 웹 스토어를 지원하지 않더라도 WebExtensions을 지원하는 브라우저라면 소스 코드 받아다가 직접 설치해도 된다.
소스 코드는 언제나 그렇듯 깃허브에 올려 두었다.
https://github.com/joyfuI/NaverCafePass
이제 제작 과정 이야기...
솔직히 처음에 파이어폭스만에서 테스트해가며 만들었을 땐 별 기능도 없는 확장이라 금방 만들었다. 근데 다른 브라우저들도 같이 지원하려고 보니 브라우저마다 미묘하게 달라서 답답했다.
일단 첫 시작부터 문제가 있었는데 파이어폭스는 browser, chrome 네임스페이스를 모두 지원하는데 크롬은 chrome만 지원한다. 또, 엣지는 browser만 지원한다;;; 나중에 보니까 웨일은 whale, 오페라는 opr라는 게 있다. 아이고.. 그래도 다행인 건 오페라는 기본 chrome에 오페라 전용만 opr인 거고 웨일은 chrome도 함께 지원한다는 거. 아무래도 크로뮴 기반 브라우저는 chrome로 대통합을 이룰 것 같다. 근데 WebExtensions 표준은 browser인게 함정.
그리고 manifest.json의 background.persistent 값 관련해서 파이어폭스는 해당 값을 지원하지 않지만 엣지는 반드시 지정해야 한다. 이건 뭐 오류가 뜨는 건 아니라서 문제는 아니였다.
제일 답답했던 문제는 webRequest.onBeforeSendHeaders 관련 문제였다.
다 만들고보니 유독 크롬에서만 작동이 안되길래 찾아보니 세 번째 인자 옵션으로 extraHeaders를 추가해야 한다고 한다. 추가했더니 이번엔 크롬에서만 동작하고 나머지는 에러가 난다. 그래서 크롬에서만 extraHeaders를 추가하도록 만들었다. 그랬더니 이번엔 웨일, 비발디, 오페라 등 크로뮴 기반 브라우저에서 오류가 났다. 알고보니 이게 최신버전인 크롬 72 버전부터 추가된 거라 이전 크로뮴 엔진을 쓰면 오류가 나는 거였다.ㅡㅡ 아오진짜... 결국 예외처리를 이용해서 꾸역꾸역 해결했다.
크로스 개발하라고 API 만들면 뭐하나.. 다 따로따로 노는데..
마지막으로 엣지 확장을 등록하려면 마이크로소프트 스토어에 등록해야 하는데 검색이 불편한 건 둘째치고 등록 과정 자체가 괴랄하다;;
개발자 권한은 학생이라 이미 얻어놨었지만 엣지 확장은 따로 승인이 필요하다고 한다. 근데 승인할 때 다른 스토어에 올라가있는 확장 프로그램 주소가 필요하다는 점... 이뭐병. 그럼 엣지 전용 확장은 만들지도 못하는 건가... 파이어폭스나 크롬은 올리는데 20분 정도 밖에 안걸렸는데 엣지는 아직도 승인이 나질 않아서 못 올리고 있다.
'프로그래밍 > 웹' 카테고리의 다른 글
[JavaScript] fetch로 form data 보내기 (5) | 2021.01.30 |
---|---|
[자작] 구글 URL번역 차단해제 유저스크립트 (0) | 2020.09.19 |
웹 개발 시 헛갈리는 개념 정리, this vs that (0) | 2020.08.23 |
[자작] New네이버 (0) | 2019.11.03 |
[자작] 검색엔진 추적링크 차단 유저스크립트 (1) | 2019.03.02 |
[자작] 구글검색 기간설정 메뉴추가 유저스크립트 (5) | 2019.01.08 |
[PHP] 서버 접속 여부 확인 (0) | 2018.11.11 |
[JavaScript] 메시지창 없이 바로 닫기 (0) | 2018.11.05 |