프라이버시 우선 Firefox 새 탭 확장 프로그램을 만든 방법 (데이터 수집 없음, 절대)
I’m happy to help translate the article, but I don’t have the article’s content in your message. Could you please paste the text you’d like translated (excluding the source line you’ve already provided)? Once I have the content, I’ll translate it into Korean while preserving the original formatting, markdown, and any code blocks or URLs.
대부분의 브라우저 확장 프로그램의 문제점
Browser extensions have a reputation problem. Many popular extensions — weather apps, new tab replacements, productivity tools — quietly collect your browsing data, sell it to advertisers, or require accounts that tie activity to your identity.
브라우저 확장 프로그램은 평판 문제가 있습니다. 많은 인기 확장 프로그램—날씨 앱, 새 탭 교체, 생산성 도구—은 조용히 사용자의 브라우징 데이터를 수집하고, 광고주에게 판매하거나, 활동을 사용자의 신원과 연결하는 계정을 요구합니다.
When I built the Weather & Clock Dashboard for Firefox, I made a different choice: zero data collection, no accounts, no tracking. Here’s exactly how that works technically.
제가 Firefox용 Weather & Clock Dashboard를 만들었을 때, 저는 다른 선택을 했습니다: 데이터 수집 전혀 없음, 계정 없음, 추적 없음. 다음은 기술적으로 그것이 어떻게 작동하는지 정확히 설명합니다.
“프라이버시‑우선”이 실제 의미하는 바
이 용어는 자주 사용됩니다. 이 확장 프로그램에서는 다음을 의미합니다:
- No network requests to my servers — 날씨 데이터는 브라우저에서 직접 Open‑Meteo의 API로 전송됩니다
- No analytics or telemetry — Mixpanel도, GA4도, PostHog도 사용되지 않습니다
- No account required — 설정이
localStorage를 통해 로컬에 저장되며, 절대 동기화되지 않습니다 - Minimal permissions —
storage와geolocation만 필요합니다 (날씨를 활성화한 경우)
아키텍처
[Your Browser] → [Open-Meteo API] (weather data)
[Your Browser] → [localStorage] (your settings)
That's it. No middleman.
백엔드 없이 날씨 처리하기
대부분의 날씨 확장 프로그램은 여러분의 위치를 자체 서버를 통해 라우팅합니다. 이를 통해 다음과 같은 작업을 할 수 있습니다:
- IP 주소를 기록합니다
- 위치를 계정과 연결합니다
- 데이터를 판매합니다
Open‑Meteo를 사용하면 이 모든 것을 건너뛸 수 있습니다:
// Browser requests weather directly — no proxy server
async function fetchWeather(lat, lon) {
const url = `https://api.open-meteo.com/v1/forecast
?latitude=${lat}
&longitude=${lon}
¤t_weather=true
&daily=temperature_2m_max,temperature_2m_min,weathercode
&forecast_days=3`;
const response = await fetch(url);
return response.json();
}
Open‑Meteo는 API 키가 필요 없는 무료 오픈소스 날씨 API입니다. 여러분의 IP가 그들의 서버에 접속하게 되지만(이는 모든 날씨 서비스에서 피할 수 없는 일입니다), 계정 연동은 없습니다.
위치 정보: 사용자 동의 우선
function requestWeatherPermission() {
navigator.geolocation.getCurrentPosition(
position => {
// User approved — fetch weather
fetchWeather(position.coords.latitude, position.coords.longitude);
},
error => {
// User denied — show a default city selector
showCitySearch();
}
);
}
브라우저의 기본 위치 정보 권한 대화 상자는 사용자가 완전한 제어권을 가집니다. 권한이 거부되면 확장 프로그램은 기본 도시 선택기로 전환되어 정확한 위치를 공유하지 않아도 날씨 정보를 얻을 수 있습니다.
설정 저장소: localStorage 전용
모든 설정 — 테마, 선택한 도시, 온도 단위 — 은 localStorage에 저장됩니다. 데이터는 어디에도 전송되지 않습니다.
const SETTINGS_KEY = 'wcd_settings';
function saveSettings(settings) {
localStorage.setItem(SETTINGS_KEY, JSON.stringify(settings));
}
function loadSettings() {
const raw = localStorage.getItem(SETTINGS_KEY);
return raw ? JSON.parse(raw) : DEFAULT_SETTINGS;
}
이는 설정이 기기 간에 동기화되지 않음을 의미합니다 — 이는 의도된 트레이드오프입니다. 동기화를 위해서는 서버가 필요하고, 서버를 위해서는 계정이 필요하며, 이는 프라이버시 흔적을 남기게 됩니다.
권한 매니페스트
Firefox 확장 프로그램은 manifest.json에 권한을 미리 선언합니다. 우리의 경우는 다음과 같습니다:
{
"permissions": [
"storage"
],
"optional_permissions": [
"geolocation"
]
}
storage는 localStorage를 위한 권한이며, geolocation은 선택적 권한으로 “날씨 사용”을 클릭했을 때만 요청됩니다. tabs, history, browsingData, webNavigation과 같이 핵심 기능에 실제로 필요하지 않은 권한을 요청하는 확장 프로그램과 비교해 보세요.
오픈 소스와 책임성
이 확장은 MIT 라이선스를 사용하며 소스 코드는 검토를 위해 제공됩니다. 프라이버시 주장은 쉽게 할 수 있지만, 소스 코드를 위조하기는 어렵습니다.
사용자가 코드를 읽을 수 있을 때, 다음을 확인할 수 있습니다:
- 숨겨진 API 호출이 없음
- 난독화된 추적 코드가 없음
- 권한이 실제로 주장하는 용도로 사용됨
결과
Weather & Clock Dashboard는 새 탭 대체 기능으로 작동합니다:
- 실시간 날씨 및 3일 예보
- 여러 시간대에 대한 세계 시계
- 검색창 (원하는 엔진 선택)
- 다크/라이트 모드
여러분의 데이터를 단 한 바이트도 수집하지 않습니다.
설치: Weather & Clock Dashboard on AMO
브라우저 확장 프로그램을 개발 중이라면 같은 방식을 고려해 보세요. 사용자는 프라이버시에 대해 점점 더 까다로워지고 있습니다 — 진정으로 프라이버시를 최우선으로 하는 것은 윤리적일 뿐만 아니라 경쟁력도 됩니다.