From c855c00e71de639b99bdf75edd3cbd784ffacc92 Mon Sep 17 00:00:00 2001 From: Victor Solano Date: Mon, 24 Aug 2026 12:42:40 +0200 Subject: [PATCH 01/13] test(globalping): wait on conditions instead of fixed delays MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tests/composable-globalping-measurement.test.js asserted after fixed sleeps that had to cover a POST plus up to three real pollInterval timers. "retries while in-progress" allowed 80ms for that chain and failed under a loaded parallel suite with status still 'running' — a wait that expired, reported as a wrong result. Measured 1 failure in 15 runs locally, and it failed two of three full `pnpm check` runs. waitFor() polls the same observable the assertion reads, so each test now takes as long as its work takes. Its timeout only bounds a hang. The disposal test had the opposite problem: its 10ms sleep could land before the POST resolved, leaving no pending timer for scope.stop() to cancel, so it could pass without exercising cancellation. It now waits for the create body to be read. Its trailing 80ms sleep stays — that one asserts an absence, which no condition can prove. --- .../composable-globalping-measurement.test.js | 47 +++++++++++++++---- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/tests/composable-globalping-measurement.test.js b/tests/composable-globalping-measurement.test.js index b3772ec1f..7ba4d80b5 100644 --- a/tests/composable-globalping-measurement.test.js +++ b/tests/composable-globalping-measurement.test.js @@ -42,6 +42,25 @@ function withScope(fn) { // promises settle before we assert. const tick = () => new Promise((r) => setTimeout(r, 0)); +// Wait until `predicate()` holds, polling on a macrotask so the composable's +// setTimeout-driven poll chain can advance between checks. +// +// A fixed sleep cannot do this job: a run here spans a POST plus up to three +// real `pollInterval` timers, so any constant is either flaky when the machine +// is loaded or slow on every green run. The "retries while in-progress" case +// used to allow 80ms for that chain and failed under a parallel suite with +// status still 'running' — a wait that expired, reported as a wrong result. +// +// The timeout only bounds a hang; it is never reached on a passing run. +async function waitFor(predicate, { timeout = 2000, label = 'condition' } = {}) { + const deadline = Date.now() + timeout; + for (;;) { + if (predicate()) return; + if (Date.now() > deadline) throw new Error(`timed out after ${timeout}ms waiting for ${label}`); + await tick(); + } +} + describe('useGlobalpingMeasurement()', () => { beforeEach(() => { globalThis.fetch = originalFetch; @@ -73,8 +92,7 @@ describe('useGlobalpingMeasurement()', () => { onError: () => { errorCalls++; }, }); - // wait for the poll to land (initial create + one setTimeout(pollInterval)) - await tick(); await tick(); await new Promise((r) => setTimeout(r, 20)); + await waitFor(() => value.status.value !== 'running', { label: "status to leave 'running'" }); assert.equal(value.status.value, 'finished'); assert.equal(finishCalls, 1); @@ -105,7 +123,7 @@ describe('useGlobalpingMeasurement()', () => { value.start({}, { onResults: (d) => d.results.length > 0, }); - await new Promise((r) => setTimeout(r, 80)); + await waitFor(() => value.status.value !== 'running', { label: "status to leave 'running'" }); assert.equal(value.status.value, 'finished'); assert.equal(pollCount, 3); } finally { @@ -131,7 +149,7 @@ describe('useGlobalpingMeasurement()', () => { onResults: () => false, onError: (r) => errorReasons.push(r), }); - await new Promise((r) => setTimeout(r, 60)); + await waitFor(() => value.status.value !== 'running', { label: "status to leave 'running'" }); assert.equal(value.status.value, 'error'); assert.deepEqual(errorReasons, ['empty']); // 1 initial poll + 2 retries = 3 total @@ -160,7 +178,7 @@ describe('useGlobalpingMeasurement()', () => { ); try { value.start({}, { onError: (r) => errorReasons.push(r) }); - await new Promise((r) => setTimeout(r, 20)); + await waitFor(() => value.status.value !== 'running', { label: "status to leave 'running'" }); assert.equal(value.status.value, 'error'); assert.deepEqual(errorReasons, ['create']); assert.equal(polled, false); @@ -181,7 +199,7 @@ describe('useGlobalpingMeasurement()', () => { ); try { value.start({}, { onError: (r) => errorReasons.push(r) }); - await new Promise((r) => setTimeout(r, 20)); + await waitFor(() => value.status.value !== 'running', { label: "status to leave 'running'" }); assert.equal(value.status.value, 'error'); assert.deepEqual(errorReasons, ['create']); } finally { @@ -205,7 +223,7 @@ describe('useGlobalpingMeasurement()', () => { ); try { value.start({}, { onError: (r) => errorReasons.push(r) }); - await new Promise((r) => setTimeout(r, 20)); + await waitFor(() => value.status.value !== 'running', { label: "status to leave 'running'" }); assert.equal(value.status.value, 'error'); assert.deepEqual(errorReasons, ['poll']); } finally { @@ -216,9 +234,13 @@ describe('useGlobalpingMeasurement()', () => { it('scope disposal before the first poll cancels pending timer and never transitions status', async () => { let polled = false; + // Set once the create response body has been read: the composable schedules + // the first poll immediately after that await, so this is the earliest + // point at which there is a pending timer for scope.stop() to cancel. + let createRead = false; stubFetch([ [(url, init) => url === API_BASE && init?.method === 'POST', - () => jsonResponse({ id: 'abc' })], + () => ({ ok: true, status: 200, json: async () => { createRead = true; return { id: 'abc' }; } })], [(url) => url === `${API_BASE}/abc`, () => { polled = true; return jsonResponse({ status: 'finished', results: [{ ok: true }] }); }], ]); @@ -233,9 +255,14 @@ describe('useGlobalpingMeasurement()', () => { onFinish: () => { finishCalls++; }, onError: () => { errorCalls++; }, }); - // let the POST resolve but stop the scope before the poll fires - await new Promise((r) => setTimeout(r, 10)); + // Stop the scope after the poll is scheduled but before it fires. A fixed + // 10ms sleep here could land before the POST resolved, leaving no timer to + // cancel — the test would then pass without exercising the cancellation. + await waitFor(() => createRead, { label: 'the create response to be read' }); + await tick(); scope.stop(); + // Nothing should happen from here on, and only a real wait can show that: + // this is the one delay in the file that is asserting an absence. await new Promise((r) => setTimeout(r, 80)); assert.equal(polled, false, 'poll should never fire after scope stop'); From 9ab4505c60cc77d72f590229b16dfac28ad140d0 Mon Sep 17 00:00:00 2001 From: Victor Solano Date: Mon, 24 Aug 2026 12:43:36 +0200 Subject: [PATCH 02/13] test(globalping): pin the disposal timer cancellation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The disposal test asserted only that no poll fired, which onScopeDispose satisfies through `disposed` alone — poll() returns early on it. Deleting the clearTimeout left the whole test green, so the cancellation it is named for was unpinned. It now requires the scheduled poll timer itself to have been cleared. --- .../composable-globalping-measurement.test.js | 58 +++++++++++++------ 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/tests/composable-globalping-measurement.test.js b/tests/composable-globalping-measurement.test.js index 7ba4d80b5..e700f91e8 100644 --- a/tests/composable-globalping-measurement.test.js +++ b/tests/composable-globalping-measurement.test.js @@ -247,23 +247,47 @@ describe('useGlobalpingMeasurement()', () => { let finishCalls = 0; let errorCalls = 0; - const { scope, value } = withScope(() => - useGlobalpingMeasurement({ pollInterval: 50 }) - ); - value.start({}, { - onResults: () => true, - onFinish: () => { finishCalls++; }, - onError: () => { errorCalls++; }, - }); - // Stop the scope after the poll is scheduled but before it fires. A fixed - // 10ms sleep here could land before the POST resolved, leaving no timer to - // cancel — the test would then pass without exercising the cancellation. - await waitFor(() => createRead, { label: 'the create response to be read' }); - await tick(); - scope.stop(); - // Nothing should happen from here on, and only a real wait can show that: - // this is the one delay in the file that is asserting an absence. - await new Promise((r) => setTimeout(r, 80)); + + // `polled === false` alone does not pin the cancellation: onScopeDispose + // also sets `disposed`, and poll() returns early on that, so deleting the + // clearTimeout leaves every other assertion here green. Record the poll + // timer by its distinctive 50ms delay — tick() and waitFor() use 0 — and + // require that exact timer to have been cleared. + const origSetTimeout = globalThis.setTimeout; + const origClearTimeout = globalThis.clearTimeout; + const pollTimers = []; + const clearedTimers = []; + globalThis.setTimeout = (fn, delay, ...rest) => { + const id = origSetTimeout(fn, delay, ...rest); + if (delay === 50) pollTimers.push(id); + return id; + }; + globalThis.clearTimeout = (id) => { clearedTimers.push(id); return origClearTimeout(id); }; + + try { + const { scope, value } = withScope(() => + useGlobalpingMeasurement({ pollInterval: 50 }) + ); + value.start({}, { + onResults: () => true, + onFinish: () => { finishCalls++; }, + onError: () => { errorCalls++; }, + }); + // Stop the scope after the poll is scheduled but before it fires. A fixed + // 10ms sleep here could land before the POST resolved, leaving no timer to + // cancel — the test would then pass without exercising the cancellation. + await waitFor(() => createRead, { label: 'the create response to be read' }); + await tick(); + assert.equal(pollTimers.length, 1, 'the first poll should be scheduled before the scope stops'); + scope.stop(); + assert.ok(clearedTimers.includes(pollTimers[0]), 'scope.stop() should clear the pending poll timer'); + // Nothing should happen from here on, and only a real wait can show that: + // this is the one delay in the file that is asserting an absence. + await new Promise((r) => origSetTimeout(r, 80)); + } finally { + globalThis.setTimeout = origSetTimeout; + globalThis.clearTimeout = origClearTimeout; + } assert.equal(polled, false, 'poll should never fire after scope stop'); assert.equal(finishCalls, 0); From aa8f6c3d14f9cdc9d5649c2a1f9efe2fd87156cb Mon Sep 17 00:00:00 2001 From: Vitor Parras Date: Mon, 24 Aug 2026 23:04:00 -0300 Subject: [PATCH 03/13] Feat(i18n): complete Brazilian Portuguese locale coverage Complete the remaining pt-BR translation datasets: - add the Security Checklist translation; - localize the complete release history. Preserve checklist slugs, priorities, links, and the beta locale status. --- frontend/data/changelog.json | 489 +++-- .../locales/security-checklist/pt-BR.json | 1646 +++++++++++++++++ 2 files changed, 1972 insertions(+), 163 deletions(-) create mode 100644 frontend/locales/security-checklist/pt-BR.json diff --git a/frontend/data/changelog.json b/frontend/data/changelog.json index 46d2a42e7..635e5650f 100644 --- a/frontend/data/changelog.json +++ b/frontend/data/changelog.json @@ -10,7 +10,8 @@ "zh": "显示用户的 IP 信息", "zh-TW": "顯示使用者的 IP 資訊", "fr": "Affichage des informations IP de l'utilisateur", - "ru": "Добавлено отображение информации об IP-адресе пользователя" + "ru": "Добавлено отображение информации об IP-адресе пользователя", + "pt-BR": "Exibir informações de IP do usuário" } }, { @@ -20,7 +21,8 @@ "zh": "显示代理前后的 IP 信息", "zh-TW": "顯示代理前後的 IP 資訊", "fr": "Affichage des informations IP avant et après le proxy", - "ru": "Добавлено отображение информации об IP-адресе до и после использования прокси" + "ru": "Добавлено отображение информации об IP-адресе до и после использования прокси", + "pt-BR": "Exibir informações de IP antes e depois do proxy" } }, { @@ -30,7 +32,8 @@ "zh": "检查网站可用性", "zh-TW": "檢查網站可用性", "fr": "Vérification de la disponibilité des sites web", - "ru": "Добавлена проверка доступности сайтов" + "ru": "Добавлена проверка доступности сайтов", + "pt-BR": "Verifique a disponibilidade do site" } } ] @@ -46,7 +49,8 @@ "zh": "使用 Vue2 重构了整个项目", "zh-TW": "使用 Vue2 重構了整個專案", "fr": "Refonte complète du projet en utilisant Vue2", - "ru": "Выполнен полный рефакторинг проекта с использованием Vue2" + "ru": "Выполнен полный рефакторинг проекта с использованием Vue2", + "pt-BR": "Refatorei todo o projeto usando Vue2" } }, { @@ -56,7 +60,8 @@ "zh": "使用 Bootstrap v5 重构了 UI", "zh-TW": "使用 Bootstrap v5 重構了 UI", "fr": "Refonte de l'interface utilisateur en utilisant Bootstrap v5", - "ru": "Выполнен рефакторинг UI с использованием Bootstrap v5" + "ru": "Выполнен рефакторинг UI с использованием Bootstrap v5", + "pt-BR": "UI refatorada usando Bootstrap v5" } } ] @@ -72,7 +77,8 @@ "zh": "添加了 WebRTC 测试", "zh-TW": "新增了 WebRTC 測試", "fr": "Ajout du test WebRTC", - "ru": "Добавлен тест WebRTC" + "ru": "Добавлен тест WebRTC", + "pt-BR": "Adicionado teste WebRTC" } }, { @@ -82,7 +88,8 @@ "zh": "优化了程序的一些逻辑", "zh-TW": "最佳化了程式的一些邏輯", "fr": "Optimisation de la logique du programme", - "ru": "Оптимизирована логика программы" + "ru": "Оптимизирована логика программы", + "pt-BR": "Lógica de programa otimizada" } } ] @@ -98,7 +105,8 @@ "zh": "添加了 DNS 泄露测试", "zh-TW": "新增了 DNS 洩漏測試", "fr": "Ajout du test de fuite DNS", - "ru": "Добавлен тест утечки DNS" + "ru": "Добавлен тест утечки DNS", + "pt-BR": "Adicionado teste de vazamento de DNS" } }, { @@ -108,7 +116,8 @@ "zh": "支持在前端显示 Bing 地图", "zh-TW": "支援在前端顯示 Bing 地圖", "fr": "Prise en charge de l'affichage des cartes Bing dans l'interface", - "ru": "Добавлена поддержка карт Bing в клиентском интерфейсе" + "ru": "Добавлена поддержка карт Bing в клиентском интерфейсе", + "pt-BR": "Suporte à exibição de mapas do Bing no frontend" } }, { @@ -118,7 +127,8 @@ "zh": "多个逻辑优化", "zh-TW": "多項邏輯最佳化", "fr": "Multiples optimisations de la logique", - "ru": "Выполнено несколько оптимизаций логики" + "ru": "Выполнено несколько оптимизаций логики", + "pt-BR": "Múltiplas otimizações lógicas" } } ] @@ -134,7 +144,8 @@ "zh": "添加了黑暗模式", "zh-TW": "新增了深色模式", "fr": "Ajout du mode sombre", - "ru": "Добавлена тёмная тема" + "ru": "Добавлена тёмная тема", + "pt-BR": "Adicionado modo escuro" } }, { @@ -144,7 +155,8 @@ "zh": "增加移动版简约模式", "zh-TW": "新增行動版簡潔模式", "fr": "Ajout du mode minimaliste pour mobile", - "ru": "Добавлен минималистичный режим для мобильных устройств" + "ru": "Добавлен минималистичный режим для мобильных устройств", + "pt-BR": "Adicionado modo minimalista para celular" } }, { @@ -154,7 +166,8 @@ "zh": "优化了文件结构", "zh-TW": "最佳化了檔案結構", "fr": "Optimisation de la structure des fichiers", - "ru": "Оптимизирована структура файлов" + "ru": "Оптимизирована структура файлов", + "pt-BR": "Estrutura de arquivos otimizada" } } ] @@ -170,7 +183,8 @@ "zh": "支持英文语言", "zh-TW": "支援英文", "fr": "Prise en charge de la langue anglaise", - "ru": "Добавлена поддержка английского языка" + "ru": "Добавлена поддержка английского языка", + "pt-BR": "Adicionado suporte para o idioma inglês" } }, { @@ -180,7 +194,8 @@ "zh": "添加信息遮罩功能", "zh-TW": "新增資訊隱藏功能", "fr": "Ajout de la fonctionnalité de masquage des informations", - "ru": "Добавлена функция маскировки информации" + "ru": "Добавлена функция маскировки информации", + "pt-BR": "Adicionado recurso de mascaramento de informações" } }, { @@ -190,7 +205,8 @@ "zh": "支持 PWA,可以安装到手机和桌面上", "zh-TW": "支援 PWA,可以安裝到手機和桌面上", "fr": "Prise en charge de PWA, peut être installé sur mobile et ordinateur de bureau", - "ru": "Добавлена поддержка PWA с установкой на мобильные и настольные устройства" + "ru": "Добавлена поддержка PWA с установкой на мобильные и настольные устройства", + "pt-BR": "Suporte PWA, pode ser instalado em dispositivos móveis e desktops" } } ] @@ -206,7 +222,8 @@ "zh": "支持快捷键操作", "zh-TW": "支援快捷鍵操作", "fr": "Prise en charge des raccourcis clavier", - "ru": "Добавлена поддержка сочетаний клавиш" + "ru": "Добавлена поддержка сочетаний клавиш", + "pt-BR": "Adicionado suporte para atalhos de teclado" } }, { @@ -216,7 +233,8 @@ "zh": "添加网速测试功能", "zh-TW": "新增網速測試功能", "fr": "Ajout de la fonctionnalité de test de vitesse des sites web", - "ru": "Добавлена функция проверки скорости сайта" + "ru": "Добавлена функция проверки скорости сайта", + "pt-BR": "Adicionado recurso de teste de velocidade do site" } }, { @@ -226,7 +244,8 @@ "zh": "支持使用 Docker 部署", "zh-TW": "支援使用 Docker 部署", "fr": "Prise en charge du déploiement à l'aide de Docker", - "ru": "Добавлена поддержка развёртывания через Docker" + "ru": "Добавлена поддержка развёртывания через Docker", + "pt-BR": "Implantação de suporte usando Docker" } }, { @@ -236,7 +255,8 @@ "zh": "支持从多个来源获取 IP 归属地等信息", "zh-TW": "支援從多個來源取得 IP 地理位置等資訊", "fr": "Prise en charge de la récupération des informations de géolocalisation IP à partir de plusieurs sources", - "ru": "Добавлено получение данных о геолокации IP из нескольких источников" + "ru": "Добавлено получение данных о геолокации IP из нескольких источников", + "pt-BR": "Suporte à recuperação de informações de geolocalização de IP de múltiplas fontes" } } ] @@ -252,7 +272,8 @@ "zh": "使用 Vite + Vue3 重构了整个项目", "zh-TW": "使用 Vite + Vue3 重構了整個專案", "fr": "Refonte complète du projet en utilisant Vite + Vue3", - "ru": "Выполнен полный рефакторинг проекта с использованием Vite + Vue3" + "ru": "Выполнен полный рефакторинг проекта с использованием Vite + Vue3", + "pt-BR": "Refatorei todo o projeto usando Vite + Vue3" } }, { @@ -262,7 +283,8 @@ "zh": "增加全球延迟测试功能", "zh-TW": "新增全球延遲測試功能", "fr": "Ajout de la fonctionnalité de test de latence mondiale", - "ru": "Добавлена глобальная проверка задержки" + "ru": "Добавлена глобальная проверка задержки", + "pt-BR": "Adicionado recurso de teste de latência global" } }, { @@ -272,7 +294,8 @@ "zh": "增加 MTR 测试功能", "zh-TW": "新增 MTR 測試功能", "fr": "Ajout de la fonctionnalité de test MTR", - "ru": "Добавлен тест MTR" + "ru": "Добавлен тест MTR", + "pt-BR": "Adicionado recurso de teste MTR" } }, { @@ -282,7 +305,8 @@ "zh": "多个性能优化和体验优化", "zh-TW": "多項效能與體驗最佳化", "fr": "Multiples optimisations de performance et d'expérience utilisateur", - "ru": "Выполнено несколько оптимизаций производительности и пользовательского опыта" + "ru": "Выполнено несколько оптимизаций производительности и пользовательского опыта", + "pt-BR": "Múltiplas otimizações de desempenho e experiência do usuário" } } ] @@ -298,7 +322,8 @@ "zh": "支持新的语言:法语", "zh-TW": "支援新的語言:法文", "fr": "Ajout de la prise en charge d'une nouvelle langue : français", - "ru": "Добавлена поддержка нового языка — французского" + "ru": "Добавлена поддержка нового языка — французского", + "pt-BR": "Adicionado suporte para um novo idioma: francês" } }, { @@ -308,7 +333,8 @@ "zh": "添加数据加载中的动画", "zh-TW": "新增資料載入中的動畫", "fr": "Ajout d'une animation de chargement des données", - "ru": "Добавлена анимация загрузки" + "ru": "Добавлена анимация загрузки", + "pt-BR": "Adicionada animação de carregamento" } }, { @@ -318,7 +344,8 @@ "zh": "优化了缓存策略", "zh-TW": "最佳化了快取策略", "fr": "Optimisation de la stratégie de cache", - "ru": "Оптимизирована стратегия кэширования" + "ru": "Оптимизирована стратегия кэширования", + "pt-BR": "Estratégia de cache otimizada" } }, { @@ -328,7 +355,8 @@ "zh": "调整黑暗模式样式", "zh-TW": "調整深色模式樣式", "fr": "Ajustement du style du mode sombre", - "ru": "Скорректированы стили тёмной темы" + "ru": "Скорректированы стили тёмной темы", + "pt-BR": "Estilos de modo escuro ajustados" } }, { @@ -338,7 +366,8 @@ "zh": "修复了一些小问题", "zh-TW": "修正了一些小問題", "fr": "Correction de quelques problèmes mineurs", - "ru": "Исправлены небольшие проблемы" + "ru": "Исправлены небольшие проблемы", + "pt-BR": "Corrigido alguns pequenos problemas" } } ] @@ -354,7 +383,8 @@ "zh": "添加 NAT 类型检测", "zh-TW": "新增 NAT 類型偵測", "fr": "Ajout de la détection du type NAT", - "ru": "Добавлено определение типа NAT" + "ru": "Добавлено определение типа NAT", + "pt-BR": "Adicionada detecção de tipo NAT" } }, { @@ -364,7 +394,8 @@ "zh": "优化 PWA 应用的体验", "zh-TW": "最佳化 PWA 應用程式的體驗", "fr": "Optimisation de l'expérience de l'application PWA", - "ru": "Улучшена работа PWA-приложения" + "ru": "Улучшена работа PWA-приложения", + "pt-BR": "Experiência otimizada de aplicativo PWA" } }, { @@ -374,7 +405,8 @@ "zh": "提高后端脚本安全性", "zh-TW": "提高後端腳本安全性", "fr": "Amélioration de la sécurité du script backend", - "ru": "Повышена безопасность серверных скриптов" + "ru": "Повышена безопасность серверных скриптов", + "pt-BR": "Segurança aprimorada de script de back-end" } } ] @@ -390,7 +422,8 @@ "zh": "支持使用不同的 IP 地理位置信息源", "zh-TW": "支援使用不同的 IP 地理位置資訊來源", "fr": "Prise en charge de l'utilisation de différentes sources d'informations de géolocalisation IP", - "ru": "Добавлена поддержка разных источников геолокации IP" + "ru": "Добавлена поддержка разных источников геолокации IP", + "pt-BR": "Adicionado suporte para usar diferentes fontes de geolocalização IP" } }, { @@ -400,7 +433,8 @@ "zh": "优化连接可用性检测的用户体验", "zh-TW": "最佳化連線可用性偵測的使用者體驗", "fr": "Amélioration de l'expérience utilisateur de la détection de disponibilité de connexion", - "ru": "Улучшен пользовательский опыт при проверке доступности соединения" + "ru": "Улучшен пользовательский опыт при проверке доступности соединения", + "pt-BR": "Experiência do usuário aprimorada para detecção de disponibilidade de conexão" } }, { @@ -410,7 +444,8 @@ "zh": "优化 UI 体验", "zh-TW": "最佳化 UI 體驗", "fr": "Amélioration de l'expérience utilisateur de l'interface utilisateur", - "ru": "Улучшен интерфейс" + "ru": "Улучшен интерфейс", + "pt-BR": "Experiência de IU otimizada" } } ] @@ -426,7 +461,8 @@ "zh": "添加 ASN 详细信息查看器", "zh-TW": "新增 ASN 詳細資訊檢視器", "fr": "Ajout d'un visualiseur de détails ASN", - "ru": "Добавлен просмотр подробных сведений об ASN" + "ru": "Добавлен просмотр подробных сведений об ASN", + "pt-BR": "Adicionado visualizador de detalhes ASN" } }, { @@ -436,7 +472,8 @@ "zh": "添加 IP 地址是否为代理的判断", "zh-TW": "新增 IP 位址是否為代理的判斷", "fr": "Ajout de la détection de proxy", - "ru": "Добавлена функция обнаружения прокси" + "ru": "Добавлена функция обнаружения прокси", + "pt-BR": "Adicionado recurso de detecção de proxy" } }, { @@ -446,7 +483,8 @@ "zh": "优化 IP 信息的展示 UI", "zh-TW": "最佳化 IP 資訊的展示 UI", "fr": "Optimisation de l'interface utilisateur pour l'affichage des informations IP", - "ru": "Улучшен UI для отображения информации об IP" + "ru": "Улучшен UI для отображения информации об IP", + "pt-BR": "UI otimizada para exibir informações de IP" } } ] @@ -462,7 +500,8 @@ "zh": "添加规则测试", "zh-TW": "新增分流測試", "fr": "Ajout du test de règles", - "ru": "Добавлен тест правил" + "ru": "Добавлен тест правил", + "pt-BR": "Adicionado recurso de teste de regras" } }, { @@ -472,7 +511,8 @@ "zh": "优化了部分逻辑", "zh-TW": "最佳化了部分邏輯", "fr": "Quelques améliorations", - "ru": "Внесены улучшения" + "ru": "Внесены улучшения", + "pt-BR": "Algumas melhorias" } } ] @@ -488,7 +528,8 @@ "zh": "添加 DNS 解析功能", "zh-TW": "新增 DNS 解析功能", "fr": "Ajout de la fonction de résolution DNS", - "ru": "Добавлена функция разрешения DNS" + "ru": "Добавлена функция разрешения DNS", + "pt-BR": "Adicionado recurso de resolução DNS" } }, { @@ -498,7 +539,8 @@ "zh": "优化主页结构,高级功能折叠展示", "zh-TW": "最佳化首頁結構,進階功能改為摺疊展示", "fr": "Optimisation de la structure de la page d'accueil, les fonctionnalités avancées sont désormais repliables", - "ru": "Оптимизирована структура главной страницы, расширенные функции теперь можно сворачивать" + "ru": "Оптимизирована структура главной страницы, расширенные функции теперь можно сворачивать", + "pt-BR": "Estrutura da página inicial otimizada; recursos avançados agora podem ser recolhidos." } }, { @@ -508,7 +550,8 @@ "zh": "优化了程序逻辑", "zh-TW": "最佳化了程式邏輯", "fr": "Optimisation de la logique du programme", - "ru": "Оптимизирована логика программы" + "ru": "Оптимизирована логика программы", + "pt-BR": "Lógica de programa otimizada" } } ] @@ -524,7 +567,8 @@ "zh": "添加封锁测试功能", "zh-TW": "新增封鎖測試功能", "fr": "Fonctionnalité de test de censure ajoutée", - "ru": "Добавлена проверка интернет-цензуры" + "ru": "Добавлена проверка интернет-цензуры", + "pt-BR": "Adicionado recurso de teste de censura" } }, { @@ -534,7 +578,8 @@ "zh": "网速测试可以自定义数据包大小", "zh-TW": "網速測試可以自訂封包大小", "fr": "Le test de vitesse réseau permet maintenant de personnaliser la taille des paquets", - "ru": "В тесте скорости сети теперь можно задавать размер пакета" + "ru": "В тесте скорости сети теперь можно задавать размер пакета", + "pt-BR": "O teste de velocidade da rede agora permite tamanho de pacote personalizado" } }, { @@ -544,7 +589,8 @@ "zh": "优化了部分功能逻辑", "zh-TW": "最佳化了部分功能邏輯", "fr": "Optimisation de certaines logiques fonctionnelles", - "ru": "Оптимизирована логика некоторых функций" + "ru": "Оптимизирована логика некоторых функций", + "pt-BR": "Otimizou alguma lógica funcional" } } ] @@ -560,7 +606,8 @@ "zh": "增加设置面板,可以在本地保存偏好设置", "zh-TW": "新增設定面板,可以在本機儲存偏好設定", "fr": "Ajout du panneau de préférences pour enregistrer les paramètres localement", - "ru": "Добавлена панель настроек с локальным сохранением" + "ru": "Добавлена панель настроек с локальным сохранением", + "pt-BR": "Adicionado painel de preferências para salvar configurações localmente" } }, { @@ -570,7 +617,8 @@ "zh": "可以自定义程序在第二次启动时的多个默认行为", "zh-TW": "可以自訂程式在第二次啟動時的多個預設行為", "fr": "Permettre la personnalisation de plusieurs comportements par défaut lors du deuxième lancement du programme", - "ru": "Добавлена настройка нескольких вариантов поведения по умолчанию при повторном запуске программы" + "ru": "Добавлена настройка нескольких вариантов поведения по умолчанию при повторном запуске программы", + "pt-BR": "Permitir a personalização de vários comportamentos padrão na segunda inicialização do programa" } }, { @@ -580,7 +628,8 @@ "zh": "大量优化了程序的逻辑", "zh-TW": "大量最佳化了程式的邏輯", "fr": "Optimisation significative de la logique du programme", - "ru": "Значительно оптимизирована логика программы" + "ru": "Значительно оптимизирована логика программы", + "pt-BR": "Lógica de programa significativamente otimizada" } }, { @@ -590,7 +639,8 @@ "zh": "修复了一些小问题", "zh-TW": "修正了一些小問題", "fr": "Correction de quelques problèmes mineurs", - "ru": "Исправлены небольшие проблемы" + "ru": "Исправлены небольшие проблемы", + "pt-BR": "Corrigido alguns pequenos problemas" } } ] @@ -606,7 +656,8 @@ "zh": "增加 Whois 查询功能", "zh-TW": "新增 Whois 查詢功能", "fr": "Ajout de la fonction de recherche Whois", - "ru": "Добавлен поиск Whois" + "ru": "Добавлен поиск Whois", + "pt-BR": "Adicionado recurso de pesquisa Whois" } }, { @@ -616,7 +667,8 @@ "zh": "优化高级功能的展示与动画效果", "zh-TW": "最佳化進階功能的展示與動畫效果", "fr": "Optimisation de l'affichage et des effets d'animation pour les outils avancés", - "ru": "Улучшены отображение и анимация расширенных инструментов" + "ru": "Улучшены отображение и анимация расширенных инструментов", + "pt-BR": "Efeitos de exibição e animação otimizados para ferramentas avançadas" } }, { @@ -626,7 +678,8 @@ "zh": "修复了一些小问题", "zh-TW": "修正了一些小問題", "fr": "Correction de quelques problèmes mineurs", - "ru": "Исправлены небольшие проблемы" + "ru": "Исправлены небольшие проблемы", + "pt-BR": "Corrigido alguns pequenos problemas" } } ] @@ -642,7 +695,8 @@ "zh": "采用 Vue 3 的 Composition API 重构了整个项目", "zh-TW": "採用 Vue 3 的 Composition API 重構了整個專案", "fr": "Refonte complète du projet en utilisant la Composition API de Vue 3", - "ru": "Выполнен полный рефакторинг проекта с использованием Composition API из Vue 3" + "ru": "Выполнен полный рефакторинг проекта с использованием Composition API из Vue 3", + "pt-BR": "Refatorei todo o projeto usando a API Composition do Vue 3" } }, { @@ -652,7 +706,8 @@ "zh": "拆分前端多个模块,提高了程序的可维护性", "zh-TW": "拆分前端多個模組,提高了程式的可維護性", "fr": "Découpage du frontend en plusieurs modules pour améliorer la maintenabilité du programme", - "ru": "Клиентская часть разделена на несколько модулей для упрощения сопровождения" + "ru": "Клиентская часть разделена на несколько модулей для упрощения сопровождения", + "pt-BR": "Divida o front-end em vários módulos para melhorar a capacidade de manutenção" } }, { @@ -662,7 +717,8 @@ "zh": "增加隐身测试功能(Beta)", "zh-TW": "新增隱身測試功能(Beta)", "fr": "Ajout de la Test d'invisibilité (bêta)", - "ru": "Добавлен «Тест невидимости» (бета)" + "ru": "Добавлен «Тест невидимости» (бета)", + "pt-BR": "Adicionado recurso de teste de invisibilidade (Beta)" } }, { @@ -672,7 +728,8 @@ "zh": "优化后端程序的依赖结构", "zh-TW": "最佳化後端程式的相依結構", "fr": "Optimisation de la structure des dépendances du backend", - "ru": "Оптимизированы зависимости серверной части" + "ru": "Оптимизированы зависимости серверной части", + "pt-BR": "Dependências otimizadas do programa de back-end" } }, { @@ -682,7 +739,8 @@ "zh": "优化了大量细节", "zh-TW": "最佳化了大量細節", "fr": "Optimisation de nombreux détails", - "ru": "Оптимизировано множество деталей" + "ru": "Оптимизировано множество деталей", + "pt-BR": "Vários detalhes otimizados" } } ] @@ -698,7 +756,8 @@ "zh": "添加 MAC 地址查询功能", "zh-TW": "新增 MAC 位址查詢功能", "fr": "Ajout de la fonction de recherche MAC", - "ru": "Добавлен поиск по MAC-адресу" + "ru": "Добавлен поиск по MAC-адресу", + "pt-BR": "Adicionado recurso de pesquisa de endereço MAC" } }, { @@ -708,7 +767,8 @@ "zh": "优化了部分程序细节", "zh-TW": "最佳化了部分程式細節", "fr": "Optimisation de nombreux détails", - "ru": "Оптимизировано множество деталей" + "ru": "Оптимизировано множество деталей", + "pt-BR": "Vários detalhes otimizados" } } ] @@ -724,7 +784,8 @@ "zh": "添加浏览器信息查询功能", "zh-TW": "新增瀏覽器資訊查詢功能", "fr": "Ajout de la fonction de requête d'informations du navigateur", - "ru": "Добавлен просмотр информации о браузере" + "ru": "Добавлен просмотр информации о браузере", + "pt-BR": "Adicionado recurso de consulta de informações do navegador" } }, { @@ -734,7 +795,8 @@ "zh": "添加 MaxMind 地理数据库", "zh-TW": "新增 MaxMind 地理資料庫", "fr": "Ajout de la base de données géographique MaxMind", - "ru": "Добавлена база данных MaxMind GeoIP" + "ru": "Добавлена база данных MaxMind GeoIP", + "pt-BR": "Adicionado banco de dados MaxMind GeoIP" } }, { @@ -744,7 +806,8 @@ "zh": "多处体验优化", "zh-TW": "多處體驗最佳化", "fr": "Améliorations multiples de l'expérience", - "ru": "Внесено несколько улучшений пользовательского опыта" + "ru": "Внесено несколько улучшений пользовательского опыта", + "pt-BR": "Múltiplas melhorias de experiência" } } ] @@ -760,7 +823,8 @@ "zh": "添加命令行 API 功能", "zh-TW": "新增命令列 API 功能", "fr": "Ajout de la fonctionnalité API en ligne de commande", - "ru": "Добавлен API командной строки" + "ru": "Добавлен API командной строки", + "pt-BR": "Adicionado recurso de API de linha de comando" } }, { @@ -770,7 +834,8 @@ "zh": "WebRTC 测试可以展示地区信息", "zh-TW": "WebRTC 測試可以顯示地區資訊", "fr": "Le test WebRTC peut maintenant afficher des informations régionales", - "ru": "Тест WebRTC теперь отображает информацию о регионе" + "ru": "Тест WebRTC теперь отображает информацию о регионе", + "pt-BR": "O teste WebRTC agora pode exibir informações regionais" } }, { @@ -780,7 +845,8 @@ "zh": "DNS 泄露测试可以展示地区信息", "zh-TW": "DNS 洩漏測試可以顯示地區資訊", "fr": "Le test de fuite DNS peut maintenant afficher des informations régionales", - "ru": "Тест утечки DNS теперь отображает информацию о регионе" + "ru": "Тест утечки DNS теперь отображает информацию о регионе", + "pt-BR": "O teste de vazamento de DNS agora pode exibir informações regionais" } } ] @@ -796,7 +862,8 @@ "zh": "语言偏好设置", "zh-TW": "語言偏好設定", "fr": "Préférences de langue", - "ru": "Добавлены настройки языка" + "ru": "Добавлены настройки языка", + "pt-BR": "Preferências de idioma" } }, { @@ -806,7 +873,8 @@ "zh": "地图展示供应商变更为 Google", "zh-TW": "地圖顯示供應商變更為 Google", "fr": "Fournisseur de carte changé en Google", - "ru": "Поставщик карт изменён на Google" + "ru": "Поставщик карт изменён на Google", + "pt-BR": "Provedor de mapas alterado para Google" } }, { @@ -816,7 +884,8 @@ "zh": "其它常规优化", "zh-TW": "其他常規最佳化", "fr": "Autres optimisations générales", - "ru": "Выполнены другие общие оптимизации" + "ru": "Выполнены другие общие оптимизации", + "pt-BR": "Outras otimizações gerais" } } ] @@ -832,7 +901,8 @@ "zh": "添加安全检查清单", "zh-TW": "新增安全檢查清單", "fr": "Liste de vérification de sécurité", - "ru": "Добавлен контрольный список безопасности" + "ru": "Добавлен контрольный список безопасности", + "pt-BR": "Adicionar lista de verificação de segurança" } }, { @@ -842,7 +912,8 @@ "zh": "其它常规优化", "zh-TW": "其他常規最佳化", "fr": "Autres optimisations générales", - "ru": "Выполнены другие общие оптимизации" + "ru": "Выполнены другие общие оптимизации", + "pt-BR": "Outras otimizações gerais" } } ] @@ -858,7 +929,8 @@ "zh": "新增用户系统", "zh-TW": "新增使用者系統", "fr": "Ajout de la système d'utilisateur", - "ru": "Добавлена система пользователей" + "ru": "Добавлена система пользователей", + "pt-BR": "Adicionar sistema de usuário" } }, { @@ -868,7 +940,8 @@ "zh": "新增用户成就系统", "zh-TW": "新增使用者成就系統", "fr": "Ajout de la système de réussite utilisateur", - "ru": "Добавлена система достижений пользователей" + "ru": "Добавлена система достижений пользователей", + "pt-BR": "Adicionar sistema de conquistas do usuário" } }, { @@ -878,7 +951,8 @@ "zh": "新增 Lite 版本", "zh-TW": "新增 Lite 版本", "fr": "Ajout de la version Lite", - "ru": "Добавлена облегчённая версия" + "ru": "Добавлена облегчённая версия", + "pt-BR": "Adicionar versão Lite" } }, { @@ -888,7 +962,8 @@ "zh": "网速测试可以看到数据变化图表", "zh-TW": "網速測試可以看到資料變化圖表", "fr": "Le test de vitesse peut maintenant afficher des graphiques de données", - "ru": "Тест скорости теперь отображает графики изменения данных" + "ru": "Тест скорости теперь отображает графики изменения данных", + "pt-BR": "O teste de velocidade agora pode exibir gráficos de alteração de dados" } }, { @@ -898,7 +973,8 @@ "zh": "代码效率优化", "zh-TW": "程式碼效率最佳化", "fr": "Optimisation de la performance du code", - "ru": "Оптимизирована эффективность кода" + "ru": "Оптимизирована эффективность кода", + "pt-BR": "Otimização da eficiência do código" } } ] @@ -914,7 +990,8 @@ "zh": "支持土耳其语", "zh-TW": "支援土耳其文", "fr": "Ajout de la prise en charge de la langue turque", - "ru": "Добавлена поддержка турецкого языка" + "ru": "Добавлена поддержка турецкого языка", + "pt-BR": "Adicionado suporte para o idioma turco" } }, { @@ -924,7 +1001,8 @@ "zh": "代码效率优化", "zh-TW": "程式碼效率最佳化", "fr": "Optimisation de l'efficacité du code", - "ru": "Повышена эффективность кода" + "ru": "Повышена эффективность кода", + "pt-BR": "Eficiência de código otimizada" } } ] @@ -940,7 +1018,8 @@ "zh": "提升 ASN 信息的丰富性", "zh-TW": "提升 ASN 資訊的豐富度", "fr": "Amélioration de la richesse des informations ASN", - "ru": "Расширены сведения об ASN" + "ru": "Расширены сведения об ASN", + "pt-BR": "Riqueza aprimorada de informações ASN" } }, { @@ -950,7 +1029,8 @@ "zh": "IP 质量分数显示", "zh-TW": "IP 品質分數顯示", "fr": "Affichage de la qualité IP", - "ru": "Добавлено отображение оценки качества IP" + "ru": "Добавлено отображение оценки качества IP", + "pt-BR": "Adicionada exibição de índice de qualidade de IP" } }, { @@ -960,7 +1040,8 @@ "zh": "代码效率优化", "zh-TW": "程式碼效率最佳化", "fr": "Optimisation de l'efficacité du code", - "ru": "Повышена эффективность кода" + "ru": "Повышена эффективность кода", + "pt-BR": "Eficiência de código otimizada" } } ] @@ -976,7 +1057,8 @@ "zh": "MaxMind 地理数据库自动更新", "zh-TW": "MaxMind 地理資料庫自動更新", "fr": "Mise à jour automatique de la base de données géographique MaxMind", - "ru": "Добавлено автоматическое обновление базы данных MaxMind GeoIP" + "ru": "Добавлено автоматическое обновление базы данных MaxMind GeoIP", + "pt-BR": "Adicionada atualização automática do banco de dados MaxMind GeoIP" } }, { @@ -986,7 +1068,8 @@ "zh": "优化缓存策略", "zh-TW": "最佳化快取策略", "fr": "Optimisation de la stratégie de cache", - "ru": "Оптимизирована стратегия кэширования" + "ru": "Оптимизирована стратегия кэширования", + "pt-BR": "Estratégia de cache otimizada" } }, { @@ -996,7 +1079,8 @@ "zh": "大大提升构建速度", "zh-TW": "大幅提升建置速度", "fr": "Amélioration significative de la vitesse de construction", - "ru": "Значительно ускорена сборка" + "ru": "Значительно ускорена сборка", + "pt-BR": "Velocidade de construção significativamente melhorada" } } ] @@ -1012,7 +1096,8 @@ "zh": "使用 Shadcn UI + Tailwind CSS 重构了整个项目", "zh-TW": "使用 Shadcn UI + Tailwind CSS 重構了整個專案", "fr": "Refonte complète du projet avec Shadcn UI + Tailwind CSS", - "ru": "Выполнен полный рефакторинг проекта с использованием Shadcn UI + Tailwind CSS" + "ru": "Выполнен полный рефакторинг проекта с использованием Shadcn UI + Tailwind CSS", + "pt-BR": "Refatorei todo o projeto com Shadcn UI + Tailwind CSS" } }, { @@ -1022,7 +1107,8 @@ "zh": "通过多个 Agents.md 提升 AI 开发友好性", "zh-TW": "透過多個 Agents.md 提升 AI 開發友善度", "fr": "Amélioration de la compatibilité avec le développement assisté par IA grâce à plusieurs fichiers Agents.md", - "ru": "Проект стал удобнее для AI-разработки благодаря нескольким файлам Agents.md" + "ru": "Проект стал удобнее для AI-разработки благодаря нескольким файлам Agents.md", + "pt-BR": "Facilidade de desenvolvimento de IA aprimorada por meio de vários arquivos Agents.md" } }, { @@ -1032,7 +1118,8 @@ "zh": "增加自动测试功能,提升程序健壮性", "zh-TW": "新增自動測試功能,提升程式穩健性", "fr": "Ajout de tests automatisés pour améliorer la robustesse", - "ru": "Добавлены автоматические тесты для повышения надёжности" + "ru": "Добавлены автоматические тесты для повышения надёжности", + "pt-BR": "Adicionados testes automatizados para melhorar a robustez" } }, { @@ -1042,7 +1129,8 @@ "zh": "更加组件化的设计,更方便维护和扩展", "zh-TW": "更加元件化的設計,更方便維護和擴充", "fr": "Conception davantage orientée composants, plus facile à maintenir et à étendre", - "ru": "Архитектура стала более компонентной, что упрощает сопровождение и развитие" + "ru": "Архитектура стала более компонентной, что упрощает сопровождение и развитие", + "pt-BR": "Design mais orientado a componentes, mais fácil de manter e ampliar" } }, { @@ -1052,7 +1140,8 @@ "zh": "重新设计程序目录结构,使其更加清晰易懂", "zh-TW": "重新設計程式目錄結構,使其更加清晰易懂", "fr": "Réorganisation de la structure des répertoires du projet pour plus de clarté", - "ru": "Структура каталогов проекта реорганизована для большей ясности" + "ru": "Структура каталогов проекта реорганизована для большей ясности", + "pt-BR": "Reorganizou a estrutura de diretórios do projeto para melhor clareza" } }, { @@ -1062,7 +1151,8 @@ "zh": "所有页面全部重新设计,更具现代化美感", "zh-TW": "所有頁面全部重新設計,更具現代化美感", "fr": "Toutes les pages redessinées avec une esthétique plus moderne", - "ru": "Все страницы получили более современный дизайн" + "ru": "Все страницы получили более современный дизайн", + "pt-BR": "Todas as páginas redesenhadas com uma aparência mais moderna" } }, { @@ -1072,7 +1162,8 @@ "zh": "提升程序打包速度,减少打包体积", "zh-TW": "提升程式打包速度,減少打包體積", "fr": "Temps de compilation plus rapides et taille de bundle réduite", - "ru": "Ускорена сборка и уменьшен размер бандла" + "ru": "Ускорена сборка и уменьшен размер бандла", + "pt-BR": "Tempos de construção mais rápidos e tamanho de pacote menor" } }, { @@ -1082,7 +1173,8 @@ "zh": "后端程序大量简化,提升程序性能", "zh-TW": "後端程式大量簡化,提升程式效能", "fr": "Backend largement simplifié pour améliorer les performances", - "ru": "Серверная часть значительно упрощена для повышения производительности" + "ru": "Серверная часть значительно упрощена для повышения производительности", + "pt-BR": "Simplificou significativamente o back-end para melhorar o desempenho" } }, { @@ -1092,7 +1184,8 @@ "zh": "优化程序里所有的注释,使其更加清晰易懂", "zh-TW": "最佳化程式裡所有的註解,使其更加清晰易懂", "fr": "Commentaires affinés dans tout le code source pour une meilleure lisibilité", - "ru": "Комментарии во всей кодовой базе улучшены для большей читаемости" + "ru": "Комментарии во всей кодовой базе улучшены для большей читаемости", + "pt-BR": "Comentários refinados em toda a base de código para melhor legibilidade" } }, { @@ -1102,7 +1195,8 @@ "zh": "修复了多个 Bug,提升了程序稳定性", "zh-TW": "修正了多個 Bug,提升了程式穩定性", "fr": "Correction de plusieurs bugs et amélioration de la stabilité globale", - "ru": "Исправлено множество ошибок и повышена общая стабильность" + "ru": "Исправлено множество ошибок и повышена общая стабильность", + "pt-BR": "Vários bugs corrigidos e estabilidade geral melhorada" } } ] @@ -1118,7 +1212,8 @@ "zh": "深度 DNS 泄露测试:捕获所有递归解析器并分析 ECS 与 DNSSEC", "zh-TW": "深度 DNS 洩漏測試:捕獲所有遞迴解析器並分析 ECS 與 DNSSEC", "fr": "Test de fuite DNS approfondi : capture tous les résolveurs récursifs utilisés, avec analyse ECS et DNSSEC", - "ru": "Углублённый тест утечки DNS: выявляет все используемые рекурсивные резолверы и анализирует ECS и DNSSEC" + "ru": "Углублённый тест утечки DNS: выявляет все используемые рекурсивные резолверы и анализирует ECS и DNSSEC", + "pt-BR": "Teste aprofundado de vazamento de DNS: captura todos os resolvedores recursivos que você usa, com análise de ECS e DNSSEC" } }, { @@ -1128,7 +1223,8 @@ "zh": "网络连通性支持添加自定义测试站点", "zh-TW": "網路連通性支援新增自訂測試站點", "fr": "La Connectivité réseau accepte désormais des cibles de test personnalisées", - "ru": "В проверку сетевого подключения теперь можно добавлять собственные цели" + "ru": "В проверку сетевого подключения теперь можно добавлять собственные цели", + "pt-BR": "A conectividade de rede agora aceita alvos de teste adicionados pelo usuário" } }, { @@ -1138,7 +1234,8 @@ "zh": "通知(Toast)回归屏幕右下角,自动避让悬浮按钮组", "zh-TW": "通知(Toast)回歸螢幕右下角,自動避開懸浮按鈕組", "fr": "Les notifications reviennent dans le coin inférieur droit, en contournant les boutons flottants", - "ru": "Уведомления (тосты) возвращены в правый нижний угол и больше не перекрывают плавающие кнопки действий" + "ru": "Уведомления (тосты) возвращены в правый нижний угол и больше не перекрывают плавающие кнопки действий", + "pt-BR": "As notificações (brindes) voltaram para o canto inferior direito, limpando os botões de ação flutuantes" } }, { @@ -1148,7 +1245,8 @@ "zh": "Whois 查询支持更多现代 TLD", "zh-TW": "Whois 查詢支援更多現代 TLD", "fr": "La recherche Whois couvre désormais les TLD modernes", - "ru": "Поиск Whois теперь охватывает больше современных TLD" + "ru": "Поиск Whois теперь охватывает больше современных TLD", + "pt-BR": "A pesquisa Whois agora cobre TLDs mais modernos" } }, { @@ -1158,7 +1256,8 @@ "zh": "改进网络连通性测试,可达性判定更可靠", "zh-TW": "改進網路連通性測試,可達性判定更可靠", "fr": "Test de connectivité réseau amélioré — détection de disponibilité plus fiable", - "ru": "Обновлена проверка сетевого подключения — определение доступности стало надёжнее" + "ru": "Обновлена проверка сетевого подключения — определение доступности стало надёжнее", + "pt-BR": "Teste de conectividade de rede atualizado – detecção de acessibilidade mais confiável" } }, { @@ -1168,7 +1267,8 @@ "zh": "DNS 查询更快", "zh-TW": "DNS 查詢更快", "fr": "Le résolveur DNS est nettement plus rapide", - "ru": "DNS-резолвер стал заметно быстрее" + "ru": "DNS-резолвер стал заметно быстрее", + "pt-BR": "O resolvedor de DNS é visivelmente mais rápido" } }, { @@ -1178,7 +1278,8 @@ "zh": "修复自动主题模式下跟随系统切换时不立即生效的问题", "zh-TW": "修正自動主題模式下跟隨系統切換時不立即生效的問題", "fr": "Le mode thème automatique suit désormais instantanément le changement clair/sombre du système", - "ru": "Автоматическая тема теперь мгновенно реагирует на переключение светлой/тёмной темы в операционной системе" + "ru": "Автоматическая тема теперь мгновенно реагирует на переключение светлой/тёмной темы в операционной системе", + "pt-BR": "O modo de tema automático agora segue a mudança claro/escuro do sistema operacional instantaneamente" } }, { @@ -1188,7 +1289,8 @@ "zh": "修复页面首次加载时的短暂视觉抖动", "zh-TW": "修正頁面首次載入時的短暫視覺抖動", "fr": "Suppression du bref scintillement visuel au premier chargement de la page", - "ru": "Устранено краткое мерцание при первой загрузке страницы" + "ru": "Устранено краткое мерцание при первой загрузке страницы", + "pt-BR": "Removida a breve oscilação visual no carregamento da primeira página" } } ] @@ -1204,7 +1306,8 @@ "zh": "可以查看一个 IP 过往的所有 ASN 记录", "zh-TW": "可以檢視一個 IP 過往的所有 ASN 記錄", "fr": "Vous pouvez maintenant voir l'historique des ASN d'une IP", - "ru": "Теперь можно просматривать историю записей ASN для IP" + "ru": "Теперь можно просматривать историю записей ASN для IP", + "pt-BR": "Agora você pode visualizar os registros históricos de ASN de um IP" } }, { @@ -1214,7 +1317,8 @@ "zh": "优化网络连通性测试,显示多次测试进度", "zh-TW": "最佳化網路連通性測試,顯示多次測試進度", "fr": "Optimisation du test de connectivité pour afficher le progrès des tests multiples", - "ru": "Проверка подключения оптимизирована: теперь виден ход нескольких тестов" + "ru": "Проверка подключения оптимизирована: теперь виден ход нескольких тестов", + "pt-BR": "Teste de conectividade otimizado para mostrar o progresso de vários testes" } }, { @@ -1224,7 +1328,8 @@ "zh": "修复运行多次网络连通性测试时,通知时机错误的问题", "zh-TW": "修正執行多次網路連通性測試時,通知時機錯誤的問題", "fr": "Correction d'un bug causant la notification à se déclencher trop tôt lors de l'exécution de plusieurs tests de connectivité", - "ru": "Исправлена ошибка, из-за которой при нескольких проверках подключения уведомление появлялось слишком рано" + "ru": "Исправлена ошибка, из-за которой при нескольких проверках подключения уведомление появлялось слишком рано", + "pt-BR": "Corrigido um bug que fazia com que a notificação fosse disparada muito cedo ao executar vários testes de conectividade" } } ] @@ -1240,7 +1345,8 @@ "zh": "可以查看 ASN 上游连接图,更直观地了解 ASN 的网络拓扑结构", "zh-TW": "可以檢視 ASN 上游連線圖,更直觀地了解 ASN 的網路拓撲結構", "fr": "Vous pouvez maintenant voir le graphique de connectivité des ASN", - "ru": "Теперь можно просматривать граф связности ASN с вышестоящими сетями" + "ru": "Теперь можно просматривать граф связности ASN с вышестоящими сетями", + "pt-BR": "Agora você pode visualizar o gráfico de conectividade upstream de um ASN" } }, { @@ -1250,7 +1356,8 @@ "zh": "添加简约模式,隐藏每个模块的说明文字", "zh-TW": "新增簡潔模式,隱藏每個模組的說明文字", "fr": "Ajout du mode simple, masque le texte de description de chaque module", - "ru": "Добавлен простой режим, скрывающий описание каждого модуля" + "ru": "Добавлен простой режим, скрывающий описание каждого модуля", + "pt-BR": "Adicionado modo simples, oculta o texto de descrição de cada módulo" } }, { @@ -1260,7 +1367,8 @@ "zh": "WebRTC 测试工具添加了 SDP 日志功能", "zh-TW": "WebRTC 測試工具新增了 SDP 日誌功能", "fr": "Ajout de la fonctionnalité de journalisation SDP dans l'outil de test WebRTC", - "ru": "В инструмент «Тест WebRTC» добавлен журнал SDP" + "ru": "В инструмент «Тест WebRTC» добавлен журнал SDP", + "pt-BR": "Adicionado log SDP à ferramenta de teste WebRTC" } }, { @@ -1270,7 +1378,8 @@ "zh": "优化了浏览器信息工具,使其更加准确和实用", "zh-TW": "最佳化了瀏覽器資訊工具,使其更加準確和實用", "fr": "Amélioration de l'outil d'informations sur le navigateur pour plus d'informations précises et pratiques", - "ru": "Инструмент «Информация о браузере» улучшен для получения более точных и полезных сведений" + "ru": "Инструмент «Информация о браузере» улучшен для получения более точных и полезных сведений", + "pt-BR": "Ferramenta aprimorada de informações do navegador para informações mais precisas e práticas" } }, { @@ -1280,7 +1389,8 @@ "zh": "修复了一些小问题", "zh-TW": "修正了一些小問題", "fr": "Correction de petits problèmes", - "ru": "Исправлены небольшие проблемы" + "ru": "Исправлены небольшие проблемы", + "pt-BR": "Corrigido alguns pequenos problemas" } } ] @@ -1296,7 +1406,8 @@ "zh": "现在可以保存 IP 卡片或 ASN 连接图作为图片", "zh-TW": "現在可以將 IP 卡片或 ASN 連線圖儲存為圖片", "fr": "Vous pouvez maintenant enregistrer les cartes IP ou le graphique de connectivité ASN en image", - "ru": "Теперь карточку IP или граф связности ASN можно сохранить как изображение" + "ru": "Теперь карточку IP или граф связности ASN можно сохранить как изображение", + "pt-BR": "Agora você pode salvar o cartão IP ou o gráfico de conectividade ASN como imagem" } }, { @@ -1306,7 +1417,8 @@ "zh": "优化网络连通性测试的品牌图标", "zh-TW": "最佳化網路連通性測試的品牌圖示", "fr": "Optimisation des icônes de marque du test de connectivité", - "ru": "Обновлены значки брендов в проверке подключения" + "ru": "Обновлены значки брендов в проверке подключения", + "pt-BR": "Otimizou os ícones da marca do Teste de Conectividade" } }, { @@ -1316,7 +1428,8 @@ "zh": "丰富 WebRTC 测试和规则测试的信息展示", "zh-TW": "豐富 WebRTC 測試和分流測試的資訊展示", "fr": "Amélioration de l'affichage des informations du test WebRTC et du test de règles", - "ru": "Расширено отображение сведений в тесте WebRTC и тесте правил" + "ru": "Расширено отображение сведений в тесте WebRTC и тесте правил", + "pt-BR": "Enriquecida a exibição de informações do teste WebRTC e do teste de regras" } }, { @@ -1326,7 +1439,8 @@ "zh": "导航栏在手机上会跟随滚动隐藏", "zh-TW": "導覽列在手機上會跟隨捲動隱藏", "fr": "La barre de navigation se cache lors du défilement sur mobile", - "ru": "Панель навигации теперь скрывается при прокрутке на мобильных устройствах" + "ru": "Панель навигации теперь скрывается при прокрутке на мобильных устройствах", + "pt-BR": "A barra de navegação será ocultada ao rolar no celular" } }, { @@ -1336,7 +1450,8 @@ "zh": "修复 PWA 状态栏颜色与主题不一致的问题", "zh-TW": "修正 PWA 狀態列顏色與主題不一致的問題", "fr": "Correction d'un bug causant la couleur de la barre de statut PWA à ne pas correspondre au thème", - "ru": "Исправлена ошибка, из-за которой цвет строки состояния PWA не соответствовал теме" + "ru": "Исправлена ошибка, из-за которой цвет строки состояния PWA не соответствовал теме", + "pt-BR": "Corrigido um bug que fazia com que a cor da barra de status do PWA não correspondesse ao tema" } } ] @@ -1352,7 +1467,8 @@ "zh": "新增「服务可用性」高级工具,实时展示知名 AI 服务的可用状态", "zh-TW": "新增「服務可用性」進階工具,即時展示知名 AI 服務的可用狀態", "fr": "Nouvel outil avancé : État des services, affichant la disponibilité en temps réel de services populaires", - "ru": "Новый расширенный инструмент «Статус сервисов» показывает доступность популярных AI-сервисов в реальном времени" + "ru": "Новый расширенный инструмент «Статус сервисов» показывает доступность популярных AI-сервисов в реальном времени", + "pt-BR": "Nova ferramenta avançada: status do serviço, mostrando a disponibilidade ao vivo de serviços populares de IA" } }, { @@ -1362,7 +1478,8 @@ "zh": "高级工具可以在新页面打开", "zh-TW": "進階工具可以在新頁面開啟", "fr": "Les outils avancés peuvent maintenant être ouverts dans une nouvelle page", - "ru": "Расширенные инструменты теперь можно открывать на отдельной странице" + "ru": "Расширенные инструменты теперь можно открывать на отдельной странице", + "pt-BR": "Ferramentas avançadas agora podem ser abertas em uma nova página" } }, { @@ -1372,7 +1489,8 @@ "zh": "优化多处体验,提升可用性", "zh-TW": "最佳化多處體驗,提升可用性", "fr": "Amélioration de multiples expériences pour améliorer l'utilisabilité", - "ru": "Внесено несколько улучшений для повышения удобства использования" + "ru": "Внесено несколько улучшений для повышения удобства использования", + "pt-BR": "Múltiplas experiências aprimoradas para melhorar a usabilidade" } }, { @@ -1382,7 +1500,8 @@ "zh": "修复一些问题", "zh-TW": "修正一些問題", "fr": "Correction de petits problèmes", - "ru": "Исправлены некоторые проблемы" + "ru": "Исправлены некоторые проблемы", + "pt-BR": "Corrigido alguns problemas" } } ] @@ -1398,7 +1517,8 @@ "zh": "网络连通性测试可以设置多次刷新,并显示最小延迟值", "zh-TW": "網路連通性測試可以設定多次重新整理,並顯示最小延遲值", "fr": "Le test de connectivité réseau peut maintenant être configuré pour plusieurs rafraîchissements et afficher la valeur de latence minimale", - "ru": "Для проверки сетевого подключения теперь можно задать несколько повторных проверок и отображать минимальную задержку" + "ru": "Для проверки сетевого подключения теперь можно задать несколько повторных проверок и отображать минимальную задержку", + "pt-BR": "O teste de conectividade de rede agora pode ser configurado para múltiplas atualizações e exibir o valor mínimo de latência" } }, { @@ -1408,7 +1528,8 @@ "zh": "新增隐私政策页面", "zh-TW": "新增隱私政策頁面", "fr": "Ajout de la page Politique de confidentialité", - "ru": "Добавлена страница политики конфиденциальности" + "ru": "Добавлена страница политики конфиденциальности", + "pt-BR": "Adicionada página de Política de Privacidade" } }, { @@ -1418,7 +1539,8 @@ "zh": "导航栏展示所有高级工具的入口", "zh-TW": "導覽列展示所有進階工具的入口", "fr": "La barre de navigation affiche désormais tous les outils avancés", - "ru": "Панель навигации теперь показывает все расширенные инструменты" + "ru": "Панель навигации теперь показывает все расширенные инструменты", + "pt-BR": "A barra de navegação agora mostra todas as ferramentas avançadas" } }, { @@ -1428,7 +1550,8 @@ "zh": "首页的所有模块现在可以单独控制是否自动运行", "zh-TW": "首頁的所有模組現在可以個別控制是否自動執行", "fr": "Tous les modules de la page d'accueil peuvent maintenant être contrôlés individuellement pour déterminer s'ils doivent être exécutés automatiquement", - "ru": "Для каждого модуля на главной странице теперь можно отдельно настроить автоматический запуск" + "ru": "Для каждого модуля на главной странице теперь можно отдельно настроить автоматический запуск", + "pt-BR": "Todos os módulos na página inicial agora podem ser controlados individualmente para serem executados automaticamente" } }, { @@ -1438,7 +1561,8 @@ "zh": "修复一些问题", "zh-TW": "修正一些問題", "fr": "Correction de petits problèmes", - "ru": "Исправлены некоторые проблемы" + "ru": "Исправлены некоторые проблемы", + "pt-BR": "Corrigido alguns problemas" } } ] @@ -1454,7 +1578,8 @@ "zh": "测试结果可生成诊断报告并分享——自动过期的只读链接、AI 可读的 Markdown 或 JSON", "zh-TW": "測試結果可產生診斷報告並分享——自動過期的唯讀連結、AI 可讀的 Markdown 或 JSON", "fr": "Partagez vos résultats de test sous forme de rapport de diagnostic — lien en lecture seule à expiration automatique, Markdown prêt pour l'IA ou JSON", - "ru": "Результатами тестов теперь можно делиться в виде диагностического отчёта — по ссылке только для чтения с автоматическим истечением срока, в формате Markdown для AI или JSON" + "ru": "Результатами тестов теперь можно делиться в виде диагностического отчёта — по ссылке только для чтения с автоматическим истечением срока, в формате Markdown для AI или JSON", + "pt-BR": "Compartilhe resultados de testes como um relatório de diagnóstico – link somente leitura com expiração automática, Markdown pronto para IA ou JSON" } }, { @@ -1464,7 +1589,8 @@ "zh": "新增 IP 历史记录面板,并支持按类型和国家筛选", "zh-TW": "新增 IP 歷史記錄面板,並支援依類型和國家篩選", "fr": "Ajout du panneau Historique IP avec filtres par type et par pays", - "ru": "Добавлена панель истории IP с фильтрами по типу и стране" + "ru": "Добавлена панель истории IP с фильтрами по типу и стране", + "pt-BR": "Adicionado painel Histórico de IP com filtros de tipo e país" } }, { @@ -1474,7 +1600,8 @@ "zh": "集成错误与性能监控,开发者可选启用", "zh-TW": "整合錯誤與效能監控,開發者可選擇啟用", "fr": "Intégration de la surveillance des erreurs et des performances, activable en option par les développeurs", - "ru": "Добавлен мониторинг ошибок и производительности, который разработчики могут включить при необходимости" + "ru": "Добавлен мониторинг ошибок и производительности, который разработчики могут включить при необходимости", + "pt-BR": "Monitoramento integrado de erros e desempenho, opcional para desenvolvedores habilitarem" } }, { @@ -1484,7 +1611,8 @@ "zh": "新增一个幽默的启动动画", "zh-TW": "新增一個幽默的啟動動畫", "fr": "Ajout d'une animation de lancement humoristique", - "ru": "Добавлена юмористическая анимация запуска" + "ru": "Добавлена юмористическая анимация запуска", + "pt-BR": "Adicionada uma animação de inicialização humorística" } }, { @@ -1494,7 +1622,8 @@ "zh": "使用用户浏览器内置国家地区名称,避免政治争议", "zh-TW": "改用瀏覽器內建的國家與地區名稱,避免政治爭議", "fr": "Les noms de pays et de régions proviennent désormais des données intégrées au navigateur, évitant les controverses politiques", - "ru": "Названия стран и регионов теперь берутся из встроенных данных браузера пользователя, что помогает избежать политических споров" + "ru": "Названия стран и регионов теперь берутся из встроенных данных браузера пользователя, что помогает избежать политических споров", + "pt-BR": "Os nomes de países e regiões agora vêm dos dados integrados ao navegador do usuário, evitando controvérsias políticas" } }, { @@ -1504,7 +1633,8 @@ "zh": "IP 信息源链路出现故障时优雅降级", "zh-TW": "IP 資訊來源鏈路發生故障時優雅降級", "fr": "La chaîne de sources IP se dégrade désormais en douceur en cas de panne", - "ru": "Цепочка источников IP теперь корректно переключается на резервные источники при сбое" + "ru": "Цепочка источников IP теперь корректно переключается на резервные источники при сбое", + "pt-BR": "A cadeia de origem de IP agora se degrada normalmente quando uma origem falha" } }, { @@ -1514,7 +1644,8 @@ "zh": "WebRTC 测试可检测浏览器隐私加固情况", "zh-TW": "WebRTC 測試可偵測瀏覽器隱私強化情況", "fr": "Le test WebRTC peut désormais détecter le renforcement de la confidentialité du navigateur", - "ru": "Тест WebRTC теперь выявляет усиленную защиту конфиденциальности браузера" + "ru": "Тест WebRTC теперь выявляет усиленную защиту конфиденциальности браузера", + "pt-BR": "O teste WebRTC agora pode detectar o fortalecimento da privacidade do navegador" } }, { @@ -1524,7 +1655,8 @@ "zh": "手机端 FAB 按钮体验优化", "zh-TW": "手機端 FAB 懸浮按鈕體驗最佳化", "fr": "Optimisation de l'expérience des boutons FAB sur mobile", - "ru": "Улучшено использование кнопок FAB на мобильных устройствах" + "ru": "Улучшено использование кнопок FAB на мобильных устройствах", + "pt-BR": "Experiência otimizada do botão FAB móvel" } }, { @@ -1534,7 +1666,8 @@ "zh": "网速测试在连接中途失败时会显示明确的错误状态", "zh-TW": "網速測試在連線中途失敗時會顯示明確的錯誤狀態", "fr": "Le test de vitesse affiche désormais un état d'erreur clair lorsque la connexion échoue en cours d'exécution", - "ru": "Тест скорости теперь явно показывает ошибку, если соединение обрывается во время выполнения" + "ru": "Тест скорости теперь явно показывает ошибку, если соединение обрывается во время выполнения", + "pt-BR": "O teste de velocidade agora mostra um estado de erro claro quando a conexão é interrompida no meio da execução" } }, { @@ -1544,7 +1677,8 @@ "zh": "其它数十处用户体验优化", "zh-TW": "其他數十處使用者體驗最佳化", "fr": "Des dizaines d'autres améliorations de l'expérience utilisateur", - "ru": "Внесены десятки других улучшений пользовательского опыта" + "ru": "Внесены десятки других улучшений пользовательского опыта", + "pt-BR": "Dezenas de outras melhorias na experiência do usuário" } }, { @@ -1554,7 +1688,8 @@ "zh": "修复各个工具的 20 多处问题,提升整体稳定性", "zh-TW": "修正各個工具的 20 多處問題,提升整體穩定性", "fr": "Correction de plus de 20 problèmes dans les outils, améliorant la stabilité globale", - "ru": "Исправлено более 20 проблем в инструментах и повышена общая стабильность" + "ru": "Исправлено более 20 проблем в инструментах и повышена общая стабильность", + "pt-BR": "Corrigidos mais de 20 problemas nas ferramentas, melhorando a estabilidade geral" } } ] @@ -1570,7 +1705,8 @@ "zh": "使用多种方式优化加载速度,提升 50%+", "zh-TW": "使用多種方式最佳化載入速度,提升 50%+", "fr": "Optimisation de la vitesse de chargement de 50%+", - "ru": "Скорость загрузки повышена более чем на 50%" + "ru": "Скорость загрузки повышена более чем на 50%", + "pt-BR": "Velocidade de carregamento otimizada em 50%+" } }, { @@ -1580,7 +1716,8 @@ "zh": "支持俄语语言", "zh-TW": "支援俄文", "fr": "Support de la langue russe", - "ru": "Добавлена поддержка русского языка" + "ru": "Добавлена поддержка русского языка", + "pt-BR": "Idioma russo suportado" } }, { @@ -1590,7 +1727,8 @@ "zh": "提升本地 Maxmind 并发查询能力", "zh-TW": "提升本機 Maxmind 並行查詢能力", "fr": "Amélioration de la capacité de requête concurrente Maxmind locale", - "ru": "Улучшена поддержка параллельных запросов к локальной базе MaxMind" + "ru": "Улучшена поддержка параллельных запросов к локальной базе MaxMind", + "pt-BR": "Capacidade aprimorada de consulta simultânea local do Maxmind" } }, { @@ -1600,7 +1738,8 @@ "zh": "修复 Whois 查询工具无法查询部分 IP 的错误", "zh-TW": "修正 Whois 查詢工具無法查詢部分 IP 的錯誤", "fr": "Correction d'un bug qui empêchait la recherche de certains IP avec l'outil Whois", - "ru": "Исправлен поиск Whois для некоторых IP-адресов" + "ru": "Исправлен поиск Whois для некоторых IP-адресов", + "pt-BR": "Corrigido o Whois Search que não conseguia consultar alguns IPs" } } ] @@ -1616,7 +1755,8 @@ "zh": "全面重构封锁测试,可以查询一个网站在全球的封锁情况和被封锁手段", "zh-TW": "全面重構封鎖測試,可以查詢一個網站在全球的封鎖情況和被封鎖手段", "fr": "Refonte complète du test de censure : découvrez où un site est bloqué dans le monde et par quels moyens", - "ru": "Полностью переработана проверка цензуры: видно, где в мире сайт заблокирован и какими методами" + "ru": "Полностью переработана проверка цензуры: видно, где в мире сайт заблокирован и какими методами", + "pt-BR": "Reconstrução da verificação de censura: veja onde um site está bloqueado em todo o mundo e por que meios" } }, { @@ -1626,7 +1766,8 @@ "zh": "MTR 测试、全球延迟测试和封锁测试支持从全球可用探针中按大洲自选国家/地区", "zh-TW": "MTR 測試、全球延遲測試和封鎖測試支援從全球可用探針中依大洲自選國家/地區", "fr": "Les tests MTR, latence mondiale et censure permettent de choisir les pays parmi toutes les sondes Globalping disponibles, groupées par continent", - "ru": "В тестах MTR, глобальной задержки и цензуры можно выбирать страны из всех доступных зондов Globalping, сгруппированных по континентам" + "ru": "В тестах MTR, глобальной задержки и цензуры можно выбирать страны из всех доступных зондов Globalping, сгруппированных по континентам", + "pt-BR": "Os testes MTR, Latência Global e Censura agora permitem escolher países de todas as sondagens Globalping disponíveis, agrupadas por continente" } }, { @@ -1636,7 +1777,8 @@ "zh": "新增 AI 助手 IPilot:基于文档回答你的问题,并可在你授权后读取页面上的检测结果", "zh-TW": "新增 AI 助手 IPilot:依據文件回答你的問題,並可在你授權後讀取頁面上的測試結果", "fr": "Nouvel assistant IA : IPilot répond à vos questions à partir de la documentation et peut lire vos résultats affichés avec votre autorisation", - "ru": "Новый ИИ-помощник IPilot: отвечает на вопросы по документации и может прочитать результаты на странице с вашего разрешения" + "ru": "Новый ИИ-помощник IPilot: отвечает на вопросы по документации и может прочитать результаты на странице с вашего разрешения", + "pt-BR": "Novo assistente de IA: o IPilot responde às suas perguntas nos documentos e pode ler os resultados na página com sua permissão" } }, { @@ -1646,7 +1788,8 @@ "zh": "新增用户与开发帮助文档,包含工具使用说明、网络问题排查和自部署指南", "zh-TW": "新增使用者與開發說明文件,包含工具使用說明、網路問題排查和自行部署指南", "fr": "Nouveau site de documentation pour les utilisateurs et les développeurs : guides des outils, dépannage réseau et auto-hébergement", - "ru": "Новый сайт документации для пользователей и разработчиков: описания инструментов, диагностика сети и самостоятельный хостинг" + "ru": "Новый сайт документации для пользователей и разработчиков: описания инструментов, диагностика сети и самостоятельный хостинг", + "pt-BR": "Novo site de documentação para usuários e desenvolvedores, com guias de ferramentas, solução de problemas de rede e documentos de auto-hospedagem" } }, { @@ -1656,7 +1799,8 @@ "zh": "提升「服务可用性」高级工具的稳定性", "zh-TW": "提升「服務可用性」進階工具的穩定性", "fr": "Amélioration de la stabilité de l'outil Disponibilité des services", - "ru": "Повышена стабильность инструмента «Статус сервисов»" + "ru": "Повышена стабильность инструмента «Статус сервисов»", + "pt-BR": "Melhorou a estabilidade da ferramenta Status do Serviço" } }, { @@ -1666,7 +1810,8 @@ "zh": "修复了一些小问题", "zh-TW": "修正了一些小問題", "fr": "Correction de petits problèmes", - "ru": "Исправлены некоторые мелкие проблемы" + "ru": "Исправлены некоторые мелкие проблемы", + "pt-BR": "Pequenos problemas corrigidos" } } ] @@ -1682,7 +1827,8 @@ "zh": "IP 信息卡片与 IP 查询新增时区显示,并附带当前 UTC 偏移", "zh-TW": "IP 資訊卡片與 IP 查詢新增時區顯示,並附上目前的 UTC 偏移", "fr": "Les cartes IP et la recherche d'IP affichent désormais le fuseau horaire de l'IP localisée, avec son décalage UTC actuel", - "ru": "На карточках IP и в поиске по IP теперь отображается часовой пояс найденного IP-адреса и его текущее смещение UTC" + "ru": "На карточках IP и в поиске по IP теперь отображается часовой пояс найденного IP-адреса и его текущее смещение UTC", + "pt-BR": "Os cartões IP e a pesquisa de IP agora mostram o fuso horário do IP localizado, com seu deslocamento UTC atual" } }, { @@ -1692,7 +1838,8 @@ "zh": "网络连通性支持导入内置测试列表:伊朗、俄罗斯、中国等国家合集,以及 AI、社交、流媒体、游戏、开发者、云服务、加密交易所、新闻等主题合集", "zh-TW": "網路連通性支援匯入內建測試列表:伊朗、俄羅斯、中國等國家合集,以及 AI、社群、串流影音、遊戲、開發者、雲端服務、加密貨幣交易所、新聞等主題合集", "fr": "Connectivité : importez des listes de tests prêtes à l'emploi — packs pays (Iran, Russie, Chine) et ensembles IA, réseaux sociaux, streaming, jeux, développeurs, cloud, crypto et actualités", - "ru": "Проверка доступности: импорт готовых списков — наборы по странам (Иран, Россия, Китай), а также ИИ, соцсети, стриминг, игры, разработка, облака, криптобиржи и новости" + "ru": "Проверка доступности: импорт готовых списков — наборы по странам (Иран, Россия, Китай), а также ИИ, соцсети, стриминг, игры, разработка, облака, криптобиржи и новости", + "pt-BR": "Conectividade: importe listas de testes selecionadas — pacotes de países (Irã, Rússia, China) além de IA, redes sociais, streaming, jogos, desenvolvedores, nuvem, criptografia e conjuntos de notícias" } }, { @@ -1702,7 +1849,8 @@ "zh": "地球在线:查看全球访客的状态、全球网络故障情况,以及分享自己的状态", "zh-TW": "地球線上:檢視全球訪客的狀態、全球網路故障情況,以及分享自己的狀態", "fr": "La Terre en ligne : voyez le statut des visiteurs, les pannes de réseau mondiales et partagez votre statut", - "ru": "Земля онлайн: смотрите статус посетителей, глобальные сбои сети и делитесь своим статусом" + "ru": "Земля онлайн: смотрите статус посетителей, глобальные сбои сети и делитесь своим статусом", + "pt-BR": "Earth Online: veja o status do visitante, interrupções na rede global e compartilhe seu próprio status" } }, { @@ -1712,7 +1860,8 @@ "zh": "新增一批可以解锁的成就", "zh-TW": "新增一批可以解鎖的成就", "fr": "Nouveaux succès à débloquer", - "ru": "Новые достижения" + "ru": "Новые достижения", + "pt-BR": "Novas conquistas para desbloquear" } }, { @@ -1722,7 +1871,8 @@ "zh": "连通性卡片改用网站真实图标显示,可测试数量上限提升至 60 个", "zh-TW": "連通性卡片改用網站真實圖示顯示,可測試數量上限提升至 60 個", "fr": "Les cartes de connectivité affichent désormais les vraies favicons des sites, et la capacité de test passe à 60", - "ru": "Карточки доступности теперь показывают настоящие favicon сайтов, а лимит тестов увеличен до 60" + "ru": "Карточки доступности теперь показывают настоящие favicon сайтов, а лимит тестов увеличен до 60", + "pt-BR": "Os cartões de conectividade agora mostram favicons reais do site e a capacidade de teste aumenta para 60" } }, { @@ -1732,7 +1882,8 @@ "zh": "优化了一些程序逻辑,提高代码复用率", "zh-TW": "最佳化了一些程式邏輯,提高程式碼複用率", "fr": "Optimisation de certaines logiques de programmation pour augmenter le taux de réutilisation du code", - "ru": "Оптимизация некоторых логических программ для повышения коэффициента повторного использования кода" + "ru": "Оптимизация некоторых логических программ для повышения коэффициента повторного использования кода", + "pt-BR": "Otimizou alguma lógica do programa para aumentar a taxa de reutilização de código" } }, { @@ -1742,7 +1893,8 @@ "zh": "修复了一些问题", "zh-TW": "修正了一些問題", "fr": "Correction de petits problèmes", - "ru": "Исправлены некоторые проблемы" + "ru": "Исправлены некоторые проблемы", + "pt-BR": "Corrigido alguns problemas" } } ] @@ -1758,7 +1910,8 @@ "zh": "新增工具:深度画像检测——看看网站能读到的信息,有多少和你想被当成的国家对得上", "zh-TW": "新增工具:深度畫像檢測——看看網站能讀到的資訊,有多少和你想被當成的國家對得上", "fr": "Nouvel outil : Vérification de persona approfondie — voyez dans quelle mesure ce que lisent les sites correspond au pays pour lequel vous voulez passer", - "ru": "Новый инструмент: углублённая проверка портрета — насколько то, что видят сайты, совпадает со страной, за жителя которой вы хотите себя выдавать" + "ru": "Новый инструмент: углублённая проверка портрета — насколько то, что видят сайты, совпадает со страной, за жителя которой вы хотите себя выдавать", + "pt-BR": "Nova ferramenta: verificação detalhada de personalidade – veja quanto do que os sites lêem concorda com o país para o qual você deseja ser levado" } }, { @@ -1768,7 +1921,8 @@ "zh": "网络连通性测试可删除预设网站、新增国际电商平台、巴西常用网站导入列表", "zh-TW": "網路連通性測試可刪除預設網站、新增國際電商平台、巴西常用網站匯入列表", "fr": "Connectivité : les sites prédéfinis sont désormais supprimables, avec de nouvelles listes importables « E-commerce mondial » et « Essentiels Brésil »", - "ru": "Проверка доступности: предустановленные сайты теперь можно удалять, добавлены импортируемые списки «Электронная коммерция» и «Бразилия: основные»" + "ru": "Проверка доступности: предустановленные сайты теперь можно удалять, добавлены импортируемые списки «Электронная коммерция» и «Бразилия: основные»", + "pt-BR": "Conectividade: sites predefinidos agora são removíveis, além de novas listas de importação Global E-commerce e Brazil Essentials" } }, { @@ -1778,7 +1932,8 @@ "zh": "使用精美的柱状图展示多次刷新模式下的网络连通性测试结果", "zh-TW": "使用精美的長條圖展示多次重新整理模式下的網路連通性測試結果", "fr": "Connectivité : les résultats des tests multi-passes s'affichent désormais en élégantes barres de latence", - "ru": "Проверка доступности: результаты многократных тестов теперь отображаются изящными столбиками задержки" + "ru": "Проверка доступности: результаты многократных тестов теперь отображаются изящными столбиками задержки", + "pt-BR": "Conectividade: os resultados dos testes multi-round agora são renderizados como lindas barras de latência" } }, { @@ -1788,7 +1943,8 @@ "zh": "优化了多个地方的用户体验", "zh-TW": "最佳化了多個地方的使用者體驗", "fr": "Optimisation de l'expérience utilisateur dans plusieurs endroits", - "ru": "Оптимизация пользовательского опыта в нескольких местах" + "ru": "Оптимизация пользовательского опыта в нескольких местах", + "pt-BR": "Experiência de múltiplos usuários otimizada" } }, { @@ -1798,7 +1954,8 @@ "zh": "优化多处日期格式显示", "zh-TW": "最佳化多處日期格式顯示", "fr": "Optimisation de l'affichage des dates dans plusieurs endroits", - "ru": "Оптимизация отображения дат в нескольких местах" + "ru": "Оптимизация отображения дат в нескольких местах", + "pt-BR": "Exibição de data otimizada em vários lugares" } }, { @@ -1808,7 +1965,8 @@ "zh": "修复了一些问题", "zh-TW": "修正了一些問題", "fr": "Correction de petits problèmes", - "ru": "Исправлены некоторые проблемы" + "ru": "Исправлены некоторые проблемы", + "pt-BR": "Corrigido alguns problemas" } } ] @@ -1824,7 +1982,8 @@ "zh": "为开发者:重构多国语言架构,添加新语言变得更容易", "zh-TW": "為開發者:重構多國語言架構,新增語言變得更容易", "fr": "Pour les développeurs : refonte de l'architecture multi-langue, rendant plus facile l'ajout de nouvelles langues", - "ru": "Для разработчиков: переработана архитектура многоязычности, чтобы было легче добавлять новые языки" + "ru": "Для разработчиков: переработана архитектура многоязычности, чтобы было легче добавлять новые языки", + "pt-BR": "Para desenvolvedores: refatorou a arquitetura multilíngue, facilitando a adição de novos idiomas" } }, { @@ -1834,7 +1993,8 @@ "zh": "为开发者:新增 Section 推广位,可以根据需要,在不同的 Section 增加推广内容", "zh-TW": "為開發者:新增 Section 推廣位,可以依需要在不同的 Section 增加推廣內容", "fr": "Pour les développeurs : ajout de slots promotionnels par section, permettant d'ajouter du contenu promotionnel dans différentes sections selon les besoins", - "ru": "Для разработчиков: добавлены слоты продвижения, чтобы можно было добавлять продвижение в разные секции в зависимости от потребностей" + "ru": "Для разработчиков: добавлены слоты продвижения, чтобы можно было добавлять продвижение в разные секции в зависимости от потребностей", + "pt-BR": "Para desenvolvedores: slots de promoção de seção adicionados, pode adicionar conteúdo promocional em diferentes seções conforme necessário" } }, { @@ -1844,7 +2004,8 @@ "zh": "IPilot 现在可以帮使用者运行部分测试", "zh-TW": "IPilot 現在可以幫你執行部分測試", "fr": "IPilot peut désormais exécuter certains tests pour vous", - "ru": "IPilot теперь может запускать часть тестов за вас" + "ru": "IPilot теперь может запускать часть тестов за вас", + "pt-BR": "O IPilot agora pode executar alguns dos testes para você" } }, { @@ -1854,7 +2015,8 @@ "zh": "DNS 解析器现在按国家分组显示结果", "zh-TW": "DNS 解析器現在依國家分組顯示結果", "fr": "Le DNS Resolver affiche désormais les résultats par pays", - "ru": "DNS Resolver теперь группирует результаты по странам" + "ru": "DNS Resolver теперь группирует результаты по странам", + "pt-BR": "O DNS Resolver agora agrupa resultados por país" } }, { @@ -1864,7 +2026,8 @@ "zh": "修复了一些问题", "zh-TW": "修正了一些問題", "fr": "Correction de divers problèmes", - "ru": "Исправлены некоторые проблемы" + "ru": "Исправлены некоторые проблемы", + "pt-BR": "Corrigido alguns problemas" } } ] diff --git a/frontend/locales/security-checklist/pt-BR.json b/frontend/locales/security-checklist/pt-BR.json new file mode 100644 index 000000000..6fe5ccf2e --- /dev/null +++ b/frontend/locales/security-checklist/pt-BR.json @@ -0,0 +1,1646 @@ +[ + { + "title": "Autenticação", + "slug": "authentication", + "description": "Protegendo as credenciais de login da sua conta online", + "intro": "A maioria das violações de dados relatadas é causada pelo uso de senhas fracas, padrão ou roubadas (de acordo com [este relatório da Verizon](http://www.verizonenterprise.com/resources/reports/rp_dbir-2016-executive-summary_xg_en.pdf)). Use senhas longas, fortes e exclusivas, gerencie-as em um gerenciador de senhas seguro, habilite a autenticação de dois fatores, fique atento às violações e tome cuidado ao fazer login em suas contas.", + "checklist": [ + { + "point": "Use uma senha forte", + "priority": "Essential", + "details": "Se sua senha for muito curta ou contiver palavras, lugares ou nomes de dicionário, ela poderá ser facilmente quebrada por força bruta ou adivinhada por alguém. A maneira mais fácil de criar uma senha forte é torná-la longa (mais de 12 caracteres). Considere usar uma 'frase secreta', composta de muitas palavras. Como alternativa, use um gerador de senha para criar uma senha aleatória longa e forte. Experimente [HowSecureIsMyPassword.net](https://howsecureismypassword.net) para ter uma ideia da rapidez com que senhas comuns podem ser quebradas. Leia mais sobre como criar senhas fortes: [securityinabox.org](https://securityinabox.org/en/passwords/passwords-and-2fa/)", + "slug": "authentication-use-a-strong-password" + }, + { + "point": "Não reutilize senhas", + "priority": "Essential", + "details": "Se alguém reutilizasse uma senha e um site em que tivesse uma conta sofresse um vazamento, um criminoso poderia facilmente obter acesso não autorizado a suas outras contas. Isso geralmente é feito por meio de solicitações de login automatizadas em grande escala e é chamado de Credential Stuffing. Infelizmente, isso é muito comum, mas é simples de se proteger: use uma senha diferente para cada uma de suas contas online", + "slug": "authentication-don-t-reuse-passwords" + }, + { + "point": "Use um gerenciador de senhas seguro", + "priority": "Essential", + "details": "Para a maioria das pessoas, será quase impossível lembrar centenas de senhas fortes e exclusivas. Um gerenciador de senhas é um aplicativo que gera, armazena e preenche automaticamente suas credenciais de login para você. Todas as suas senhas serão criptografadas contra 1 senha mestra (que você deve lembrar e deve ser muito forte). A maioria dos gerenciadores de senhas possui extensões de navegador e aplicativos móveis, portanto, independentemente do dispositivo em que você estiver, suas senhas poderão ser preenchidas automaticamente. Um bom versátil é [Bitwarden](https://awesome-privacy.xyz/essentials/password-managers/bitwarden), ou consulte [Gerenciadores de senhas recomendados](https://awesome-privacy.xyz/essentials/password-managers)", + "slug": "authentication-use-a-secure-password-manager" + }, + { + "point": "Evite compartilhar senhas", + "priority": "Essential", + "details": "Embora possa haver momentos em que você precise compartilhar o acesso a uma conta com outra pessoa, geralmente você deve evitar fazer isso porque torna mais fácil o comprometimento da conta. Se você realmente precisar compartilhar uma senha, por exemplo, ao trabalhar em equipe com uma conta compartilhada, isso deve ser feito por meio de recursos integrados a um gerenciador de senhas.", + "slug": "authentication-avoid-sharing-passwords" + }, + { + "point": "Habilitar autenticação de dois fatores", + "priority": "Essential", + "details": "2FA é onde você deve fornecer algo que você sabe (uma senha) e algo que você tem (como um código em seu telefone) para fazer login. Isso significa que se alguém tiver sua senha (por exemplo, por meio de phishing, malware ou violação de dados), não será capaz de fazer login em sua conta. É fácil começar, baixe [um aplicativo autenticador](https://github.com/Lissy93/awesome-privacy#2-factor-authentication) em seu telefone, acesse as configurações de segurança da sua conta e siga as etapas para ativar o 2FA. Na próxima vez que você fizer login em um novo dispositivo, será solicitado o código exibido no aplicativo do seu telefone (funciona sem internet e o código geralmente muda a cada 30 segundos)", + "slug": "authentication-enable-2-factor-authentication" + }, + { + "point": "Mantenha os códigos de backup seguros", + "priority": "Essential", + "details": "Ao ativar a autenticação multifator, você geralmente receberá vários códigos que poderá usar se o seu método 2FA for perdido, quebrado ou indisponível. Mantenha esses códigos em um local seguro para evitar perda ou acesso não autorizado. Você deve armazená-los em papel ou em um local seguro no disco (por exemplo, em armazenamento offline ou em um arquivo/unidade criptografado). Não os armazene em seu Gerenciador de Senhas como fontes e senhas 2FA e devem ser mantidos separadamente.", + "slug": "authentication-keep-backup-codes-safe" + }, + { + "point": "Inscreva-se para receber alertas de violação", + "priority": "Optional", + "details": "Depois que um site sofre uma violação significativa de dados, os dados vazados geralmente acabam na Internet. Existem vários sites que coletam esses registros vazados e permitem que você pesquise seu endereço de e-mail para verificar se está em alguma de suas listas. [Firefox Monitor](https://monitor.firefox.com), [Have I been pwned](https://haveibeenpwned.com) e [DeHashed](https://dehashed.com) permitem que você se inscreva no monitoramento, onde eles irão notificá-lo se seu endereço de e-mail aparecer em algum novo conjunto de dados. É útil saber o mais rápido possível quando isso acontece, para que você possa alterar as senhas das contas afetadas. [Fui pwned](https://awesome-privacy.xyz/security-tools/online-tools/have-i-been-pwned) também possui notificação em todo o domínio, onde você pode receber alertas se algum endereço de e-mail em todo o seu domínio aparecer (útil se você usar aliases para [encaminhamento anônimo](https://github.com/Lissy93/awesome-privacy#anonymous-mail-forwarding))", + "slug": "authentication-sign-up-for-breach-alerts" + }, + { + "point": "Proteja sua senha/PIN", + "priority": "Optional", + "details": "Ao digitar sua senha em locais públicos, certifique-se de não estar na linha direta de uma câmera CCTV e de que ninguém possa ver por cima do seu ombro. Cubra sua senha ou código PIN enquanto você digita e não revele nenhuma senha em texto simples na tela", + "slug": "authentication-shield-your-password-pin" + }, + { + "point": "Atualize senhas críticas periodicamente", + "priority": "Optional", + "details": "Vazamentos e violações de bancos de dados são comuns e é provável que várias de suas senhas já estejam em algum lugar online. A atualização ocasional de senhas de contas críticas para a segurança pode ajudar a mitigar isso. Mas desde que todas as suas senhas sejam longas, fortes e exclusivas, não há necessidade de fazer isso com muita frequência – anualmente deve ser suficiente. A aplicação de alterações obrigatórias de senha nas organizações [não é mais recomendada](https://duo.com/decipher/microsoft-will-no-longer-recommend-forcing-periodic-password-changes), pois incentiva os colegas a selecionar senhas mais fracas", + "slug": "authentication-update-critical-passwords-periodically" + }, + { + "point": "Não salve sua senha em navegadores", + "priority": "Optional", + "details": "A maioria dos navegadores modernos oferece o salvamento de suas credenciais quando você faz login em um site. Não permita isso, pois nem sempre são criptografados e, portanto, podem permitir que alguém obtenha acesso às suas contas. Em vez disso, use um gerenciador de senhas dedicado para armazenar (e preencher automaticamente) suas senhas", + "slug": "authentication-dont-save-your-password-in-browsers" + }, + { + "point": "Evite fazer login no dispositivo de outra pessoa", + "priority": "Optional", + "details": "Evite fazer login no computador de outras pessoas, pois você não pode ter certeza de que o sistema delas está limpo. Seja especialmente cauteloso com máquinas públicas, pois malware e rastreamento são mais comuns aqui. Usar o dispositivo de outra pessoa é especialmente perigoso com contas críticas, como serviços bancários online. Ao usar a máquina de outra pessoa, certifique-se de estar em uma sessão privada/anônima (use Ctrl+Shift+N/Cmd+Shift+N). Isso solicitará que o navegador não salve suas credenciais, cookies e histórico de navegação.", + "slug": "authentication-avoid-logging-in-on-someone-elses-device" + }, + { + "point": "Evite dicas de senha", + "priority": "Optional", + "details": "Alguns sites permitem que você defina dicas de senha. Muitas vezes é muito fácil adivinhar as respostas. Nos casos em que as dicas de senha são obrigatórias, use respostas aleatórias e registre-as no gerenciador de senhas (`Nome da primeira escola: 6D-02-8B-!a-E8-8F-81`)", + "slug": "authentication-avoid-password-hints" + }, + { + "point": "Nunca responda perguntas de segurança online com sinceridade", + "priority": "Optional", + "details": "Se um site fizer perguntas de segurança (como local de nascimento, nome de solteira da mãe ou primeiro carro, etc.), não forneça respostas reais. É uma tarefa trivial para os hackers descobrir essas informações on-line ou por meio de engenharia social. Em vez disso, crie uma resposta fictícia e armazene-a em seu gerenciador de senhas. Usar palavras reais é melhor do que caracteres aleatórios, [explicado aqui](https://news.ycombinator.com/item?id=29244870)", + "slug": "authentication-never-answer-online-security-questions-truthfully" + }, + { + "point": "Não use um PIN de 4 dígitos", + "priority": "Optional", + "details": "Não use um PIN curto para acessar seu smartphone ou computador. Em vez disso, use uma senha de texto ou um PIN muito mais longo. As senhas numéricas são fáceis de decifrar (um pino de 4 dígitos tem 10.000 combinações, em comparação com 7,4 milhões para um código alfanumérico de 4 caracteres)", + "slug": "authentication-dont-use-a-4-digit-pin" + }, + { + "point": "Evite usar SMS para 2FA", + "priority": "Optional", + "details": "Ao habilitar a autenticação multifator, opte por códigos baseados em aplicativo ou um token de hardware, se compatível. O SMS é suscetível a uma série de ameaças comuns, como [troca de SIM](https://www.maketecheasier.com/sim-card-hijacking) e [interceptação](https://secure-voice.com/ss7_attacks). Também não há garantia de quão seguro seu número de telefone será armazenado ou para que outra finalidade ele será usado. Do ponto de vista prático, o SMS só funcionará quando tiver sinal e pode ser lento. Se um site ou serviço exigir o uso de um número SMS para recuperação, considere comprar um segundo número de telefone pré-pago usado apenas para recuperação de conta nesses casos.", + "slug": "authentication-avoid-using-sms-for-2fa" + }, + { + "point": "Evite usar seu PM para gerar OTPs", + "priority": "Advanced", + "details": "Muitos gerenciadores de senhas também são capazes de gerar códigos 2FA. É melhor não usar seu gerenciador de senhas principal também como autenticador 2FA, pois ele se tornaria um ponto único de falha se comprometido. Em vez disso, use um [aplicativo autenticador](https://github.com/Lissy93/awesome-privacy#2-factor-authentication) dedicado em seu telefone ou laptop", + "slug": "authentication-avoid-using-your-pm-to-generate-otps" + }, + { + "point": "Evite o desbloqueio facial", + "priority": "Advanced", + "details": "A maioria dos telefones e laptops oferece um recurso de autenticação de reconhecimento facial, usando a câmera para comparar uma foto do seu rosto com um hash armazenado. Pode ser muito conveniente, mas existem inúmeras maneiras de [enganá-lo](https://www.forbes.com/sites/jvchamary/2017/09/18/security-apple-face-id-iphone-x/) e obter acesso ao dispositivo, através de fotos digitais e reconstruções de imagens de CFTV. Ao contrário da sua senha – provavelmente há fotos do seu rosto na internet e vídeos gravados por câmeras de vigilância", + "slug": "authentication-avoid-face-unlock" + }, + { + "point": "Cuidado com os Keyloggers", + "priority": "Advanced", + "details": "Um [keylogger de hardware](https://en.wikipedia.org/wiki/Hardware_keylogger) é um dispositivo físico instalado entre o teclado e a porta USB que intercepta todas as teclas pressionadas e, às vezes, transmite dados a um servidor remoto. Ele dá a um invasor acesso a tudo o que foi digitado, inclusive senhas. A melhor forma de se proteger é verificar a conexão USB depois que o computador tiver ficado sem supervisão. Keyloggers também podem ser instalados dentro do gabinete do teclado; procure sinais de adulteração e considere levar seu próprio teclado ao trabalho. Dados digitados em um teclado virtual, colados da área de transferência ou preenchidos automaticamente por um gerenciador de senhas não podem ser interceptados por um keylogger de hardware.", + "slug": "authentication-watch-out-for-keyloggers" + }, + { + "point": "Considere um token de hardware", + "priority": "Advanced", + "details": "Uma chave de segurança U2F/FIDO2 é um dispositivo USB (ou NFC) que você insere ao fazer login em um serviço online para verificar sua identidade, em vez de inserir uma OTP do seu autenticador. [SoloKey](https://solokeys.com) e [NitroKey](https://www.nitrokey.com) são exemplos de tais chaves. Eles trazem consigo diversos benefícios de segurança, já que o navegador se comunica diretamente com o dispositivo e não pode ser enganado sobre qual host está solicitando autenticação, pois o certificado TLS é verificado. [Este post](https://security.stackexchange.com/a/71704) é uma boa explicação sobre a segurança do uso de tokens FIDO U2F. É claro que é importante guardar a chave física em algum lugar seguro ou mantê-la consigo. Algumas contas online permitem que vários métodos de 2FA sejam habilitados", + "slug": "authentication-consider-a-hardware-token" + }, + { + "point": "Considere o gerenciador de senhas offline", + "priority": "Advanced", + "details": "Para maior segurança, um gerenciador de senhas offline criptografado lhe dará controle total sobre seus dados. [KeePass](https://awesome-privacy.xyz/essentials/password-managers/keepass) é uma escolha popular, com muitos [plugins](https://keepass.info/plugins.html) e bifurcações de comunidade com compatibilidade e funcionalidade adicionais. Clientes populares incluem: [KeePassXC](https://keepassxc.org) (desktop), [KeePassDX](https://www.keepassdx.com) (Android) e [StrongBox](https://apps.apple.com/us/app/strongbox-password-safe/id897283731) (iOS). A desvantagem é que pode ser um pouco menos conveniente para alguns, e caberá a você fazer backup e armazená-lo com segurança.", + "slug": "authentication-consider-offline-password-manager" + }, + { + "point": "Considere nomes de usuário diferentes", + "priority": "Advanced", + "details": "Ter senhas diferentes para cada conta é um bom primeiro passo, mas se você também usar um nome de usuário, e-mail ou número de telefone exclusivo para fazer login, será significativamente mais difícil para quem tenta obter acesso não autorizado. O método mais fácil para vários e-mails é usar aliases gerados automaticamente para encaminhamento de e-mail anônimo. É aqui que [qualquer coisa]@seudominio.com chegará à sua caixa de entrada, permitindo que você use um e-mail diferente para cada conta (consulte [Provedores de alias de e-mail](https://github.com/Lissy93/awesome-privacy#anonymous-mail-forwarding)). Os nomes de usuário são mais fáceis, pois você pode usar seu gerenciador de senhas para gerá-los, armazená-los e preenchê-los automaticamente. Números de telefone virtuais podem ser gerados através do seu provedor VOIP", + "slug": "authentication-consider-different-usernames" + } + ] + }, + { + "title": "Navegação na Web", + "slug": "web-browsing", + "description": "Evitando rastreamento, censura e coleta de dados online", + "intro": "A maioria dos sites na Internet usa alguma forma de rastreamento, geralmente para obter informações sobre o comportamento e as preferências dos usuários. Esses dados podem ser incrivelmente detalhados e, portanto, extremamente valiosos para empresas, governos e ladrões de propriedade intelectual. Violações e vazamentos de dados são comuns, e desanonimizar a atividade dos usuários na web costuma ser uma tarefa trivial.\n\nExistem dois métodos principais de rastreamento; stateful (baseado em cookies) e stateless (baseado em impressão digital). Cookies são pequenos pedaços de informação armazenados no seu navegador com um ID exclusivo que é usado para identificá-lo. A impressão digital do navegador é uma forma altamente precisa de identificar e rastrear usuários onde quer que estejam online. As informações coletadas são bastante abrangentes e geralmente incluem detalhes do navegador, sistema operacional, resolução de tela, fontes suportadas, plug-ins, fuso horário, preferências de idioma e fonte e até configurações de hardware.\n\nEsta seção descreve as etapas que você pode seguir para estar mais protegido contra ameaças, minimizar o rastreamento on-line e melhorar a privacidade.", + "checklist": [ + { + "point": "Certifique-se de que o site seja legítimo", + "priority": "Basic", + "details": "Pode parecer óbvio, mas ao fazer login em qualquer conta online, verifique se o URL está correto. Armazenar sites comumente visitados em seus favoritos é uma boa maneira de garantir que o URL seja fácil de encontrar. Ao visitar novos sites, procure sinais comuns de que eles podem ser inseguros: avisos do navegador, redirecionamentos, spam no site e pop-ups. Você também pode verificar um site usando uma ferramenta, como: [Virus Total](https://awesome-privacy.xyz/security-tools/online-tools/virus-total), [IsLegitSite](https://www.islegitsite.com), [Google Safe Browsing Status](https://transparencyreport.google.com/safe-browsing/search) se não tiver certeza.", + "slug": "web-browsing-ensure-website-is-legitimate" + }, + { + "point": "Cuidado com o malware do navegador", + "priority": "Basic", + "details": "Seu sistema ou navegador pode ser comprometido por spyware, mineradores, sequestradores de navegador, redirecionamentos maliciosos, adware, etc. Geralmente, você pode ficar protegido apenas: ignorando pop-ups, tenha cuidado com o que você clica, não prossiga para um site se o seu navegador avisar que ele pode ser malicioso. Sinais comuns de malware de navegador incluem: mecanismo de pesquisa padrão ou página inicial foram modificados, barras de ferramentas, extensões ou ícones desconhecidos, significativamente mais anúncios, erros e carregamento de páginas muito mais lento do que o normal. Estes artigos da Heimdal explicam [sinais de malware de navegador](https://heimdalsecurity.com/blog/warning-signs-operating-system-infected-malware), [como os navegadores são infectados](https://heimdalsecurity.com/blog/practical-online-protection-where-malware-hides) e [como remover malware de navegador](https://heimdalsecurity.com/blog/malware-removal).", + "slug": "web-browsing-watch-out-for-browser-malware" + }, + { + "point": "Bloquear anúncios", + "priority": "Essential", + "details": "Usar um bloqueador de anúncios pode ajudar a melhorar sua privacidade, bloqueando os rastreadores implementados pelos anúncios. [uBlock Origin](https://awesome-privacy.xyz/networking/ad-blockers/ublock-origin) é um complemento de navegador muito eficiente e de código aberto, desenvolvido por Raymond Hill. Quando anúncios de terceiros são exibidos em uma página da web, eles têm a capacidade de rastreá-lo, coletando informações pessoais sobre você e seus hábitos, que podem então ser vendidas ou usadas para mostrar anúncios mais direcionados, e alguns anúncios são totalmente maliciosos ou falsos. O bloqueio de anúncios também acelera o carregamento das páginas, usa menos dados e proporciona uma experiência menos confusa.", + "slug": "web-browsing-block-ads" + }, + { + "point": "Use um navegador que respeite a privacidade", + "priority": "Essential", + "details": "[Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox) (com alguns ajustes) e [Brave](https://awesome-privacy.xyz/essentials/browsers/brave-browser) são navegadores seguros e que respeitam a privacidade. Ambos são rápidos, de código aberto, fáceis de usar e estão disponíveis em todos os principais sistemas operacionais. Seu navegador tem acesso a tudo o que você faz online, então, se possível, evite Google Chrome, Edge e Safari, pois (sem configuração correta) todos os três, colete dados de uso, ligue para casa e permita rastreamento invasivo. O Firefox requer algumas alterações para obter segurança ideal, por exemplo - configurações user.js de [arkenfox](https://github.com/arkenfox/user.js/wiki) ou [12byte](https://12bytes.org/firefox-configuration-guide-for-privacy-freaks-and-performance-buffs/). Veja mais: [Navegadores de privacidade](https://github.com/Lissy93/awesome-privacy#browsers).", + "slug": "web-browsing-use-a-privacy-respecting-browser" + }, + { + "point": "Use um mecanismo de pesquisa privado", + "priority": "Essential", + "details": "Usar um mecanismo de pesquisa que preserva a privacidade e não rastreia reduzirá o risco de que seus termos de pesquisa não sejam registrados ou usados ​​contra você. Considere [DuckDuckGo](https://awesome-privacy.xyz/essentials/search-engines/duckduckgo) ou [Qwant](https://awesome-privacy.xyz/essentials/search-engines/qwant). O Google implementa algumas políticas de rastreamento [incrivelmente invasivas](https://hackernoon.com/data-privacy-concerns-with-google-b946f2b7afea) e tem um histórico de exibição de [resultados de pesquisa tendenciosos](https://www.businessinsider.com/evidence-that-google-search-results-are-biased-2014-10). Portanto, o Google, juntamente com o Bing, o Baidu, o Yahoo e o Yandex, são incompatíveis com qualquer pessoa que pretenda proteger a sua privacidade. Recomenda-se atualizar sua [pesquisa padrão do navegador](https://duckduckgo.com/install) para um mecanismo de pesquisa que respeite a privacidade.", + "slug": "web-browsing-use-a-private-search-engine" + }, + { + "point": "Remova complementos desnecessários do navegador", + "priority": "Essential", + "details": "As extensões são capazes de ver, registrar ou modificar qualquer coisa que você faça no navegador, e alguns aplicativos de navegador de aparência inocente têm intenções maliciosas. Os sites podem ver quais extensões você instalou e podem usar isso para aprimorar sua impressão digital, para identificar/rastrear você com mais precisão. As lojas virtuais [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox) e Chrome permitem que você verifique quais permissões/direitos de acesso uma extensão requer antes de instalá-la. Verifique os comentários. Instale apenas extensões que você realmente precisa e remova aquelas que você não usa há algum tempo.", + "slug": "web-browsing-remove-unnecessary-browser-addons" + }, + { + "point": "Mantenha o navegador atualizado", + "priority": "Essential", + "details": "As vulnerabilidades do navegador são constantemente [descobertas](https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=browser) e corrigidas, por isso é importante mantê-lo atualizado para evitar uma exploração de dia zero. Você pode [ver qual versão do navegador você está usando aqui](https://www.whatismybrowser.com/) ou seguir [este guia](https://www.whatismybrowser.com/guides/how-to-update-your-browser/) para obter instruções sobre como atualizar. Alguns navegadores serão atualizados automaticamente para a versão estável mais recente.", + "slug": "web-browsing-keep-browser-up-to-date" + }, + { + "point": "Verifique se há HTTPS", + "priority": "Essential", + "details": "Se você inserir informações em um site não HTTPS, esses dados serão transportados sem criptografia e poderão, portanto, ser lidos por qualquer pessoa que os intercepte. Não insira nenhum dado em um site que não seja HTTPS, mas também não deixe que o cadeado verde lhe dê uma falsa sensação de segurança, só porque um site possui certificado SSL, não significa que seja legítimo ou confiável. [HTTPS-Everywhere](https://www.eff.org/https-everywhere) (desenvolvido por [EFF](https://www.eff.org/)) costumava ser uma extensão/complemento de navegador que habilitava HTTPS automaticamente em sites, mas a partir de 2022 está obsoleto. Em seu [artigo de relatório](https://www.eff.org/) a EFF explica que a maioria dos navegadores agora integra essas proteções. Além disso, fornece instruções para os navegadores [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox), Chrome, Edge e Safari sobre como ativar suas proteções seguras HTTPS.", + "slug": "web-browsing-check-for-https" + }, + { + "point": "Use DNS sobre HTTPS", + "priority": "Essential", + "details": "O DNS tradicional faz solicitações em texto simples para que todos possam ver. Ele permite a espionagem e manipulação de dados DNS por meio de ataques man-in-the-middle. Enquanto o DNS sobre HTTPS realiza a resolução de DNS por meio do protocolo HTTPS, o que significa que os dados entre você e seu resolvedor de DNS são criptografados. Uma opção popular é [1.1.1.1](https://awesome-privacy.xyz/security-tools/mobile-apps/1.1.1.1) do [CloudFlare](https://awesome-privacy.xyz/networking/dns-providers/cloudflare) ou compare provedores - é simples de ativar no navegador. Observe que o DoH tem seus próprios problemas, principalmente impedindo a filtragem da web.", + "slug": "web-browsing-use-dns-over-https" + }, + { + "point": "Contêineres multissessão", + "priority": "Essential", + "details": "A compartimentação é muito importante para manter separados os diferentes aspectos da sua navegação. Por exemplo, usar perfis diferentes para trabalho, navegação geral, mídias sociais, compras on-line, etc., reduzirá o número de associações que os corretores de dados podem vincular a você. Uma opção é fazer uso do [Firefox Containers](https://awesome-privacy.xyz/security-tools/browser-extensions/firefox-multi-account-containers) que foi desenvolvido exatamente para esse propósito. Alternativamente, você pode usar navegadores diferentes para tarefas diferentes ([Brave](https://awesome-privacy.xyz/essentials/browsers/brave-browser), [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox), [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor) etc).", + "slug": "web-browsing-multi-session-containers" + }, + { + "point": "Use o modo anônimo", + "priority": "Essential", + "details": "Ao usar a máquina de outra pessoa, certifique-se de estar em uma sessão privada/anônima. Isso impedirá que o histórico do navegador, os cookies e alguns dados sejam salvos, mas não é infalível – você ainda pode ser rastreado.", + "slug": "web-browsing-use-incognito" + }, + { + "point": "Entenda a impressão digital do seu navegador", + "priority": "Essential", + "details": "A impressão digital do navegador é um método de rastreamento incrivelmente preciso, onde um site identifica você com base nas informações do seu dispositivo. Você pode ver sua impressão digital em amiunique.org. O objetivo é ser o menos exclusivo possível.", + "slug": "web-browsing-understand-your-browser-fingerprint" + }, + { + "point": "Gerenciar cookies", + "priority": "Essential", + "details": "Limpar cookies regularmente é uma etapa que você pode realizar para ajudar a evitar que os sites rastreiem você. Os cookies também podem armazenar o seu token de sessão, que, se capturado, permitiria que alguém acessasse suas contas sem credenciais. Para atenuar isso, você deve limpar os cookies com frequência.", + "slug": "web-browsing-manage-cookies" + }, + { + "point": "Bloquear cookies de terceiros", + "priority": "Essential", + "details": "Cookies de terceiros colocados no seu dispositivo por um site diferente daquele que você está visitando. Isto representa um risco de privacidade, pois uma terceira entidade pode coletar dados da sua sessão atual. Este guia explica como você pode desabilitar cookies de terceiros e você pode verificar aqui para garantir que funcionou.", + "slug": "web-browsing-block-third-party-cookies" + }, + { + "point": "Bloquear rastreadores de terceiros", + "priority": "Essential", + "details": "O bloqueio de rastreadores ajudará a impedir que sites, anunciantes, análises e muito mais rastreiem você em segundo plano. [Privacy Badger](https://awesome-privacy.xyz/security-tools/browser-extensions/privacy-badger), [DuckDuckGo Privacy Essentials](https://awesome-privacy.xyz/security-tools/browser-extensions/privacy-essentials), [uBlock Origin](https://awesome-privacy.xyz/networking/ad-blockers/ublock-origin) e uMatrix (avançado) são bloqueadores de rastreadores de código aberto muito eficazes, disponíveis para todos os principais navegadores.", + "slug": "web-browsing-block-third-party-trackers" + }, + { + "point": "Cuidado com redirecionamentos", + "priority": "Optional", + "details": "Embora alguns redirecionamentos sejam inofensivos, outros, como os redirecionamentos não validados, são usados ​​em ataques de phishing, podendo fazer com que um link malicioso pareça legítimo. Se não tiver certeza sobre um URL de redirecionamento, você pode verificar para onde ele encaminha com uma ferramenta como o RedirectDetective.", + "slug": "web-browsing-beware-of-redirects" + }, + { + "point": "Não faça login no seu navegador", + "priority": "Optional", + "details": "Muitos navegadores permitem iniciar sessão para sincronizar histórico, favoritos e outros dados de navegação entre dispositivos. Entretanto, isso não apenas permite maior coleta de dados, como também amplia a superfície de ataque ao criar outra via para um agente malicioso obter informações pessoais.", + "slug": "web-browsing-do-not-sign-into-your-browser" + }, + { + "point": "Proibir serviços de previsão", + "priority": "Optional", + "details": "Alguns navegadores permitem serviços de previsão, onde você recebe resultados de pesquisa em tempo real ou preenchimento automático de URL. Se estiver ativado, os dados serão enviados ao Google (ou ao seu mecanismo de pesquisa padrão) a cada pressionamento de tecla, e não quando você pressiona Enter.", + "slug": "web-browsing-disallow-prediction-services" + }, + { + "point": "Evite G Translate para páginas da web", + "priority": "Optional", + "details": "Ao visitar uma página da web escrita em um idioma estrangeiro, você pode ser solicitado a instalar a extensão do Google Tradutor. Esteja ciente de que o Google coleta todos os dados (incluindo campos de entrada), juntamente com detalhes do usuário atual. Em vez disso, use um serviço de tradução que não esteja vinculado ao seu navegador.", + "slug": "web-browsing-avoid-g-translate-for-webpages" + }, + { + "point": "Desativar notificações da web", + "priority": "Optional", + "details": "As notificações push do navegador são um método comum para os criminosos encorajarem você a clicar no link deles, pois é fácil falsificar a fonte. Esteja ciente disso e para obter instruções sobre como desativar as notificações do navegador, consulte este artigo.", + "slug": "web-browsing-disable-web-notifications" + }, + { + "point": "Desativar downloads automáticos", + "priority": "Optional", + "details": "Os downloads drive-by são um método comum de colocar arquivos prejudiciais no dispositivo do usuário. Isso pode ser atenuado desativando o download automático de arquivos e tomando cuidado com sites que solicitam o download inesperado de arquivos.", + "slug": "web-browsing-disable-automatic-downloads" + }, + { + "point": "Proibir acesso a sensores", + "priority": "Optional", + "details": "Sites móveis podem acessar os sensores do seu dispositivo sem perguntar. Se você conceder essas permissões ao seu navegador uma vez, todos os sites poderão usar esses recursos, sem permissão ou notificação.", + "slug": "web-browsing-disallow-access-to-sensors" + }, + { + "point": "Não permitir localização", + "priority": "Optional", + "details": "Os Serviços de Localização permitem que os sites solicitem sua localização física para melhorar sua experiência. Isso deve ser desativado nas configurações. Observe que ainda existem outros métodos para determinar sua localização aproximada.", + "slug": "web-browsing-disallow-location" + }, + { + "point": "Proibir acesso à câmera/microfone", + "priority": "Optional", + "details": "Verifique as configurações do navegador para garantir que nenhum site tenha acesso à webcam ou ao microfone. Também pode ser benéfico usar proteção física, como capa de webcam e bloqueador de microfone.", + "slug": "web-browsing-disallow-camera-microphone-access" + }, + { + "point": "Desativar salvamento de senha do navegador", + "priority": "Optional", + "details": "Não permita que seu navegador armazene nomes de usuário e senhas. Eles podem ser facilmente visualizados ou acessados. Em vez disso, use um gerenciador de senhas.", + "slug": "web-browsing-disable-browser-password-saves" + }, + { + "point": "Desativar preenchimento automático do navegador", + "priority": "Optional", + "details": "Desative o preenchimento automático para quaisquer dados confidenciais ou pessoais. Este recurso pode ser prejudicial se o seu navegador estiver comprometido de alguma forma. Em vez disso, considere usar o recurso Notas do seu gerenciador de senhas.", + "slug": "web-browsing-disable-browser-autofill" + }, + { + "point": "Proteja-se do ataque Exfil", + "priority": "Optional", + "details": "O ataque CSS Exfiltrate é um método onde credenciais e outros detalhes confidenciais podem ser obtidos apenas com CSS puro. Você pode ficar protegido com o plugin [CSS Exfil Protection](https://awesome-privacy.xyz/security-tools/browser-extensions/css-exfil-protection).", + "slug": "web-browsing-protect-from-exfil-attack" + }, + { + "point": "Desativar ActiveX", + "priority": "Optional", + "details": "ActiveX é uma API de extensão de navegador incorporada ao Microsoft IE e habilitada por padrão. Não é mais comumente usado, mas como dá direitos de acesso íntimo aos plug-ins e pode ser perigoso, você deve desativá-lo.", + "slug": "web-browsing-deactivate-activex" + }, + { + "point": "Desativar WebRTC", + "priority": "Optional", + "details": "O WebRTC permite comunicação de áudio/vídeo de alta qualidade e compartilhamento de arquivos ponto a ponto diretamente do navegador. No entanto, pode representar um vazamento de privacidade. Para saber mais, confira este guia.", + "slug": "web-browsing-disable-webrtc" + }, + { + "point": "Falsificação de assinatura de tela HTML5", + "priority": "Optional", + "details": "O Canvas Fingerprinting permite que os sites identifiquem e rastreiem os usuários com muita precisão. Você pode usar a extensão Canvas-Fingerprint-Blocker para falsificar sua impressão digital ou usar [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor).", + "slug": "web-browsing-spoof-html5-canvas-sig" + }, + { + "point": "Agente de usuário falso", + "priority": "Optional", + "details": "O agente do usuário informa ao site qual dispositivo, navegador e versão você está usando. Trocar de agente de usuário periodicamente é um pequeno passo que você pode dar para se tornar menos exclusivo.", + "slug": "web-browsing-spoof-user-agent" + }, + { + "point": "Desconsiderar DNT", + "priority": "Optional", + "details": "A ativação do Do Not Track tem um impacto muito limitado, uma vez que muitos sites não respeitam ou não seguem isso. Como raramente é usado, também pode ser adicionado à sua assinatura, tornando-o mais exclusivo.", + "slug": "web-browsing-disregard-dnt" + }, + { + "point": "Impedir o rastreamento de HSTS", + "priority": "Optional", + "details": "O HSTS foi projetado para ajudar a proteger sites, mas surgiram preocupações com a privacidade, pois permitiu que os operadores de sites plantassem supercookies. Ele pode ser desativado visitando chrome://net-internals/#hsts em navegadores baseados em Chromium.", + "slug": "web-browsing-prevent-hsts-tracking" + }, + { + "point": "Impedir conexões automáticas do navegador", + "priority": "Optional", + "details": "Mesmo quando você não estiver usando seu navegador, ele poderá ligar para casa para relatar atividades de uso, análises e diagnósticos. Você pode desabilitar algumas dessas opções, o que pode ser feito nas configurações.", + "slug": "web-browsing-prevent-automatic-browser-connections" + }, + { + "point": "Ativar isolamento primário", + "priority": "Optional", + "details": "[Isolamento primário](https://awesome-privacy.xyz/security-tools/browser-extensions/first-party-isolation) significa que todas as fontes de identificador e estado do navegador têm como escopo o domínio da barra de URL, o que pode reduzir bastante o rastreamento.", + "slug": "web-browsing-enable-1st-party-isolation" + }, + { + "point": "Retirar parâmetros de rastreamento de URLs", + "priority": "Advanced", + "details": "Os sites geralmente acrescentam parâmetros GET adicionais aos URLs em que você clica, para identificar informações como origem/referenciador. Você pode limpar manualmente ou usar uma extensão como [ClearURLs](https://awesome-privacy.xyz/security-tools/browser-extensions/clearurls) para remover dados de rastreamento de URLs automaticamente.", + "slug": "web-browsing-strip-tracking-params-from-urls" + }, + { + "point": "Segurança no primeiro lançamento", + "priority": "Advanced", + "details": "Depois de instalar um navegador da web, na primeira vez que você iniciá-lo (antes de definir suas configurações de privacidade), a maioria dos navegadores ligará para casa. Portanto, depois de instalar um navegador, você deve primeiro desabilitar sua conexão com a Internet e, em seguida, configurar as opções de privacidade antes de reativar sua conectividade com a Internet.", + "slug": "web-browsing-first-launch-security" + }, + { + "point": "Use o navegador Tor", + "priority": "Advanced", + "details": "O Projeto [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor) fornece um navegador que criptografa e roteia seu tráfego através de vários nós, mantendo os usuários protegidos contra interceptação e rastreamento. As principais desvantagens são a velocidade e a experiência do usuário.", + "slug": "web-browsing-use-the-tor-browser" + }, + { + "point": "Desabilitar JavaScript", + "priority": "Advanced", + "details": "Muitos aplicativos da web modernos são baseados em JavaScript, portanto, desativá-los diminuirá bastante sua experiência de navegação. Mas se você realmente quiser dar tudo de si, isso realmente reduzirá sua superfície de ataque.", + "slug": "web-browsing-disable-javascript" + } + ] + }, + { + "title": "E-mail", + "slug": "email", + "description": "Protegendo a porta de entrada para suas contas online", + "intro": "Quase 50 anos desde que o primeiro e-mail foi enviado, ele ainda representa uma grande parte da nossa vida cotidiana e continuará a sê-lo no futuro próximo. Portanto, considerando quanta confiança depositamos neles, é surpreendente o quão fundamentalmente insegura esta infraestrutura é. Fraudes relacionadas a e-mails [estão em alta](https://www.csoonline.com/article/3247670/email/email-security-in-2018.html) e, sem tomar medidas básicas, você pode estar em risco.\n\nSe um hacker obtiver acesso aos seus e-mails, ele fornecerá um gateway para que suas outras contas sejam comprometidas (por meio de redefinições de senha), portanto, a segurança do e-mail é fundamental para sua segurança digital.\n\nAs grandes empresas que fornecem serviços de e-mail \"gratuitos\" não têm uma boa reputação em respeitar a privacidade dos usuários: o Gmail foi pego dando [acesso total a terceiros](https://www.wsj.com/articles/techs-dirty-secret-the-app-developers-sifting-through-your-gmail-1530544442) aos e-mails dos usuários e também [rastreando todas as suas compras](https://www.cnbc.com/2019/05/17/google-gmail-tracks-purchase-history-how-to-delete-it.html). O Yahoo também foi pego verificando e-mails em tempo real [para agências de vigilância dos EUA](http://news.trust.org/item/20161004170601-99f8c). Os anunciantes [receberam acesso](https://thenextweb.com/insider/2018/08/29/both-yahoo-and-aol-are-scanning-customer-emails-to-attract-advertisers) às mensagens dos usuários do Yahoo e da AOL para “identificar e segmentar clientes em potencial, captando sinais de compra contextuais e compras anteriores”.", + "checklist": [ + { + "point": "Ter mais de um endereço de e-mail", + "priority": "Essential", + "details": "Considere usar um endereço de e-mail diferente para comunicações críticas de segurança de e-mails triviais, como boletins informativos. Esta compartimentação poderia reduzir a quantidade de danos causados ​​por uma violação de dados e também facilitar a recuperação de uma conta comprometida.", + "slug": "email-have-more-than-one-email-address" + }, + { + "point": "Mantenha o endereço de e-mail privado", + "priority": "Essential", + "details": "Não compartilhe seu e-mail principal publicamente, pois os endereços de e-mail costumam ser o ponto de partida para a maioria dos ataques de phishing.", + "slug": "email-keep-email-address-private" + }, + { + "point": "Mantenha sua conta segura", + "priority": "Essential", + "details": "Use uma senha longa e exclusiva, habilite 2FA e tenha cuidado ao fazer login. Sua conta de e-mail fornece um ponto de entrada fácil para um invasor para todas as suas outras contas online.", + "slug": "email-keep-your-account-secure" + }, + { + "point": "Desative o carregamento automático de conteúdo remoto", + "priority": "Essential", + "details": "As mensagens de email podem conter conteúdo remoto, como imagens ou folhas de estilo, geralmente carregadas automaticamente do servidor. Você deve desabilitar esta opção, pois ela expõe seu endereço IP e informações do dispositivo e é frequentemente usada para rastreamento. Para obter mais informações, consulte [este artigo](https://www.theverge.com/2019/7/3/20680903/email-pixel-trackers-how-to-stop-images-automatic-download).", + "slug": "email-disable-automatic-loading-of-remote-content" + }, + { + "point": "Usar texto simples", + "priority": "Optional", + "details": "Existem dois tipos principais de e-mail na internet: texto simples e HTML. O primeiro é fortemente preferido para privacidade e segurança, pois as mensagens HTML geralmente incluem identificadores em links e imagens embutidas, que podem coletar dados pessoais e de uso. Existem também vários riscos de execução remota de código direcionado ao analisador HTML do seu cliente de e-mail, que não pode ser explorado se você estiver usando texto simples. Para obter mais informações, bem como instruções de configuração para seu provedor de e-mail, consulte [UsePlaintext.email](https://useplaintext.email/).", + "slug": "email-use-plaintext" + }, + { + "point": "Não conecte aplicativos de terceiros à sua conta de e-mail", + "priority": "Optional", + "details": "Se você conceder a um aplicativo ou plug-in de terceiros acesso total à sua caixa de entrada, eles terão acesso total e irrestrito a todos os seus e-mails e seu conteúdo, o que representa riscos significativos de segurança e privacidade.", + "slug": "email-dont-connect-third-party-apps-to-your-email-account" + }, + { + "point": "Não compartilhe dados confidenciais por e-mail", + "priority": "Optional", + "details": "Os e-mails são facilmente interceptados. Além disso, você não pode ter certeza de quão seguro é o ambiente do destinatário. Portanto, os e-mails não podem ser considerados seguros para troca de informações confidenciais, a menos que sejam criptografados.", + "slug": "email-don-t-share-sensitive-data-via-email" + }, + { + "point": "Considere mudar para um provedor de correio seguro", + "priority": "Optional", + "details": "Provedores de e-mail seguros e confiáveis, como [Forward Email](https://awesome-privacy.xyz/communication/encrypted-email/forward-email), [ProtonMail](https://awesome-privacy.xyz/communication/mail-forwarding/protonmail) e [Tutanota](https://awesome-privacy.xyz/communication/encrypted-email/tuta) permitem criptografia ponta a ponta, privacidade total, bem como recursos mais focados na segurança. Ao contrário dos provedores de e-mail típicos, sua caixa de correio não pode ser lida por ninguém além de você, pois todas as mensagens são criptografadas.", + "slug": "email-consider-switching-to-a-secure-mail-provider" + }, + { + "point": "Subendereçamento", + "priority": "Optional", + "details": "Uma alternativa ao alias é o subendereçamento, onde qualquer coisa após o símbolo `+` é omitido durante a entrega do correio. Isso permite que você acompanhe quem compartilhou/vazou seu endereço de e-mail, mas, diferentemente do alias, não protegerá contra a revelação do seu endereço real.", + "slug": "email-subaddressing" + }, + { + "point": "Use um domínio personalizado", + "priority": "Advanced", + "details": "Usar um domínio personalizado significa que você não depende do endereço atribuído pelo seu provedor de e-mail. Assim, você pode facilmente trocar de provedor no futuro e não precisa se preocupar com a descontinuação de um serviço.", + "slug": "email-use-a-custom-domain" + }, + { + "point": "Sincronize com um cliente para backup", + "priority": "Advanced", + "details": "Para evitar a perda de acesso temporário ou permanente aos seus e-mails durante um evento não planejado (como uma interrupção ou bloqueio de conta), o Thunderbird pode sincronizar/fazer backup de mensagens de várias contas via IMAP e armazená-las localmente no seu dispositivo principal.", + "slug": "email-sync-with-a-client-for-backup" + }, + { + "point": "Tenha cuidado com as assinaturas de correio", + "priority": "Advanced", + "details": "Você não sabe o quão seguro é o ambiente de e-mail que o destinatário da sua mensagem pode ter. Existem várias extensões que rastreiam mensagens automaticamente e criam um banco de dados detalhado de informações de contato com base em assinaturas de e-mail.", + "slug": "email-be-careful-with-mail-signatures" + }, + { + "point": "Tenha cuidado com as respostas automáticas", + "priority": "Advanced", + "details": "As respostas automáticas fora do escritório são muito úteis para informar as pessoas de que haverá um atraso na resposta, mas muitas vezes as pessoas revelam demasiada informação – que pode ser usada em engenharia social e ataques direcionados.", + "slug": "email-be-careful-with-auto-replies" + }, + { + "point": "Escolha o protocolo de correio correto", + "priority": "Advanced", + "details": "Não utilize protocolos desatualizados (abaixo de IMAPv4 ou POPv3), ambos possuem vulnerabilidades conhecidas e segurança desatualizada.", + "slug": "email-choose-the-right-mail-protocol" + }, + { + "point": "Auto-hospedagem", + "priority": "Advanced", + "details": "A auto-hospedagem do seu próprio servidor de e-mail não é recomendada para usuários não avançados, pois protegê-lo corretamente é fundamental, mas requer um forte conhecimento de rede.", + "slug": "email-self-hosting" + }, + { + "point": "Sempre use portas TLS", + "priority": "Advanced", + "details": "Existem opções SSL para POP3, IMAP e SMTP como portas TCP/IP padrão. Eles são fáceis de usar e têm amplo suporte, portanto devem sempre ser usados ​​em vez de portas de e-mail de texto simples.", + "slug": "email-always-use-tls-ports" + }, + { + "point": "Disponibilidade de DNS", + "priority": "Advanced", + "details": "Para servidores de e-mail auto-hospedados, para evitar que problemas de DNS afetem a disponibilidade, use pelo menos dois registros MX, com registros MX secundários e terciários para redundância quando o registro MX primário falhar.", + "slug": "email-dns-availability" + }, + { + "point": "Evite ataques DDoS e de força bruta", + "priority": "Advanced", + "details": "Para servidores de e-mail auto-hospedados (especificamente SMTP), limite o número total de conexões simultâneas e a taxa máxima de conexão para reduzir o impacto de tentativas de ataques de bot.", + "slug": "email-prevent-ddos-and-brute-force-attacks" + }, + { + "point": "Usar chave inteligente", + "priority": "Advanced", + "details": "O OpenPGP não oferece suporte ao sigilo de encaminhamento, o que significa que se a sua chave privada ou a do destinatário for roubada, todas as mensagens anteriores criptografadas com ela serão expostas. Portanto, você deve tomar muito cuidado para manter suas chaves privadas seguras. Um método para fazer isso é usar uma chave inteligente USB para assinar ou descriptografar mensagens, permitindo que você faça isso sem que sua chave privada saia do dispositivo USB.", + "slug": "email-use-smart-key" + }, + { + "point": "Usar alias/encaminhamento anônimo", + "priority": "Advanced", + "details": "O alias de e-mail permite que mensagens sejam enviadas para [qualquer coisa]@meu-domínio.com e ainda cheguem à sua caixa de entrada principal. Permitindo efetivamente que você use um endereço de e-mail diferente e exclusivo para cada serviço no qual você se inscrever. Isso significa que se você começar a receber spam, poderá bloquear esse alias e determinar qual empresa vazou seu endereço de e-mail.", + "slug": "email-use-aliasing--anonymous-forwarding" + }, + { + "point": "Manter lista negra de IP", + "priority": "Advanced", + "details": "Para servidores de e-mail auto-hospedados, você pode melhorar os filtros de spam e reforçar a segurança, mantendo uma lista negra de IP local atualizada e listas de bloqueio de URI de spam em tempo real para filtrar hiperlinks maliciosos.", + "slug": "email-maintain-ip-blacklist" + } + ] + }, + { + "title": "Mensagens", + "slug": "messaging", + "description": "Mantendo suas comunicações privadas e seguras", + "intro": "", + "checklist": [ + { + "point": "Use apenas mensageiros totalmente criptografados de ponta a ponta", + "priority": "Essential", + "details": "A criptografia ponta a ponta é um sistema de comunicação em que as mensagens são criptografadas no seu dispositivo e não descriptografadas até chegarem ao destinatário pretendido. Isto garante que qualquer interveniente que intercepte o tráfego não possa ler o conteúdo da mensagem, nem qualquer pessoa com acesso aos servidores centrais onde os dados são armazenados.", + "slug": "messaging-only-use-fully-end-to-end-encrypted-messengers" + }, + { + "point": "Use apenas plataformas de mensagens de código aberto", + "priority": "Essential", + "details": "Se o código for de código aberto, ele poderá ser examinado e auditado de forma independente por qualquer pessoa qualificada para fazê-lo, para garantir que não haja backdoors, vulnerabilidades ou outros problemas de segurança.", + "slug": "messaging-use-only-open-source-messaging-platforms" + }, + { + "point": "Use uma plataforma de mensagens “confiável”", + "priority": "Essential", + "details": "Ao selecionar um aplicativo de mensagens criptografadas, certifique-se de que ele seja totalmente de código aberto, estável, mantido ativamente e, de preferência, apoiado por desenvolvedores confiáveis.", + "slug": "messaging-use-a--trustworthy--messaging-platform" + }, + { + "point": "Verifique as configurações de segurança", + "priority": "Essential", + "details": "Ative as configurações de segurança, incluindo verificação de contatos, notificações de segurança e criptografia. Desative recursos opcionais não relacionados à segurança, como recibo de leitura, último online e notificação de digitação.", + "slug": "messaging-check-security-settings" + }, + { + "point": "Garanta que o ambiente dos seus destinatários seja seguro", + "priority": "Essential", + "details": "Sua conversa só pode ser tão segura quanto o elo mais fraco. Freqüentemente, a maneira mais fácil de se infiltrar em um canal de comunicação é atingir o indivíduo ou nó com menos proteção.", + "slug": "messaging-ensure-your-recipients-environment-is-secure" + }, + { + "point": "Desabilitar serviços em nuvem", + "priority": "Essential", + "details": "Alguns aplicativos de mensagens móveis oferecem um complemento para web ou desktop. Isto não só aumenta a superfície de ataque, mas também tem sido associado a vários problemas críticos de segurança e, portanto, deve ser evitado, se possível.", + "slug": "messaging-disable-cloud-services" + }, + { + "point": "Bate-papos em grupo seguros", + "priority": "Essential", + "details": "O risco de comprometimento aumenta exponencialmente quanto mais participantes houver em um grupo, à medida que a superfície de ataque aumenta. Verifique periodicamente se todos os participantes são legítimos.", + "slug": "messaging-secure-group-chats" + }, + { + "point": "Crie um ambiente seguro para comunicação", + "priority": "Essential", + "details": "Existem vários estágios em que suas comunicações digitais podem ser monitoradas ou interceptadas. Isso inclui: o seu dispositivo ou o dos seus participantes, seu ISP, gateway nacional ou registro governamental, o provedor de mensagens, os servidores.", + "slug": "messaging-create-a-safe-environment-for-communication" + }, + { + "point": "Combine um plano de comunicação", + "priority": "Optional", + "details": "Em determinadas situações, pode valer a pena fazer um plano de comunicação. Isso deve incluir métodos primários e de backup para se comunicarem com segurança.", + "slug": "messaging-agree-on-a-communication-plan" + }, + { + "point": "Retirar metadados da mídia", + "priority": "Optional", + "details": "Metadados são “Dados sobre Dados” ou informações adicionais anexadas a um arquivo ou transação. Ao enviar uma foto, gravação de áudio, vídeo ou documento, você pode estar revelando mais do que pretendia.", + "slug": "messaging-strip-meta-data-from-media" + }, + { + "point": "URLs padrão", + "priority": "Optional", + "details": "O envio de links por meio de vários serviços pode expor involuntariamente suas informações pessoais. Isso ocorre porque, quando uma miniatura ou visualização é gerada, isso acontece no lado do cliente.", + "slug": "messaging-defang-urls" + }, + { + "point": "Verifique seu destinatário", + "priority": "Optional", + "details": "Certifique-se sempre de estar falando com o destinatário pretendido e de que ele não foi comprometido. Um método para fazer isso é usar um aplicativo que suporte verificação de contato.", + "slug": "messaging-verify-your-recipient" + }, + { + "point": "Habilitar mensagens efêmeras", + "priority": "Optional", + "details": "Mensagens autodestrutivas são um recurso que faz com que suas mensagens sejam excluídas automaticamente após um determinado período de tempo. Isto significa que se o seu dispositivo for perdido, roubado ou apreendido, um adversário só terá acesso às comunicações mais recentes.", + "slug": "messaging-enable-ephemeral-messages" + }, + { + "point": "Evite SMS", + "priority": "Optional", + "details": "SMS pode ser conveniente, mas não é seguro. É suscetível a ameaças como interceptação, troca de sim, manipulação e malware.", + "slug": "messaging-avoid-sms" + }, + { + "point": "Cuidado com os rastreadores", + "priority": "Optional", + "details": "Tenha cuidado com aplicativos de mensagens com rastreadores, pois as estatísticas detalhadas de uso que eles coletam costumam ser muito invasivas e, às vezes, podem revelar sua identidade, bem como informações pessoais que, de outra forma, você não pretenderia compartilhar.", + "slug": "messaging-watch-out-for-trackers" + }, + { + "point": "Considere a jurisdição", + "priority": "Advanced", + "details": "As jurisdições onde a organização está sediada e os dados estão hospedados também devem ser levadas em consideração.", + "slug": "messaging-consider-jurisdiction" + }, + { + "point": "Use uma plataforma anônima", + "priority": "Advanced", + "details": "Se você acredita que pode ser um alvo, você deve optar por uma plataforma de mensagens anônimas que não exija um número de telefone ou qualquer outra informação de identificação pessoal para se inscrever ou usar.", + "slug": "messaging-use-an-anonymous-platform" + }, + { + "point": "Certifique-se de que o sigilo de encaminhamento seja compatível", + "priority": "Advanced", + "details": "Opte por uma plataforma que implemente sigilo de encaminhamento. É aqui que seu aplicativo gera uma nova chave de criptografia para cada mensagem.", + "slug": "messaging-ensure-forward-secrecy-is-supported" + }, + { + "point": "Considere uma plataforma descentralizada", + "priority": "Advanced", + "details": "Se todos os dados fluem através de um provedor central, você deve confiar seus dados e metadados a ele. Você não pode verificar se o sistema em execução é autêntico sem backdoors.", + "slug": "messaging-consider-a-decentralized-platform" + } + ] + }, + { + "title": "Mídias Sociais", + "slug": "social-media", + "description": "Minimizando os riscos associados ao uso de comunidades online", + "intro": "As comunidades online existem desde a invenção da internet e oferecem às pessoas de todo o mundo a oportunidade de se conectar, comunicar e compartilhar. Embora essas redes sejam uma excelente forma de promover a interação social e aproximar pessoas, elas também têm um lado sombrio: há sérias [preocupações de privacidade relacionadas a serviços de redes sociais](https://en.wikipedia.org/wiki/Privacy_concerns_with_social_networking_services). Além disso, esses sites pertencem a empresas privadas que lucram com a coleta de dados sobre indivíduos e sua venda, muitas vezes a anunciantes terceiros.\nProteja sua conta e restrinja as configurações de privacidade; contudo, saiba que, mesmo depois disso, todos os dados enviados, intencionalmente ou não, são efetivamente públicos. Quando possível, evite usar redes sociais convencionais.", + "checklist": [ + { + "point": "Proteja sua conta", + "priority": "Essential", + "details": "Perfis de mídia social são roubados ou assumidos com muita frequência. Para proteger sua conta: use uma senha única e forte e habilite a autenticação de dois fatores.", + "slug": "social-media-secure-your-account" + }, + { + "point": "Verifique as configurações de privacidade", + "priority": "Essential", + "details": "A maioria das redes sociais permite que você controle suas configurações de privacidade. Certifique-se de estar confortável com quais dados você está expondo atualmente e para quem.", + "slug": "social-media-check-privacy-settings" + }, + { + "point": "Pense em todas as interações como públicas", + "priority": "Essential", + "details": "Ainda existem vários métodos de visualização do conteúdo “privado” de um usuário em muitas redes sociais. Portanto, antes de enviar, postar ou comentar qualquer coisa, pense “Eu me importaria se isso fosse totalmente público?”", + "slug": "social-media-think-of-all-interactions-as-public" + }, + { + "point": "Pense em todas as interações como permanentes", + "priority": "Essential", + "details": "Praticamente todas as postagens, comentários, fotos, etc., são continuamente apoiados por uma infinidade de serviços de terceiros, que arquivam esses dados e os tornam indexáveis ​​e disponíveis publicamente quase para sempre.", + "slug": "social-media-think-of-all-interactions-as-permanent" + }, + { + "point": "Não revele muito", + "priority": "Essential", + "details": "As informações de perfil criam uma mina de ouro de informações para hackers, o tipo de dados que os ajuda a personalizar golpes de phishing. Evite compartilhar muitos detalhes (DoB, cidade natal, escola, etc.).", + "slug": "social-media-don-t-reveal-too-much" + }, + { + "point": "Tenha cuidado com o que você envia", + "priority": "Essential", + "details": "Atualizações de status, comentários, check-ins e mídia podem revelar involuntariamente muito mais do que você pretendia. Isto é especialmente relevante para fotos e vídeos, que podem mostrar coisas em segundo plano.", + "slug": "social-media-be-careful-what-you-upload" + }, + { + "point": "Não compartilhe e-mail ou número de telefone", + "priority": "Essential", + "details": "Publicar seu endereço de e-mail real ou número de celular fornece a hackers, trolls e spammers mais munição para usar contra você e também pode permitir a conexão de aliases, perfis ou pontos de dados separados.", + "slug": "social-media-don-t-share-email-or-phone-number" + }, + { + "point": "Não conceda permissões desnecessárias", + "priority": "Essential", + "details": "Por padrão, muitos dos aplicativos populares de redes sociais solicitarão permissão para acessar seus contatos, registro de chamadas, localização, histórico de mensagens, etc.", + "slug": "social-media-don-t-grant-unnecessary-permissions" + }, + { + "point": "Tenha cuidado com integrações de terceiros", + "priority": "Essential", + "details": "Evite inscrever-se em contas usando login de rede social, revogue o acesso a aplicativos sociais que você não usa mais.", + "slug": "social-media-be-careful-of-3rd-party-integrations" + }, + { + "point": "Evite publicar dados geográficos enquanto ainda estiver no local", + "priority": "Essential", + "details": "Se você planeja compartilhar qualquer conteúdo que revele um local, espere até sair desse local. Isto é particularmente importante quando você estiver viajando em um restaurante, campus, hotel/resort, prédio público ou aeroporto.", + "slug": "social-media-avoid-publishing-geo-data-while-still-onsite" + }, + { + "point": "Remova os metadados antes de enviar mídia", + "priority": "Optional", + "details": "A maioria dos smartphones e algumas câmeras anexam automaticamente um conjunto abrangente de dados adicionais (chamados dados EXIF) a cada fotografia. Remova esses dados antes de fazer upload.", + "slug": "social-media-remove-metadata-before-uploading-media" + }, + { + "point": "Implementar camuflagem de imagens", + "priority": "Advanced", + "details": "Ferramentas como o Fawkes podem ser usadas para alterar sutilmente a estrutura dos rostos nas fotos de uma forma que seja imperceptível aos humanos, mas impedirá que os sistemas de reconhecimento facial sejam capazes de reconhecer um determinado rosto.", + "slug": "social-media-implement-image-cloaking" + }, + { + "point": "Considere falsificar GPS nas proximidades de casa", + "priority": "Advanced", + "details": "Mesmo que você nunca use as redes sociais, sempre haverá outras pessoas que não serão tão cuidadosas e poderão revelar sua localização.", + "slug": "social-media-consider-spoofing-gps-in-home-vicinity" + }, + { + "point": "Considere informações falsas", + "priority": "Advanced", + "details": "Se você quiser apenas ler e não pretende postar muito, considere usar um nome alternativo e detalhes de contato falsos.", + "slug": "social-media-consider-false-information" + }, + { + "point": "Não tenha nenhuma conta de mídia social", + "priority": "Advanced", + "details": "A mídia social é fundamentalmente não privada, portanto, para máxima segurança e privacidade online, evite usar qualquer rede social convencional.", + "slug": "social-media-dont-have-any-social-media-accounts" + } + ] + }, + { + "title": "Redes", + "slug": "networks", + "description": "Protegendo seu tráfego de rede", + "intro": "Esta seção aborda como você conecta seus dispositivos à Internet com segurança, incluindo configurar seu roteador e configurar uma VPN.", + "checklist": [ + { + "point": "Use uma VPN", + "priority": "Essential", + "details": "Use uma VPN paga e confiável. Isso pode ajudar a evitar que os sites que você visita registrem seu IP real, reduzir a quantidade de dados que seu ISP pode coletar e aumentar a proteção em WiFi público.", + "slug": "networks-use-a-vpn" + }, + { + "point": "Altere a senha do seu roteador", + "priority": "Essential", + "details": "Depois de adquirir um novo roteador, altere a senha. As senhas padrão do roteador estão disponíveis publicamente, o que significa que qualquer pessoa nas proximidades poderá se conectar.", + "slug": "networks-change-your-router-password" + }, + { + "point": "Use WPA2 e uma senha forte", + "priority": "Essential", + "details": "Existem diferentes protocolos de autenticação para conexão WiFi. Atualmente, as opções mais seguras são WPA2 e WPA3 (em roteadores mais recentes).", + "slug": "networks-use-wpa2-and-a-strong-password" + }, + { + "point": "Mantenha o firmware do roteador atualizado", + "priority": "Essential", + "details": "Os fabricantes lançam atualizações de firmware que corrigem vulnerabilidades de segurança, implementam novos padrões e, às vezes, adicionam recursos ou melhoram o desempenho do seu roteador.", + "slug": "networks-keep-router-firmware-up-to-date" + }, + { + "point": "Implemente uma VPN em toda a rede", + "priority": "Optional", + "details": "Se você configurar sua VPN em seu roteador, firewall ou servidor doméstico, o tráfego de todos os dispositivos será criptografado e roteado através dele, sem a necessidade de aplicativos VPN individuais.", + "slug": "networks-implement-a-network-wide-vpn" + }, + { + "point": "Proteja-se contra vazamentos de DNS", + "priority": "Optional", + "details": "Ao usar uma VPN, é extremamente importante usar exclusivamente o servidor DNS do seu provedor VPN ou serviço seguro.", + "slug": "networks-protect-against-dns-leaks" + }, + { + "point": "Use um protocolo VPN seguro", + "priority": "Optional", + "details": "OpenVPN e WireGuard são protocolos de tunelamento de código aberto, leves e seguros. Evite usar PPTP ou SSTP.", + "slug": "networks-use-a-secure-vpn-protocol" + }, + { + "point": "DNS seguro", + "priority": "Optional", + "details": "Use DNS sobre HTTPS, que realiza a resolução de DNS por meio do protocolo HTTPS, criptografando dados entre você e seu resolvedor de DNS.", + "slug": "networks-secure-dns" + }, + { + "point": "Evite o roteador gratuito do seu ISP", + "priority": "Optional", + "details": "Normalmente, eles são fabricados a granel e baratos na China, com firmware de propriedade insegura que não recebe atualizações de segurança regulares.", + "slug": "networks-avoid-the-free-router-from-your-isp" + }, + { + "point": "Lista de permissões de endereços MAC", + "priority": "Optional", + "details": "Você pode colocar endereços MAC na lista de permissões nas configurações do roteador, impedindo que dispositivos desconhecidos se conectem imediatamente à sua rede, mesmo que conheçam suas credenciais.", + "slug": "networks-whitelist-mac-addresses" + }, + { + "point": "Altere o endereço IP local do roteador", + "priority": "Optional", + "details": "É possível que um script malicioso em seu navegador explore uma vulnerabilidade de script entre sites, acessando roteadores vulneráveis ​​conhecidos em seus endereços IP locais e adulterando-os.", + "slug": "networks-change-the-routers-local-ip-address" + }, + { + "point": "Não revele informações pessoais no SSID", + "priority": "Optional", + "details": "Você deve atualizar o nome da sua rede, escolhendo um SSID que não o identifique, inclua seu número/endereço fixo e não especifique a marca/modelo do dispositivo.", + "slug": "networks-don-t-reveal-personal-info-in-ssid" + }, + { + "point": "Listagens de roteadores para desativação", + "priority": "Optional", + "details": "Os SSIDs WiFi são verificados, registrados e publicados em vários sites, o que é uma séria preocupação de privacidade para alguns.", + "slug": "networks-opt-out-router-listings" + }, + { + "point": "Oculte seu SSID", + "priority": "Optional", + "details": "O Service Set Identifier do seu roteador é simplesmente o nome da rede. Se não estiver visível, poderá receber menos abusos.", + "slug": "networks-hide-your-ssid" + }, + { + "point": "Desativar WPS", + "priority": "Optional", + "details": "O Wi-Fi Protected Setup oferece um método mais fácil de conexão, sem inserir uma senha WiFi longa, mas o WPS apresenta uma série de problemas de segurança importantes.", + "slug": "networks-disable-wps" + }, + { + "point": "Desativar UPnP", + "priority": "Optional", + "details": "O Plug and Play universal permite que os aplicativos encaminhem automaticamente uma porta no seu roteador, mas tem um longo histórico de sérios problemas de segurança.", + "slug": "networks-disable-upnp" + }, + { + "point": "Use uma rede de convidados para convidados", + "priority": "Optional", + "details": "Não conceda acesso à sua rede WiFi primária aos visitantes, pois isso permite que eles interajam com outros dispositivos na rede.", + "slug": "networks-use-a-guest-network-for-guests" + }, + { + "point": "Altere o IP padrão do seu roteador", + "priority": "Optional", + "details": "Modificar o endereço IP padrão do painel de administração do roteador tornará mais difícil a ocorrência de scripts maliciosos direcionados a endereços IP locais.", + "slug": "networks-change-your-router-s-default-ip" + }, + { + "point": "Elimine processos e serviços não utilizados em seu roteador", + "priority": "Optional", + "details": "Serviços como Telnet e SSH, que fornecem acesso de linha de comando a dispositivos, nunca devem ser expostos à Internet e também devem ser desativados na rede local, a menos que sejam realmente necessários.", + "slug": "networks-kill-unused-processes-and-services-on-your-router" + }, + { + "point": "Não tenho portas abertas", + "priority": "Optional", + "details": "Feche todas as portas abertas em seu roteador que não sejam necessárias. As portas abertas fornecem uma entrada fácil para hackers.", + "slug": "networks-don-t-have-open-ports" + }, + { + "point": "Desabilitar protocolos de acesso remoto não utilizados", + "priority": "Optional", + "details": "Quando protocolos como PING, Telnet, SSH, UPnP e HNAP etc estão habilitados, eles permitem que seu roteador seja investigado de qualquer lugar do mundo.", + "slug": "networks-disable-unused-remote-access-protocols" + }, + { + "point": "Desative o gerenciamento baseado em nuvem", + "priority": "Optional", + "details": "Você deve tratar o painel de administração do seu roteador com o máximo cuidado, pois danos consideráveis ​​podem ser causados ​​se um invasor conseguir obter acesso.", + "slug": "networks-disable-cloud-based-management" + }, + { + "point": "Gerencie o intervalo corretamente", + "priority": "Optional", + "details": "É comum querer aumentar o alcance do seu roteador ao máximo, mas se você mora em um apartamento menor, sua superfície de ataque aumenta quando sua rede WiFi pode ser captada do outro lado da rua.", + "slug": "networks-manage-range-correctly" + }, + { + "point": "Roteie todo o tráfego através do Tor", + "priority": "Advanced", + "details": "As VPNs têm seus pontos fracos. Para aumentar a segurança, roteie todo o tráfego da Internet através da rede [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor).", + "slug": "networks-route-all-traffic-through-tor" + }, + { + "point": "Desative o WiFi em todos os dispositivos", + "priority": "Advanced", + "details": "Conectar-se até mesmo a uma rede WiFi segura aumenta sua superfície de ataque. Desative o WiFi doméstico e conecte cada dispositivo via Ethernet.", + "slug": "networks-disable-wifi-on-all-devices" + } + ] + }, + { + "title": "Dispositivos móveis", + "slug": "mobile-devices", + "description": "Reduza o rastreamento invasivo para células, smartphones e tablets", + "intro": "Os smartphones revolucionaram muitos aspectos da vida e trouxeram o mundo ao nosso alcance. Para muitos de nós, os smartphones são o principal meio de comunicação, entretenimento e acesso ao conhecimento. Mas embora eles tenham levado a conveniência a um nível totalmente novo, há algumas coisas horríveis acontecendo por trás da tela.\nO rastreamento geográfico é usado para rastrear todos os nossos movimentos e temos pouco controle sobre quem possui esses dados – seu telefone é capaz até de [rastrear sua localização sem GPS](https://gizmodo.com/how-to-track-a-cellphone-without-gps-or-consent-1821125371). Ao longo dos anos, surgiram vários relatórios, descrevendo maneiras pelas quais o [microfone pode escutar](https://www.independent.co.uk/life-style/gadgets-and-tech/news/smartphone-apps-listening-privacy-alphonso-shazam-advertising-pool-3d-honey-quest-a8139451.html) e a [câmera pode observar você](https://www.businessinsider.com/hackers-governments-smartphone-iphone-camera-wikileaks-cybersecurity-hack-privacy-webcam-2017-6) do seu telefone - tudo sem o seu conhecimento ou consentimento. E há também os aplicativos maliciosos, a falta de patches de segurança e backdoors potenciais/prováveis.\nUsar um smartphone gera muitos dados sobre você – desde informações que você compartilha intencionalmente até dados gerados silenciosamente a partir de suas ações. Pode ser assustador ver o que o Google, a Microsoft, a Apple e o Facebook sabem sobre nós – às vezes eles sabem mais do que a nossa família mais próxima. É difícil compreender o que os seus dados revelarão, especialmente em conjunto com outros dados.\nEsses dados são usados ​​para [muito mais do que apenas publicidade](https://internethealthreport.org/2018/the-good-the-bad-and-the-ugly-sides-of-data-tracking/) - mais frequentemente, são usados ​​para avaliar pessoas em finanças, seguros e emprego. Anúncios direcionados podem até ser usados para vigilância refinada (consulte [ADINT](https://adint.cs.washington.edu))\nMuitos de nós estamos preocupados sobre como [os governos coletam e usam nossos dados de smartphones](https://www.statista.com/statistics/373916/global-opinion-online-monitoring-government/) e, com razão, as agências federais frequentemente [solicitam nossos dados ao Google](https://www.statista.com/statistics/273501/global-data-requests-from-google-by-federal-agencies-and-governments/), [Facebook](https://www.statista.com/statistics/287845/global-data-requests-from-facebook-by-federal-agencies-and-governments/), Apple, Microsoft, Amazon e outras empresas de tecnologia. Às vezes, as solicitações são feitas em massa, retornando informações detalhadas sobre todos dentro de uma determinada cerca geográfica, [muitas vezes para pessoas inocentes.pessoas](https://www.nytimes.com/interactive/2019/04/13/us/google-location-tracking-police.html). E isto não inclui todo o tráfego da Internet ao qual as agências de inteligência de todo o mundo têm acesso irrestrito.", + "checklist": [ + { + "point": "Criptografe seu dispositivo", + "priority": "Essential", + "details": "Para manter seus dados protegidos contra acesso físico, use criptografia de arquivos. Isso significa que se o seu dispositivo for perdido ou roubado, ninguém terá acesso aos seus dados.", + "slug": "mobile-devices-encrypt-your-device" + }, + { + "point": "Desative os recursos de conectividade que não estão sendo usados", + "priority": "Essential", + "details": "Quando você não estiver usando WiFi, Bluetooth, NFC etc., desative esses recursos. Existem várias ameaças comuns que utilizam esses recursos.", + "slug": "mobile-devices-turn-off-connectivity-features-that-arent-being-used" + }, + { + "point": "Mantenha a contagem de aplicativos no mínimo", + "priority": "Essential", + "details": "Desinstale aplicativos que você não precisa ou que não usa regularmente. Como os aplicativos geralmente são executados em segundo plano, deixando seu dispositivo lento, mas também coletando dados.", + "slug": "mobile-devices-keep-app-count-to-a-minimum" + }, + { + "point": "Permissões de aplicativos", + "priority": "Essential", + "details": "Não conceda permissões a aplicativos que eles não precisam. Para Android, [Bouncer](https://awesome-privacy.xyz/security-tools/mobile-apps/bouncer) é um aplicativo que permite conceder permissões temporárias/únicas.", + "slug": "mobile-devices-app-permissions" + }, + { + "point": "Instale apenas aplicativos de fonte oficial", + "priority": "Essential", + "details": "Os aplicativos na Apple App Store e na Google Play Store são verificados e assinados criptograficamente, tornando-os menos propensos a serem maliciosos.", + "slug": "mobile-devices-only-install-apps-from-official-source" + }, + { + "point": "Configurar um PIN da operadora de celular", + "priority": "Essential", + "details": "O sequestro de SIM ocorre quando um hacker consegue transferir o número do seu celular para o sim. A maneira mais fácil de se proteger contra isso é configurar um PIN por meio de sua operadora de celular.", + "slug": "mobile-devices-set-up-a-mobile-carrier-pin" + }, + { + "point": "Tenha cuidado com ameaças de carregamento de telefone", + "priority": "Optional", + "details": "Juice Jacking ocorre quando hackers usam estações de carregamento públicas para instalar malware em seu smartphone ou tablet por meio de uma porta USB comprometida.", + "slug": "mobile-devices-be-careful-of-phone-charging-threats" + }, + { + "point": "Desativar listagens de identificador de chamadas", + "priority": "Optional", + "details": "Para manter seus dados privados, você pode cancelar a listagem do seu número em aplicativos de identificação de chamadas, como TrueCaller, CallApp, SyncMe e Hiya.", + "slug": "mobile-devices-opt-out-of-caller-id-listings" + }, + { + "point": "Use mapas off-line", + "priority": "Optional", + "details": "Considere usar um aplicativo de mapas offline, como OsmAnd ou Organic Maps, para reduzir vazamentos de dados de aplicativos de mapas.", + "slug": "mobile-devices-use-offline-maps" + }, + { + "point": "Desativar anúncios personalizados", + "priority": "Optional", + "details": "Você pode reduzir um pouco a quantidade de dados coletados desativando a visualização de anúncios personalizados.", + "slug": "mobile-devices-opt-out-of-personalized-ads" + }, + { + "point": "Apagar após muitas tentativas de login", + "priority": "Optional", + "details": "Para se proteger contra um invasor forçando seu PIN, configure seu dispositivo para apagar após muitas tentativas de login malsucedidas.", + "slug": "mobile-devices-erase-after-too-many-login-attempts" + }, + { + "point": "Monitorar rastreadores", + "priority": "Optional", + "details": "[εxodus](https://awesome-privacy.xyz/security-tools/online-tools/εxodus) é um ótimo serviço que permite pesquisar qualquer aplicativo e ver quais rastreadores estão incorporados nele.", + "slug": "mobile-devices-monitor-trackers" + }, + { + "point": "Use um firewall móvel", + "priority": "Optional", + "details": "Para evitar que os aplicativos vazem dados confidenciais, você pode instalar um aplicativo de firewall.", + "slug": "mobile-devices-use-a-mobile-firewall" + }, + { + "point": "Reduzir a atividade em segundo plano", + "priority": "Optional", + "details": "Para Android, o SuperFreeze torna possível congelar totalmente todas as atividades em segundo plano por aplicativo.", + "slug": "mobile-devices-reduce-background-activity" + }, + { + "point": "Aplicativos móveis sandbox", + "priority": "Optional", + "details": "Evite que aplicativos que exigem muita permissão acessem seus dados privados com [Island](https://awesome-privacy.xyz/security-tools/mobile-apps/island), um ambiente sandbox.", + "slug": "mobile-devices-sandbox-mobile-apps" + }, + { + "point": "Evite teclados virtuais personalizados", + "priority": "Optional", + "details": "Recomenda-se usar o teclado padrão do seu dispositivo. Se você optar por usar um aplicativo de teclado de terceiros, certifique-se de que ele seja confiável.", + "slug": "mobile-devices-avoid-custom-virtual-keyboards" + }, + { + "point": "Reinicie o dispositivo regularmente", + "priority": "Optional", + "details": "Reiniciar o telefone pelo menos uma vez por semana limpará o estado do aplicativo armazenado em cache na memória e poderá funcionar com mais facilidade após a reinicialização.", + "slug": "mobile-devices-restart-device-regularly" + }, + { + "point": "Evite SMS", + "priority": "Optional", + "details": "O SMS não deve ser usado para receber códigos 2FA ou para comunicação; em vez disso, use um aplicativo de mensagens criptografadas, como [Signal](https://awesome-privacy.xyz/communication/encrypted-messaging/signal).", + "slug": "mobile-devices-avoid-sms" + }, + { + "point": "Mantenha seu número privado", + "priority": "Optional", + "details": "[MySudo](https://awesome-privacy.xyz/finance/virtual-credit-cards/mysudo) permite criar e usar números de telefone virtuais para diferentes pessoas ou grupos. Isso é ótimo para compartimentação.", + "slug": "mobile-devices-keep-your-number-private" + }, + { + "point": "Cuidado com os Stalkerwares", + "priority": "Optional", + "details": "Stalkerware é um malware instalado diretamente no seu dispositivo por alguém que você conhece. A melhor maneira de se livrar dele é redefinindo os padrões de fábrica.", + "slug": "mobile-devices-watch-out-for-stalkerware" + }, + { + "point": "Dê preferência ao navegador em vez do aplicativo dedicado", + "priority": "Optional", + "details": "Sempre que possível, considere usar um navegador seguro para acessar sites, em vez de instalar aplicativos dedicados.", + "slug": "mobile-devices-favor-the-browser-over-dedicated-app" + }, + { + "point": "Tráfego Tor", + "priority": "Advanced", + "details": "[Orbot](https://awesome-privacy.xyz/security-tools/mobile-apps/orbot) fornece uma conexão Tor para todo o sistema, que ajudará a protegê-lo contra vigilância e ameaças de WiFi público.", + "slug": "mobile-devices-tor-traffic" + }, + { + "point": "Considere executar uma ROM personalizada (Android)", + "priority": "Advanced", + "details": "Se você está preocupado com o fato de o fabricante do seu dispositivo coletar muitas informações pessoais, considere uma ROM personalizada com foco na privacidade.", + "slug": "mobile-devices-consider-running-a-custom-rom-android" + } + ] + }, + { + "title": "Computadores pessoais", + "slug": "personal-computers", + "description": "Protegendo o sistema operacional, os dados e a atividade do seu PC", + "intro": "Embora o Windows e o OS X sejam fáceis de usar e convenientes, ambos estão longe de ser seguros. Seu sistema operacional fornece a interface entre o hardware e seus aplicativos, portanto, se comprometido, poderá ter efeitos prejudiciais.", + "checklist": [ + { + "point": "Mantenha seu sistema atualizado", + "priority": "Essential", + "details": "As atualizações do sistema contêm correções/patches para problemas de segurança, melhoram o desempenho e, às vezes, adicionam novos recursos. Instale novas atualizações quando solicitado.", + "slug": "personal-computers-keep-your-system-up-to-date" + }, + { + "point": "Criptografe seu dispositivo", + "priority": "Essential", + "details": "Use BitLocker para Windows, FileVault no MacOS ou LUKS no Linux para habilitar a criptografia completa do disco. Isso evita o acesso não autorizado caso seu computador seja perdido ou roubado.", + "slug": "personal-computers-encrypt-your-device" + }, + { + "point": "Faça backup de dados importantes", + "priority": "Essential", + "details": "Manter backups criptografados evita perdas devido a ransomware, roubo ou danos. Considere usar [Cryptomator](https://awesome-privacy.xyz/security-tools/mobile-apps/cryptomator) para arquivos em nuvem ou [VeraCrypt](https://awesome-privacy.xyz/essentials/file-encryption/veracrypt) para unidades USB.", + "slug": "personal-computers-backup-important-data" + }, + { + "point": "Tenha cuidado ao conectar dispositivos USB ao seu computador", + "priority": "Essential", + "details": "Os dispositivos USB podem representar ameaças graves. Considere fazer um desinfetante USB com CIRCLean para verificar dispositivos USB com segurança.", + "slug": "personal-computers-be-careful-plugging-usb-devices-into-your-computer" + }, + { + "point": "Ative o bloqueio de tela quando estiver inativo", + "priority": "Essential", + "details": "Bloqueie seu computador quando estiver ausente e configure-o para exigir uma senha ao retomar do protetor de tela ou suspensão para evitar acesso não autorizado.", + "slug": "personal-computers-activate-screen-lock-when-idle" + }, + { + "point": "Desative Cortana ou Siri", + "priority": "Essential", + "details": "Assistentes controlados por voz podem ter implicações na privacidade devido aos dados enviados de volta para processamento. Desative ou limite suas capacidades de escuta.", + "slug": "personal-computers-disable-cortana-or-siri" + }, + { + "point": "Revise seus aplicativos instalados", + "priority": "Essential", + "details": "Reduza ao mínimo os aplicativos instalados para reduzir a exposição a vulnerabilidades e limpe regularmente os caches dos aplicativos.", + "slug": "personal-computers-review-your-installed-apps" + }, + { + "point": "Gerenciar permissões", + "priority": "Essential", + "details": "Controle quais aplicativos têm acesso à sua localização, câmera, microfone, contatos e outras informações confidenciais.", + "slug": "personal-computers-manage-permissions" + }, + { + "point": "Impedir que dados de uso sejam enviados para a nuvem", + "priority": "Essential", + "details": "Limite a quantidade de informações de uso ou feedback enviado à nuvem para proteger sua privacidade.", + "slug": "personal-computers-disallow-usage-data-from-being-sent-to-the-cloud" + }, + { + "point": "Evite o desbloqueio rápido", + "priority": "Essential", + "details": "Use uma senha forte em vez de biometria ou PINs curtos para desbloquear seu computador e aumentar a segurança.", + "slug": "personal-computers-avoid-quick-unlock" + }, + { + "point": "Desligue o computador, em vez do modo de espera", + "priority": "Essential", + "details": "Desligue seu dispositivo quando não estiver em uso, especialmente se o disco estiver criptografado, para manter os dados seguros.", + "slug": "personal-computers-power-off-computer-instead-of-standby" + }, + { + "point": "Não vincule seu PC à sua conta Microsoft ou Apple", + "priority": "Optional", + "details": "Use uma conta local apenas para evitar sincronização e exposição de dados. Evite usar serviços de sincronização que comprometam a privacidade.", + "slug": "personal-computers-don-t-link-your-pc-with-your-microsoft-or-apple-account" + }, + { + "point": "Verifique quais serviços de compartilhamento estão ativados", + "priority": "Optional", + "details": "Desative os recursos de compartilhamento de rede que você não está usando para fechar gateways para ameaças comuns.", + "slug": "personal-computers-check-which-sharing-services-are-enabled" + }, + { + "point": "Não use conta root/admin para tarefas não administrativas", + "priority": "Optional", + "details": "Use uma conta de usuário sem privilégios para tarefas diárias e eleve permissões apenas para alterações administrativas para mitigar vulnerabilidades.", + "slug": "personal-computers-don-t-use-rootadmin-account-for-non-admin-tasks" + }, + { + "point": "Bloquear webcam + microfone", + "priority": "Optional", + "details": "Cubra sua webcam quando não estiver em uso e considere bloquear a gravação de áudio não autorizada para proteger a privacidade.", + "slug": "personal-computers-block-webcam--microphone" + }, + { + "point": "Use um filtro de privacidade", + "priority": "Optional", + "details": "Use um filtro de privacidade de tela em espaços públicos para evitar a navegação e proteger informações confidenciais.", + "slug": "personal-computers-use-a-privacy-filter" + }, + { + "point": "Dispositivo fisicamente seguro", + "priority": "Optional", + "details": "Use uma trava Kensington para proteger seu laptop em espaços públicos e considere travas de porta para evitar acesso físico não autorizado.", + "slug": "personal-computers-physically-secure-device" + }, + { + "point": "Não carregue dispositivos do seu PC", + "priority": "Optional", + "details": "Use um banco de energia ou carregador CA de parede em vez do PC para evitar riscos de segurança associados às conexões USB.", + "slug": "personal-computers-don-t-charge-devices-from-your-pc" + }, + { + "point": "Randomize seu endereço de hardware em Wi-Fi", + "priority": "Optional", + "details": "Modifique ou randomize seu endereço MAC para proteger contra rastreamento em diferentes redes WiFi.", + "slug": "personal-computers-randomize-your-hardware-address-on-wi-fi" + }, + { + "point": "Use um firewall", + "priority": "Optional", + "details": "Instale um aplicativo de firewall para monitorar e bloquear o acesso indesejado à Internet por determinados aplicativos, protegendo contra ataques de acesso remoto e violações de privacidade.", + "slug": "personal-computers-use-a-firewall" + }, + { + "point": "Proteja-se contra keyloggers de software", + "priority": "Optional", + "details": "Use ferramentas de criptografia de teclas para se proteger contra keyloggers de software que gravam suas teclas digitadas.", + "slug": "personal-computers-protect-against-software-keyloggers" + }, + { + "point": "Verifique a conexão do teclado", + "priority": "Optional", + "details": "Esteja atento aos keyloggers de hardware ao usar computadores públicos ou desconhecidos, verificando as conexões do teclado.", + "slug": "personal-computers-check-keyboard-connection" + }, + { + "point": "Evite ataques de injeção de teclas", + "priority": "Optional", + "details": "Bloqueie seu PC quando estiver ausente e considere usar o USBGuard ou ferramentas semelhantes para se proteger contra ataques de injeção de teclas.", + "slug": "personal-computers-prevent-keystroke-injection-attacks" + }, + { + "point": "Não use antivírus comercial \"gratuito\"", + "priority": "Optional", + "details": "Confie em ferramentas de segurança integradas e evite aplicativos antivírus gratuitos devido ao seu potencial de invasão de privacidade e coleta de dados.", + "slug": "personal-computers-don-t-use-commercial--free--anti-virus" + }, + { + "point": "Verifique periodicamente se há rootkits", + "priority": "Advanced", + "details": "Verifique regularmente a existência de rootkits para detectar e mitigar ameaças de controle total do sistema usando ferramentas como [chkrootkit](https://awesome-privacy.xyz/operating-systems/linux-defenses/chkrootkit).", + "slug": "personal-computers-periodically-check-for-rootkits" + }, + { + "point": "Senha de inicialização do BIOS", + "priority": "Advanced", + "details": "Habilite uma senha BIOS ou UEFI para adicionar uma camada de segurança adicional durante a inicialização, mas esteja ciente de suas limitações.", + "slug": "personal-computers-bios-boot-password" + }, + { + "point": "Use um sistema operacional focado na segurança", + "priority": "Advanced", + "details": "Considere mudar para Linux ou uma distribuição focada em segurança como QubeOS ou [Tails](https://awesome-privacy.xyz/operating-systems/desktop-operating-systems/tails) para maior privacidade e segurança.", + "slug": "personal-computers-use-a-security-focused-operating-system" + }, + { + "point": "Faça uso de VMs", + "priority": "Advanced", + "details": "Use máquinas virtuais para atividades arriscadas ou teste software suspeito para isolar ameaças potenciais do seu sistema primário.", + "slug": "personal-computers-make-use-of-vms" + }, + { + "point": "Compartimentar", + "priority": "Advanced", + "details": "Isole diferentes programas e fontes de dados, tanto quanto possível, para limitar a extensão de possíveis violações.", + "slug": "personal-computers-compartmentalize" + }, + { + "point": "Desativar recursos indesejados (Windows)", + "priority": "Advanced", + "details": "Desative \"recursos\" e serviços desnecessários do Windows executados em segundo plano para reduzir a coleta de dados e o uso de recursos.", + "slug": "personal-computers-disable-undesired-features-windows" + }, + { + "point": "Inicialização segura", + "priority": "Advanced", + "details": "Certifique-se de que a inicialização segura esteja ativada para evitar que malware substitua seu carregador de inicialização e outros softwares críticos.", + "slug": "personal-computers-secure-boot" + }, + { + "point": "Acesso SSH seguro", + "priority": "Advanced", + "details": "Tome medidas para proteger o acesso SSH contra ataques, alterando a porta padrão, usando chaves SSH e configurando firewalls.", + "slug": "personal-computers-secure-ssh-access" + }, + { + "point": "Fechar portas abertas não utilizadas", + "priority": "Advanced", + "details": "Desative a escuta de serviços em portas externas que não são necessárias para proteger contra explorações remotas e melhorar a segurança.", + "slug": "personal-computers-close-un-used-open-ports" + }, + { + "point": "Implementar controle de acesso obrigatório", + "priority": "Advanced", + "details": "Restrinja o acesso privilegiado para limitar os danos que podem ser causados ​​se um sistema for comprometido.", + "slug": "personal-computers-implement-mandatory-access-control" + }, + { + "point": "Use tokens canários", + "priority": "Advanced", + "details": "Implante tokens canários para detectar com mais rapidez o acesso não autorizado aos seus arquivos ou e-mails e coletar informações sobre o invasor.", + "slug": "personal-computers-use-canary-tokens" + } + ] + }, + { + "title": "Casa inteligente", + "slug": "smart-home", + "description": "Usando dispositivos IoT sem comprometer sua privacidade", + "intro": "Assistentes domésticos (como Google Home, Alexa e Siri) e outros dispositivos conectados à Internet coletam grandes quantidades de dados pessoais (incluindo amostras de voz, dados de localização, detalhes da casa e registros de todas as interações). Como você tem controle limitado sobre o que está sendo coletado, como é armazenado e para que será usado, fica difícil recomendar qualquer produto de consumo doméstico inteligente para qualquer pessoa que se preocupe com privacidade e segurança.\nSegurança versus privacidade: Existem muitos dispositivos inteligentes no mercado que afirmam aumentar a segurança da sua casa ao mesmo tempo que são fáceis e convenientes de usar (como alarmes inteligentes contra roubo, câmeras de segurança na Internet, fechaduras inteligentes e campainhas de acesso remoto, para citar alguns). Estes dispositivos podem parecer facilitar a segurança, mas há uma compensação em termos de privacidade: pois recolhem grandes quantidades de dados pessoais e deixam-no sem controlo sobre a forma como estes são armazenados ou utilizados. A segurança destes dispositivos também é questionável, uma vez que muitos deles podem ser (e estão sendo) hackeados, permitindo que um intruso contorne a detecção com o mínimo esforço.\nA opção que mais respeita a privacidade seria não usar dispositivos “inteligentes” conectados à Internet em sua casa e não depender de um dispositivo de segurança que exija conexão com a Internet. Mas se o fizer, é importante compreender totalmente os riscos de qualquer produto antes de comprá-lo. Em seguida, ajuste as configurações para aumentar a privacidade e a segurança. A lista de verificação a seguir ajudará a mitigar os riscos associados aos dispositivos domésticos conectados à Internet.", + "checklist": [ + { + "point": "Renomeie os dispositivos para não especificar marca/modelo", + "priority": "Essential", + "details": "Altere os nomes dos dispositivos padrão para algo genérico para evitar ataques direcionados, ocultando informações de marca ou modelo.", + "slug": "smart-home-rename-devices-to-not-specify-brandmodel" + }, + { + "point": "Desative o microfone e a câmera quando não estiverem em uso", + "priority": "Essential", + "details": "Use interruptores de hardware para desligar microfones e câmeras em dispositivos inteligentes para proteção contra gravações acidentais ou acesso direcionado.", + "slug": "smart-home-disable-microphone-and-camera-when-not-in-use" + }, + { + "point": "Entenda quais dados são coletados, armazenados e transmitidos", + "priority": "Essential", + "details": "Pesquise e garanta conforto com as práticas de tratamento de dados dos dispositivos domésticos inteligentes antes da compra, evitando dispositivos que compartilhem dados com terceiros.", + "slug": "smart-home-understand-what-data-is-collected-stored-and-transmitted" + }, + { + "point": "Defina configurações de privacidade e opte por não compartilhar dados com terceiros", + "priority": "Essential", + "details": "Ajuste as configurações do aplicativo para obter controles de privacidade mais rígidos e desative o compartilhamento de dados com terceiros sempre que possível.", + "slug": "smart-home-set-privacy-settings-and-opt-out-of-sharing-data-with-third-parties" + }, + { + "point": "Não vincule seus dispositivos domésticos inteligentes à sua identidade real", + "priority": "Essential", + "details": "Use nomes de usuário e senhas anônimos, evitando cadastro/login através de mídias sociais ou outros serviços de terceiros para manter a privacidade.", + "slug": "smart-home-don-t-link-your-smart-home-devices-to-your-real-identity" + }, + { + "point": "Mantenha o firmware atualizado", + "priority": "Essential", + "details": "Atualize regularmente o firmware do dispositivo inteligente para aplicar patches e melhorias de segurança.", + "slug": "smart-home-keep-firmware-up-to-date" + }, + { + "point": "Proteja sua rede", + "priority": "Essential", + "details": "Proteja o WiFi e a rede doméstica para evitar acesso não autorizado a dispositivos inteligentes.", + "slug": "smart-home-protect-your-network" + }, + { + "point": "Tenha cuidado com wearables", + "priority": "Optional", + "details": "Considere os extensos recursos de coleta de dados dos dispositivos vestíveis e suas implicações para a privacidade.", + "slug": "smart-home-be-wary-of-wearables" + }, + { + "point": "Não conecte a infraestrutura crítica da sua casa à Internet", + "priority": "Optional", + "details": "Avalie os riscos de termostatos, alarmes e detectores conectados à Internet devido ao potencial acesso remoto de hackers.", + "slug": "smart-home-don-t-connect-your-home-s-critical-infrastructure-to-the-internet" + }, + { + "point": "Mitigar os riscos do Alexa/Google Home", + "priority": "Optional", + "details": "Considere alternativas focadas na privacidade, como [Mycroft](https://awesome-privacy.xyz/smart-home-and-iot/voice-assistants/mycroft) ou use o Project Alias ​​para evitar a escuta ociosa por assistentes ativados por voz.", + "slug": "smart-home-mitigate-alexa-google-home-risks" + }, + { + "point": "Monitore sua rede doméstica de perto", + "priority": "Optional", + "details": "Use ferramentas como FingBox ou recursos de roteador para monitorar atividades incomuns de rede.", + "slug": "smart-home-monitor-your-home-network-closely" + }, + { + "point": "Negar acesso à Internet sempre que possível", + "priority": "Advanced", + "details": "Utilize firewalls para bloquear o acesso à Internet de dispositivos que não necessitam dela, limitando a operação ao uso da rede local.", + "slug": "smart-home-deny-internet-access-where-possible" + }, + { + "point": "Avalie os riscos", + "priority": "Advanced", + "details": "Considere as implicações de privacidade para todos os membros da família e ajuste as configurações do dispositivo para segurança e privacidade, como desativar dispositivos em determinados momentos.", + "slug": "smart-home-assess-risks" + } + ] + }, + { + "title": "Finanças Pessoais", + "slug": "personal-finance", + "description": "Protegendo seus fundos, contas financeiras e transações", + "intro": "A fraude de cartão de crédito é a forma mais comum de roubo de identidade (com [133.015 relatos apenas nos EUA em 2017](https://www.experian.com/blogs/ask-experian/identity-theft-statistics/)) e uma perda total de US$ 905 milhões, o que representou um aumento de 26% em relação ao ano anterior. O valor médio perdido por pessoa foi de US$ 429 em 2017. É mais importante do que nunca tomar medidas básicas para se proteger de ser vítima\nObservação sobre cartões de crédito: Os cartões de crédito possuem métodos tecnológicos para detectar e impedir algumas transações fraudulentas. Os principais processadores de pagamentos implementam isso, extraindo enormes quantidades de dados dos titulares de seus cartões, a fim de saber muito sobre os hábitos de consumo de cada pessoa. Esses dados são usados ​​para identificar fraudes, mas também são vendidos a outros corretores de dados. Os cartões de crédito são, portanto, bons para a segurança, mas terríveis para a privacidade dos dados.", + "checklist": [ + { + "point": "Inscreva-se para receber alertas de fraude e monitoramento de crédito", + "priority": "Essential", + "details": "Habilite alertas de fraude e monitoramento de crédito por meio da Experian, TransUnion ou Equifax para ser alertado sobre atividades suspeitas.", + "slug": "personal-finance-sign-up-for-fraud-alerts-and-credit-monitoring" + }, + { + "point": "Aplicar um congelamento de crédito", + "priority": "Essential", + "details": "Evite consultas de crédito não autorizadas congelando seu crédito por meio da Experian, TransUnion e Equifax.", + "slug": "personal-finance-apply-a-credit-freeze" + }, + { + "point": "Use cartões virtuais", + "priority": "Optional", + "details": "Utilize números de cartões virtuais para transações on-line para proteger seus dados bancários reais. Serviços como [Privacy.com](https://awesome-privacy.xyz/finance/virtual-credit-cards/privacy.com) e [MySudo](https://awesome-privacy.xyz/finance/virtual-credit-cards/mysudo) oferecem esses recursos.", + "slug": "personal-finance-use-virtual-cards" + }, + { + "point": "Use dinheiro para transações locais", + "priority": "Optional", + "details": "Pague com [Dinheiro](https://awesome-privacy.xyz/finance/other-payment-methods/cash) para compras locais e diárias para evitar perfis financeiros por parte das instituições.", + "slug": "personal-finance-use-cash-for-local-transactions" + }, + { + "point": "Use criptomoeda para transações online", + "priority": "Optional", + "details": "Opte por criptomoedas com foco na privacidade, como [Monero](https://awesome-privacy.xyz/finance/cryptocurrencies/monero) para transações online para manter o anonimato. Use criptomoedas com sabedoria para garantir a privacidade.", + "slug": "personal-finance-use-cryptocurrency-for-online-transactions" + }, + { + "point": "Armazene criptografia com segurança", + "priority": "Advanced", + "details": "Armazene criptomoedas com segurança usando geração de carteira offline, carteiras de hardware como [Trezor](https://awesome-privacy.xyz/finance/crypto-wallets/trezor) ou [ColdCard](https://awesome-privacy.xyz/finance/crypto-wallets/coldcard), ou considere soluções de armazenamento de longo prazo como [CryptoSteel](https://awesome-privacy.xyz/finance/crypto-wallets/cryptosteel).", + "slug": "personal-finance-store-crypto-securely" + }, + { + "point": "Compre criptografia anonimamente", + "priority": "Advanced", + "details": "Compre criptomoedas sem vincular à sua identidade por meio de serviços como [LocalBitcoins](https://awesome-privacy.xyz/finance/crypto-exchanges/localbitcoins), [Bisq](https://awesome-privacy.xyz/finance/crypto-exchanges/bisq) ou caixas eletrônicos Bitcoin.", + "slug": "personal-finance-buy-crypto-anonymously" + }, + { + "point": "Tombar/Misturar Moedas", + "priority": "Advanced", + "details": "Use um misturador de bitcoin ou CoinJoin antes de converter Bitcoin em moeda para ocultar trilhas de transação.", + "slug": "personal-finance-tumble-mix-coins" + }, + { + "point": "Use detalhes de um alias para compras online", + "priority": "Advanced", + "details": "Para compras on-line, considere usar detalhes de alias, encaminhamento de endereços de e-mail, números VOIP e métodos de entrega seguros para proteger sua identidade.", + "slug": "personal-finance-use-an-alias-details-for-online-shopping" + }, + { + "point": "Usar endereço de entrega alternativo", + "priority": "Advanced", + "details": "Opte por entregas em endereços não pessoais, como caixas postais, endereços de encaminhamento ou locais de coleta locais para evitar vincular as compras diretamente a você.", + "slug": "personal-finance-use-alternate-delivery-address" + } + ] + }, + { + "title": "Aspecto Humano", + "slug": "human-aspect", + "description": "Evitando riscos de segurança de engenharia social", + "intro": "Muitas violações de dados, hacks e ataques são causados ​​por erro humano. A lista a seguir contém etapas que você deve seguir para reduzir o risco de isso acontecer com você. Muitos deles são de bom senso, mas vale a pena anotá-los.", + "checklist": [ + { + "point": "Verifique os destinatários", + "priority": "Essential", + "details": "Os e-mails podem ser facilmente falsificados. Verifique a autenticidade do remetente, especialmente para ações confidenciais, e prefira inserir URLs manualmente em vez de clicar em links em e-mails.", + "slug": "human-aspect-verify-recipients" + }, + { + "point": "Não confie em suas notificações pop-up", + "priority": "Essential", + "details": "Pop-ups falsos podem ser implantados por agentes mal-intencionados. Sempre verifique o URL antes de inserir qualquer informação em um pop-up.", + "slug": "human-aspect-don-t-trust-your-popup-notifications" + }, + { + "point": "Nunca deixe o dispositivo sem supervisão", + "priority": "Essential", + "details": "Dispositivos não supervisionados podem ser comprometidos mesmo com senhas fortes. Use recursos de criptografia e apagamento remoto, como Find My Phone, para dispositivos perdidos.", + "slug": "human-aspect-never-leave-device-unattended" + }, + { + "point": "Prevenir Camfecting", + "priority": "Essential", + "details": "Proteja-se contra camfecting usando capas de webcam e bloqueadores de microfone. Silencie os assistentes domésticos quando não estiverem em uso ou discutindo assuntos delicados.", + "slug": "human-aspect-prevent-camfecting" + }, + { + "point": "Fique protegido dos surfistas de ombro", + "priority": "Essential", + "details": "Use telas de privacidade em laptops e celulares para evitar que outras pessoas leiam sua tela em espaços públicos.", + "slug": "human-aspect-stay-protected-from-shoulder-surfers" + }, + { + "point": "Eduque-se sobre ataques de phishing", + "priority": "Essential", + "details": "Tenha cuidado com tentativas de phishing. Verifique URLs, contexto das mensagens recebidas e utilize boas práticas de segurança, como usar 2FA e não reutilizar senhas.", + "slug": "human-aspect-educate-yourself-about-phishing-attacks" + }, + { + "point": "Cuidado com os Stalkerwares", + "priority": "Essential", + "details": "Esteja atento aos stalkerwares instalados por conhecidos para espionagem. Fique atento a sinais como uso incomum da bateria e faça redefinições de fábrica, se houver suspeita.", + "slug": "human-aspect-watch-out-for-stalkerware" + }, + { + "point": "Instale software confiável de fontes confiáveis", + "priority": "Essential", + "details": "Baixe apenas software de fontes legítimas e verifique os arquivos com ferramentas como [Virus Total](https://awesome-privacy.xyz/security-tools/online-tools/virus-total) antes da instalação.", + "slug": "human-aspect-install-reputable-software-from-trusted-sources" + }, + { + "point": "Armazene dados pessoais com segurança", + "priority": "Essential", + "details": "Garanta que todos os dados pessoais nos dispositivos ou na nuvem sejam criptografados para proteção contra acesso não autorizado.", + "slug": "human-aspect-store-personal-data-securely" + }, + { + "point": "Detalhes pessoais obscuros de documentos", + "priority": "Essential", + "details": "Ao compartilhar documentos, oculte detalhes pessoais com retângulos opacos para evitar vazamento de informações.", + "slug": "human-aspect-obscure-personal-details-from-documents" + }, + { + "point": "Não presuma que um site é seguro só porque é `HTTPS`", + "priority": "Essential", + "details": "HTTPS não garante a legitimidade de um site. Verifique URLs e tenha cuidado com dados pessoais.", + "slug": "human-aspect-do-not-assume-a-site-is-secure-just-because-it-is-https" + }, + { + "point": "Use cartões virtuais ao pagar online", + "priority": "Optional", + "details": "Use cartões virtuais para pagamentos online para proteger seus dados bancários e limitar os riscos das transações.", + "slug": "human-aspect-use-virtual-cards-when-paying-online" + }, + { + "point": "Revise as permissões do aplicativo", + "priority": "Optional", + "details": "Revise e gerencie regularmente as permissões do aplicativo para garantir que não haja acesso desnecessário a recursos confidenciais do dispositivo.", + "slug": "human-aspect-review-application-permissions" + }, + { + "point": "Desativar listas públicas", + "priority": "Optional", + "details": "Retire-se de bancos de dados públicos e listas de marketing para reduzir contatos indesejados e riscos potenciais.", + "slug": "human-aspect-opt-out-of-public-lists" + }, + { + "point": "Nunca forneça PII adicionais ao cancelar", + "priority": "Optional", + "details": "Não forneça informações pessoais adicionais ao cancelar os serviços de dados para evitar futuras coletas de dados.", + "slug": "human-aspect-never-provide-additional-pii-when-opting-out" + }, + { + "point": "Desativar o compartilhamento de dados", + "priority": "Optional", + "details": "Muitos aplicativos e serviços têm como padrão configurações de compartilhamento de dados. Desative para proteger seus dados de serem compartilhados com terceiros.", + "slug": "human-aspect-opt-out-of-data-sharing" + }, + { + "point": "Revise e atualize a privacidade das mídias sociais", + "priority": "Optional", + "details": "Verifique e atualize regularmente suas configurações de mídia social devido a atualizações frequentes de termos que podem afetar suas configurações de privacidade.", + "slug": "human-aspect-review-and-update-social-media-privacy" + }, + { + "point": "Compartimentar", + "priority": "Advanced", + "details": "Mantenha diferentes áreas de atividade digital separadas para limitar a exposição de dados em caso de violação.", + "slug": "human-aspect-compartmentalize" + }, + { + "point": "Quem é o protetor de privacidade", + "priority": "Advanced", + "details": "Use o WhoIs Privacy Guard para registros de domínio para proteger suas informações pessoais de pesquisas públicas.", + "slug": "human-aspect-whois-privacy-guard" + }, + { + "point": "Use um endereço de encaminhamento", + "priority": "Advanced", + "details": "Use uma caixa postal ou endereço de encaminhamento de correspondência para evitar que as empresas saibam seu endereço real, adicionando uma camada de proteção de privacidade.", + "slug": "human-aspect-use-a-forwarding-address" + }, + { + "point": "Use métodos de pagamento anônimos", + "priority": "Advanced", + "details": "Opte por métodos de pagamento anônimos, como criptomoedas, para evitar inserir informações identificáveis ​​online.", + "slug": "human-aspect-use-anonymous-payment-methods" + } + ] + }, + { + "title": "Segurança Física", + "slug": "physical-security", + "description": "Tomando medidas para prevenir incidentes de segurança IRL", + "intro": "Registros públicos frequentemente incluem dados pessoais sensíveis, como nome completo, data de nascimento, número de telefone, e-mail, endereço e etnia, e são reunidos de diversas fontes: registros de censo, certidões de nascimento, óbito e casamento, cadastros eleitorais, informações de marketing, bancos de dados de clientes, registros de veículos, licenças profissionais e comerciais e arquivos judiciais completos. Essas informações pessoais sensíveis são [fáceis e legais de acessar](https://www.consumerreports.org/consumerist/its-creepy-but-not-illegal-for-this-website-to-provide-all-your-public-info-to-anyone/), o que suscita [sérias preocupações de privacidade](https://privacyrights.org/resources/public-records-internet-privacy-dilemma), incluindo roubo de identidade, riscos à segurança pessoal e perseguição, destruição de reputações e uma sociedade de dossiês.\n\nO CFTV é uma das principais formas pelas quais corporações, indivíduos e governos monitoram seus deslocamentos. Em Londres, no Reino Unido, uma pessoa é registrada por câmeras cerca de 500 vezes por dia, em média. Essa rede continua a crescer e, em muitas cidades do mundo, o reconhecimento facial está sendo implantado, o que permite ao Estado identificar, em tempo real, as pessoas presentes nas imagens.\nAutenticação forte, dispositivos criptografados, software atualizado e navegação anônima podem ter pouca utilidade se alguém conseguir comprometer fisicamente você, seus dispositivos ou seus dados. Esta seção apresenta métodos básicos para a segurança física.", + "checklist": [ + { + "point": "Destrua documentos confidenciais", + "priority": "Essential", + "details": "Destrua ou edite documentos confidenciais antes de descartá-los para protegê-los contra\nroubo de identidade e manter a confidencialidade.", + "slug": "physical-security-destroy-sensitive-documents" + }, + { + "point": "Desativação de registros públicos", + "priority": "Essential", + "details": "Entre em contato com pessoas que pesquisam sites para cancelar listagens que mostram a personalidade\ninformações, usando guias como o Manual de Remoção de Dados Pessoais de Michael Bazzell.", + "slug": "physical-security-opt-out-of-public-records" + }, + { + "point": "Documentos com marca d’água", + "priority": "Essential", + "details": "Adicione uma marca d'água com o nome e a data do destinatário às cópias digitais de\ndocumentos pessoais para rastrear a origem de uma violação.", + "slug": "physical-security-watermark-documents" + }, + { + "point": "Não revele informações sobre chamadas recebidas", + "priority": "Essential", + "details": "Compartilhe apenas dados pessoais nas chamadas que você iniciar e verifique o número de telefone do destinatário.", + "slug": "physical-security-don-t-reveal-info-on-inbound-calls" + }, + { + "point": "Fique alerta", + "priority": "Essential", + "details": "Esteja ciente do que está ao seu redor e avalie os riscos potenciais em novos ambientes.", + "slug": "physical-security-stay-alert" + }, + { + "point": "Perímetro Seguro", + "priority": "Essential", + "details": "Garanta a segurança física dos locais que armazenam dispositivos de informações pessoais, minimizando o acesso externo e utilizando sistemas de detecção de intrusão.", + "slug": "physical-security-secure-perimeter" + }, + { + "point": "Dispositivos Fisicamente Seguros", + "priority": "Essential", + "details": "Use medidas de segurança física como travas Kensington, capas de webcam e telas de privacidade para dispositivos.", + "slug": "physical-security-physically-secure-devices" + }, + { + "point": "Mantenha os dispositivos fora da vista direta", + "priority": "Essential", + "details": "Evite que os dispositivos sejam visíveis do exterior para mitigar os riscos de lasers e roubo.", + "slug": "physical-security-keep-devices-out-of-direct-sight" + }, + { + "point": "Proteja seu PIN", + "priority": "Essential", + "details": "Proteja a entrada do seu PIN de curiosos e câmeras e limpe as telas sensíveis ao toque após o uso.", + "slug": "physical-security-protect-your-pin" + }, + { + "point": "Verifique se há skimmers", + "priority": "Essential", + "details": "Inspecione caixas eletrônicos e dispositivos públicos em busca de dispositivos de fraude e sinais de adulteração antes de usar.", + "slug": "physical-security-check-for-skimmers" + }, + { + "point": "Proteja seu endereço residencial", + "priority": "Optional", + "details": "Use locais alternativos, endereços de encaminhamento e métodos de pagamento anônimos para proteger seu endereço residencial.", + "slug": "physical-security-protect-your-home-address" + }, + { + "point": "Use um PIN, não biometria", + "priority": "Advanced", + "details": "Prefira PINs em vez de biometria para segurança do dispositivo em situações em que possa ocorrer coerção legal para desbloquear dispositivos.", + "slug": "physical-security-use-a-pin-not-biometrics" + }, + { + "point": "Reduza a exposição ao CCTV", + "priority": "Advanced", + "details": "Use disfarces e escolha rotas com menos câmeras para evitar vigilância.", + "slug": "physical-security-reduce-exposure-to-cctv" + }, + { + "point": "Roupas de reconhecimento antifacial", + "priority": "Advanced", + "details": "Use roupas com padrões que enganem a tecnologia de reconhecimento facial.", + "slug": "physical-security-anti-facial-recognition-clothing" + }, + { + "point": "Reduza a exposição à visão noturna", + "priority": "Advanced", + "details": "Use fontes de luz infravermelha ou óculos refletivos para obstruir as câmeras de visão noturna.", + "slug": "physical-security-reduce-night-vision-exposure" + }, + { + "point": "Proteja seu DNA", + "priority": "Advanced", + "details": "Evite compartilhar DNA com sites históricos e tenha cuidado ao deixar vestígios de DNA.", + "slug": "physical-security-protect-your-dna" + } + ] + } +] From 3e82a514522fcd812fe55847e829845631c8d6b1 Mon Sep 17 00:00:00 2001 From: Vitor Parras Date: Mon, 24 Aug 2026 23:48:48 -0300 Subject: [PATCH 04/13] Feat(i18n): complete Brazilian Portuguese locale coverage --- frontend/data/changelog.json | 132 +++++++++--------- .../locales/security-checklist/pt-BR.json | 36 ++--- 2 files changed, 84 insertions(+), 84 deletions(-) diff --git a/frontend/data/changelog.json b/frontend/data/changelog.json index 635e5650f..71cb77984 100644 --- a/frontend/data/changelog.json +++ b/frontend/data/changelog.json @@ -50,7 +50,7 @@ "zh-TW": "使用 Vue2 重構了整個專案", "fr": "Refonte complète du projet en utilisant Vue2", "ru": "Выполнен полный рефакторинг проекта с использованием Vue2", - "pt-BR": "Refatorei todo o projeto usando Vue2" + "pt-BR": "Projeto inteiro refatorado com Vue 2" } }, { @@ -206,7 +206,7 @@ "zh-TW": "支援 PWA,可以安裝到手機和桌面上", "fr": "Prise en charge de PWA, peut être installé sur mobile et ordinateur de bureau", "ru": "Добавлена поддержка PWA с установкой на мобильные и настольные устройства", - "pt-BR": "Suporte PWA, pode ser instalado em dispositivos móveis e desktops" + "pt-BR": "Suporte a PWA, com instalação em dispositivos móveis e desktops" } } ] @@ -245,7 +245,7 @@ "zh-TW": "支援使用 Docker 部署", "fr": "Prise en charge du déploiement à l'aide de Docker", "ru": "Добавлена поддержка развёртывания через Docker", - "pt-BR": "Implantação de suporte usando Docker" + "pt-BR": "Suporte à implantação com Docker" } }, { @@ -273,7 +273,7 @@ "zh-TW": "使用 Vite + Vue3 重構了整個專案", "fr": "Refonte complète du projet en utilisant Vite + Vue3", "ru": "Выполнен полный рефакторинг проекта с использованием Vite + Vue3", - "pt-BR": "Refatorei todo o projeto usando Vite + Vue3" + "pt-BR": "Projeto inteiro refatorado com Vite e Vue 3" } }, { @@ -367,7 +367,7 @@ "zh-TW": "修正了一些小問題", "fr": "Correction de quelques problèmes mineurs", "ru": "Исправлены небольшие проблемы", - "pt-BR": "Corrigido alguns pequenos problemas" + "pt-BR": "Corrigidos alguns pequenos problemas" } } ] @@ -406,7 +406,7 @@ "zh-TW": "提高後端腳本安全性", "fr": "Amélioration de la sécurité du script backend", "ru": "Повышена безопасность серверных скриптов", - "pt-BR": "Segurança aprimorada de script de back-end" + "pt-BR": "Segurança dos scripts de back-end aprimorada" } } ] @@ -423,7 +423,7 @@ "zh-TW": "支援使用不同的 IP 地理位置資訊來源", "fr": "Prise en charge de l'utilisation de différentes sources d'informations de géolocalisation IP", "ru": "Добавлена поддержка разных источников геолокации IP", - "pt-BR": "Adicionado suporte para usar diferentes fontes de geolocalização IP" + "pt-BR": "Adicionado suporte ao uso de diferentes fontes de geolocalização de IP" } }, { @@ -445,7 +445,7 @@ "zh-TW": "最佳化 UI 體驗", "fr": "Amélioration de l'expérience utilisateur de l'interface utilisateur", "ru": "Улучшен интерфейс", - "pt-BR": "Experiência de IU otimizada" + "pt-BR": "Experiência da interface otimizada" } } ] @@ -529,7 +529,7 @@ "zh-TW": "新增 DNS 解析功能", "fr": "Ajout de la fonction de résolution DNS", "ru": "Добавлена функция разрешения DNS", - "pt-BR": "Adicionado recurso de resolução DNS" + "pt-BR": "Adicionado recurso de resolução de DNS" } }, { @@ -579,7 +579,7 @@ "zh-TW": "網速測試可以自訂封包大小", "fr": "Le test de vitesse réseau permet maintenant de personnaliser la taille des paquets", "ru": "В тесте скорости сети теперь можно задавать размер пакета", - "pt-BR": "O teste de velocidade da rede agora permite tamanho de pacote personalizado" + "pt-BR": "O teste de velocidade da rede agora permite um tamanho de pacote personalizado" } }, { @@ -590,7 +590,7 @@ "zh-TW": "最佳化了部分功能邏輯", "fr": "Optimisation de certaines logiques fonctionnelles", "ru": "Оптимизирована логика некоторых функций", - "pt-BR": "Otimizou alguma lógica funcional" + "pt-BR": "Lógica funcional otimizada" } } ] @@ -618,7 +618,7 @@ "zh-TW": "可以自訂程式在第二次啟動時的多個預設行為", "fr": "Permettre la personnalisation de plusieurs comportements par défaut lors du deuxième lancement du programme", "ru": "Добавлена настройка нескольких вариантов поведения по умолчанию при повторном запуске программы", - "pt-BR": "Permitir a personalização de vários comportamentos padrão na segunda inicialização do programa" + "pt-BR": "Personalização de diversos comportamentos padrão permitida na segunda inicialização do programa" } }, { @@ -640,7 +640,7 @@ "zh-TW": "修正了一些小問題", "fr": "Correction de quelques problèmes mineurs", "ru": "Исправлены небольшие проблемы", - "pt-BR": "Corrigido alguns pequenos problemas" + "pt-BR": "Corrigidos alguns pequenos problemas" } } ] @@ -679,7 +679,7 @@ "zh-TW": "修正了一些小問題", "fr": "Correction de quelques problèmes mineurs", "ru": "Исправлены небольшие проблемы", - "pt-BR": "Corrigido alguns pequenos problemas" + "pt-BR": "Corrigidos alguns pequenos problemas" } } ] @@ -696,7 +696,7 @@ "zh-TW": "採用 Vue 3 的 Composition API 重構了整個專案", "fr": "Refonte complète du projet en utilisant la Composition API de Vue 3", "ru": "Выполнен полный рефакторинг проекта с использованием Composition API из Vue 3", - "pt-BR": "Refatorei todo o projeto usando a API Composition do Vue 3" + "pt-BR": "Projeto inteiro refatorado com a Composition API do Vue 3" } }, { @@ -707,7 +707,7 @@ "zh-TW": "拆分前端多個模組,提高了程式的可維護性", "fr": "Découpage du frontend en plusieurs modules pour améliorer la maintenabilité du programme", "ru": "Клиентская часть разделена на несколько модулей для упрощения сопровождения", - "pt-BR": "Divida o front-end em vários módulos para melhorar a capacidade de manutenção" + "pt-BR": "Frontend dividido em vários módulos para facilitar a manutenção" } }, { @@ -902,7 +902,7 @@ "zh-TW": "新增安全檢查清單", "fr": "Liste de vérification de sécurité", "ru": "Добавлен контрольный список безопасности", - "pt-BR": "Adicionar lista de verificação de segurança" + "pt-BR": "Lista de verificação de segurança adicionada" } }, { @@ -930,7 +930,7 @@ "zh-TW": "新增使用者系統", "fr": "Ajout de la système d'utilisateur", "ru": "Добавлена система пользователей", - "pt-BR": "Adicionar sistema de usuário" + "pt-BR": "Sistema de usuários adicionado" } }, { @@ -941,7 +941,7 @@ "zh-TW": "新增使用者成就系統", "fr": "Ajout de la système de réussite utilisateur", "ru": "Добавлена система достижений пользователей", - "pt-BR": "Adicionar sistema de conquistas do usuário" + "pt-BR": "Sistema de conquistas de usuários adicionado" } }, { @@ -952,7 +952,7 @@ "zh-TW": "新增 Lite 版本", "fr": "Ajout de la version Lite", "ru": "Добавлена облегчённая версия", - "pt-BR": "Adicionar versão Lite" + "pt-BR": "Versão Lite adicionada" } }, { @@ -1019,7 +1019,7 @@ "zh-TW": "提升 ASN 資訊的豐富度", "fr": "Amélioration de la richesse des informations ASN", "ru": "Расширены сведения об ASN", - "pt-BR": "Riqueza aprimorada de informações ASN" + "pt-BR": "Informações de ASN mais completas" } }, { @@ -1080,7 +1080,7 @@ "zh-TW": "大幅提升建置速度", "fr": "Amélioration significative de la vitesse de construction", "ru": "Значительно ускорена сборка", - "pt-BR": "Velocidade de construção significativamente melhorada" + "pt-BR": "Velocidade de compilação significativamente aprimorada" } } ] @@ -1097,7 +1097,7 @@ "zh-TW": "使用 Shadcn UI + Tailwind CSS 重構了整個專案", "fr": "Refonte complète du projet avec Shadcn UI + Tailwind CSS", "ru": "Выполнен полный рефакторинг проекта с использованием Shadcn UI + Tailwind CSS", - "pt-BR": "Refatorei todo o projeto com Shadcn UI + Tailwind CSS" + "pt-BR": "Projeto inteiro refatorado com Shadcn UI e Tailwind CSS" } }, { @@ -1108,7 +1108,7 @@ "zh-TW": "透過多個 Agents.md 提升 AI 開發友善度", "fr": "Amélioration de la compatibilité avec le développement assisté par IA grâce à plusieurs fichiers Agents.md", "ru": "Проект стал удобнее для AI-разработки благодаря нескольким файлам Agents.md", - "pt-BR": "Facilidade de desenvolvimento de IA aprimorada por meio de vários arquivos Agents.md" + "pt-BR": "Desenvolvimento com IA facilitado por vários arquivos AGENTS.md" } }, { @@ -1130,7 +1130,7 @@ "zh-TW": "更加元件化的設計,更方便維護和擴充", "fr": "Conception davantage orientée composants, plus facile à maintenir et à étendre", "ru": "Архитектура стала более компонентной, что упрощает сопровождение и развитие", - "pt-BR": "Design mais orientado a componentes, mais fácil de manter e ampliar" + "pt-BR": "Arquitetura mais orientada a componentes, mais fácil de manter e estender" } }, { @@ -1141,7 +1141,7 @@ "zh-TW": "重新設計程式目錄結構,使其更加清晰易懂", "fr": "Réorganisation de la structure des répertoires du projet pour plus de clarté", "ru": "Структура каталогов проекта реорганизована для большей ясности", - "pt-BR": "Reorganizou a estrutura de diretórios do projeto para melhor clareza" + "pt-BR": "Estrutura de diretórios do projeto reorganizada para maior clareza" } }, { @@ -1163,7 +1163,7 @@ "zh-TW": "提升程式打包速度,減少打包體積", "fr": "Temps de compilation plus rapides et taille de bundle réduite", "ru": "Ускорена сборка и уменьшен размер бандла", - "pt-BR": "Tempos de construção mais rápidos e tamanho de pacote menor" + "pt-BR": "Tempos de compilação menores e bundle reduzido" } }, { @@ -1174,7 +1174,7 @@ "zh-TW": "後端程式大量簡化,提升程式效能", "fr": "Backend largement simplifié pour améliorer les performances", "ru": "Серверная часть значительно упрощена для повышения производительности", - "pt-BR": "Simplificou significativamente o back-end para melhorar o desempenho" + "pt-BR": "Back-end significativamente simplificado para melhorar o desempenho" } }, { @@ -1235,7 +1235,7 @@ "zh-TW": "通知(Toast)回歸螢幕右下角,自動避開懸浮按鈕組", "fr": "Les notifications reviennent dans le coin inférieur droit, en contournant les boutons flottants", "ru": "Уведомления (тосты) возвращены в правый нижний угол и больше не перекрывают плавающие кнопки действий", - "pt-BR": "As notificações (brindes) voltaram para o canto inferior direito, limpando os botões de ação flutuantes" + "pt-BR": "As notificações (toasts) voltaram ao canto inferior direito, deixando de sobrepor os botões de ação flutuantes" } }, { @@ -1357,7 +1357,7 @@ "zh-TW": "新增簡潔模式,隱藏每個模組的說明文字", "fr": "Ajout du mode simple, masque le texte de description de chaque module", "ru": "Добавлен простой режим, скрывающий описание каждого модуля", - "pt-BR": "Adicionado modo simples, oculta o texto de descrição de cada módulo" + "pt-BR": "Modo simples adicionado, ocultando o texto descritivo de cada módulo" } }, { @@ -1379,7 +1379,7 @@ "zh-TW": "最佳化了瀏覽器資訊工具,使其更加準確和實用", "fr": "Amélioration de l'outil d'informations sur le navigateur pour plus d'informations précises et pratiques", "ru": "Инструмент «Информация о браузере» улучшен для получения более точных и полезных сведений", - "pt-BR": "Ferramenta aprimorada de informações do navegador para informações mais precisas e práticas" + "pt-BR": "Ferramenta de Informações do Navegador aprimorada para fornecer informações mais precisas e úteis" } }, { @@ -1390,7 +1390,7 @@ "zh-TW": "修正了一些小問題", "fr": "Correction de petits problèmes", "ru": "Исправлены небольшие проблемы", - "pt-BR": "Corrigido alguns pequenos problemas" + "pt-BR": "Corrigidos alguns pequenos problemas" } } ] @@ -1407,7 +1407,7 @@ "zh-TW": "現在可以將 IP 卡片或 ASN 連線圖儲存為圖片", "fr": "Vous pouvez maintenant enregistrer les cartes IP ou le graphique de connectivité ASN en image", "ru": "Теперь карточку IP или граф связности ASN можно сохранить как изображение", - "pt-BR": "Agora você pode salvar o cartão IP ou o gráfico de conectividade ASN como imagem" + "pt-BR": "Agora é possível salvar o cartão de IP ou o gráfico de conectividade de ASN como imagem" } }, { @@ -1418,7 +1418,7 @@ "zh-TW": "最佳化網路連通性測試的品牌圖示", "fr": "Optimisation des icônes de marque du test de connectivité", "ru": "Обновлены значки брендов в проверке подключения", - "pt-BR": "Otimizou os ícones da marca do Teste de Conectividade" + "pt-BR": "Ícones de marca do Teste de Conectividade otimizados" } }, { @@ -1429,7 +1429,7 @@ "zh-TW": "豐富 WebRTC 測試和分流測試的資訊展示", "fr": "Amélioration de l'affichage des informations du test WebRTC et du test de règles", "ru": "Расширено отображение сведений в тесте WebRTC и тесте правил", - "pt-BR": "Enriquecida a exibição de informações do teste WebRTC e do teste de regras" + "pt-BR": "Exibição de informações do Teste WebRTC e do Teste de Regras enriquecida" } }, { @@ -1468,7 +1468,7 @@ "zh-TW": "新增「服務可用性」進階工具,即時展示知名 AI 服務的可用狀態", "fr": "Nouvel outil avancé : État des services, affichant la disponibilité en temps réel de services populaires", "ru": "Новый расширенный инструмент «Статус сервисов» показывает доступность популярных AI-сервисов в реальном времени", - "pt-BR": "Nova ferramenta avançada: status do serviço, mostrando a disponibilidade ao vivo de serviços populares de IA" + "pt-BR": "Nova ferramenta avançada: Status dos serviços, com disponibilidade em tempo real de serviços de IA populares" } }, { @@ -1490,7 +1490,7 @@ "zh-TW": "最佳化多處體驗,提升可用性", "fr": "Amélioration de multiples expériences pour améliorer l'utilisabilité", "ru": "Внесено несколько улучшений для повышения удобства использования", - "pt-BR": "Múltiplas experiências aprimoradas para melhorar a usabilidade" + "pt-BR": "Diversos aspectos da experiência do usuário aprimorados para facilitar o uso" } }, { @@ -1501,7 +1501,7 @@ "zh-TW": "修正一些問題", "fr": "Correction de petits problèmes", "ru": "Исправлены некоторые проблемы", - "pt-BR": "Corrigido alguns problemas" + "pt-BR": "Corrigidos alguns problemas" } } ] @@ -1518,7 +1518,7 @@ "zh-TW": "網路連通性測試可以設定多次重新整理,並顯示最小延遲值", "fr": "Le test de connectivité réseau peut maintenant être configuré pour plusieurs rafraîchissements et afficher la valeur de latence minimale", "ru": "Для проверки сетевого подключения теперь можно задать несколько повторных проверок и отображать минимальную задержку", - "pt-BR": "O teste de conectividade de rede agora pode ser configurado para múltiplas atualizações e exibir o valor mínimo de latência" + "pt-BR": "O teste de conectividade de rede agora pode ser configurado para realizar várias atualizações e exibir o menor valor de latência" } }, { @@ -1551,7 +1551,7 @@ "zh-TW": "首頁的所有模組現在可以個別控制是否自動執行", "fr": "Tous les modules de la page d'accueil peuvent maintenant être contrôlés individuellement pour déterminer s'ils doivent être exécutés automatiquement", "ru": "Для каждого модуля на главной странице теперь можно отдельно настроить автоматический запуск", - "pt-BR": "Todos os módulos na página inicial agora podem ser controlados individualmente para serem executados automaticamente" + "pt-BR": "Todos os módulos da página inicial agora podem ser configurados individualmente para execução automática" } }, { @@ -1562,7 +1562,7 @@ "zh-TW": "修正一些問題", "fr": "Correction de petits problèmes", "ru": "Исправлены некоторые проблемы", - "pt-BR": "Corrigido alguns problemas" + "pt-BR": "Corrigidos alguns problemas" } } ] @@ -1579,7 +1579,7 @@ "zh-TW": "測試結果可產生診斷報告並分享——自動過期的唯讀連結、AI 可讀的 Markdown 或 JSON", "fr": "Partagez vos résultats de test sous forme de rapport de diagnostic — lien en lecture seule à expiration automatique, Markdown prêt pour l'IA ou JSON", "ru": "Результатами тестов теперь можно делиться в виде диагностического отчёта — по ссылке только для чтения с автоматическим истечением срока, в формате Markdown для AI или JSON", - "pt-BR": "Compartilhe resultados de testes como um relatório de diagnóstico – link somente leitura com expiração automática, Markdown pronto para IA ou JSON" + "pt-BR": "Compartilhe resultados de testes como um relatório de diagnóstico — link somente para leitura com expiração automática, Markdown pronto para IA ou JSON" } }, { @@ -1601,7 +1601,7 @@ "zh-TW": "整合錯誤與效能監控,開發者可選擇啟用", "fr": "Intégration de la surveillance des erreurs et des performances, activable en option par les développeurs", "ru": "Добавлен мониторинг ошибок и производительности, который разработчики могут включить при необходимости", - "pt-BR": "Monitoramento integrado de erros e desempenho, opcional para desenvolvedores habilitarem" + "pt-BR": "Monitoramento de erros e desempenho integrado, com ativação opcional por desenvolvedores" } }, { @@ -1634,7 +1634,7 @@ "zh-TW": "IP 資訊來源鏈路發生故障時優雅降級", "fr": "La chaîne de sources IP se dégrade désormais en douceur en cas de panne", "ru": "Цепочка источников IP теперь корректно переключается на резервные источники при сбое", - "pt-BR": "A cadeia de origem de IP agora se degrada normalmente quando uma origem falha" + "pt-BR": "A cadeia de fontes de IP agora lida adequadamente com falhas de uma fonte" } }, { @@ -1645,7 +1645,7 @@ "zh-TW": "WebRTC 測試可偵測瀏覽器隱私強化情況", "fr": "Le test WebRTC peut désormais détecter le renforcement de la confidentialité du navigateur", "ru": "Тест WebRTC теперь выявляет усиленную защиту конфиденциальности браузера", - "pt-BR": "O teste WebRTC agora pode detectar o fortalecimento da privacidade do navegador" + "pt-BR": "O teste WebRTC agora pode detectar proteções de privacidade reforçadas do navegador" } }, { @@ -1656,7 +1656,7 @@ "zh-TW": "手機端 FAB 懸浮按鈕體驗最佳化", "fr": "Optimisation de l'expérience des boutons FAB sur mobile", "ru": "Улучшено использование кнопок FAB на мобильных устройствах", - "pt-BR": "Experiência otimizada do botão FAB móvel" + "pt-BR": "Experiência do botão FAB em dispositivos móveis aprimorada" } }, { @@ -1667,7 +1667,7 @@ "zh-TW": "網速測試在連線中途失敗時會顯示明確的錯誤狀態", "fr": "Le test de vitesse affiche désormais un état d'erreur clair lorsque la connexion échoue en cours d'exécution", "ru": "Тест скорости теперь явно показывает ошибку, если соединение обрывается во время выполнения", - "pt-BR": "O teste de velocidade agora mostra um estado de erro claro quando a conexão é interrompida no meio da execução" + "pt-BR": "O teste de velocidade agora mostra um estado de erro claro quando a conexão falha durante a execução" } }, { @@ -1706,7 +1706,7 @@ "zh-TW": "使用多種方式最佳化載入速度,提升 50%+", "fr": "Optimisation de la vitesse de chargement de 50%+", "ru": "Скорость загрузки повышена более чем на 50%", - "pt-BR": "Velocidade de carregamento otimizada em 50%+" + "pt-BR": "Velocidade de carregamento aprimorada em mais de 50%" } }, { @@ -1728,7 +1728,7 @@ "zh-TW": "提升本機 Maxmind 並行查詢能力", "fr": "Amélioration de la capacité de requête concurrente Maxmind locale", "ru": "Улучшена поддержка параллельных запросов к локальной базе MaxMind", - "pt-BR": "Capacidade aprimorada de consulta simultânea local do Maxmind" + "pt-BR": "Capacidade de consultas simultâneas à base MaxMind local aprimorada" } }, { @@ -1739,7 +1739,7 @@ "zh-TW": "修正 Whois 查詢工具無法查詢部分 IP 的錯誤", "fr": "Correction d'un bug qui empêchait la recherche de certains IP avec l'outil Whois", "ru": "Исправлен поиск Whois для некоторых IP-адресов", - "pt-BR": "Corrigido o Whois Search que não conseguia consultar alguns IPs" + "pt-BR": "Corrigido problema que impedia a Pesquisa Whois de consultar alguns IPs" } } ] @@ -1756,7 +1756,7 @@ "zh-TW": "全面重構封鎖測試,可以查詢一個網站在全球的封鎖情況和被封鎖手段", "fr": "Refonte complète du test de censure : découvrez où un site est bloqué dans le monde et par quels moyens", "ru": "Полностью переработана проверка цензуры: видно, где в мире сайт заблокирован и какими методами", - "pt-BR": "Reconstrução da verificação de censura: veja onde um site está bloqueado em todo o mundo e por que meios" + "pt-BR": "Verificação de censura reformulada: veja onde um site é bloqueado em todo o mundo e por quais meios" } }, { @@ -1767,7 +1767,7 @@ "zh-TW": "MTR 測試、全球延遲測試和封鎖測試支援從全球可用探針中依大洲自選國家/地區", "fr": "Les tests MTR, latence mondiale et censure permettent de choisir les pays parmi toutes les sondes Globalping disponibles, groupées par continent", "ru": "В тестах MTR, глобальной задержки и цензуры можно выбирать страны из всех доступных зондов Globalping, сгруппированных по континентам", - "pt-BR": "Os testes MTR, Latência Global e Censura agora permitem escolher países de todas as sondagens Globalping disponíveis, agrupadas por continente" + "pt-BR": "Os testes MTR, Latência Global e Censura agora permitem escolher países entre todas as sondas do Globalping disponíveis, agrupadas por continente" } }, { @@ -1789,7 +1789,7 @@ "zh-TW": "新增使用者與開發說明文件,包含工具使用說明、網路問題排查和自行部署指南", "fr": "Nouveau site de documentation pour les utilisateurs et les développeurs : guides des outils, dépannage réseau et auto-hébergement", "ru": "Новый сайт документации для пользователей и разработчиков: описания инструментов, диагностика сети и самостоятельный хостинг", - "pt-BR": "Novo site de documentação para usuários e desenvolvedores, com guias de ferramentas, solução de problemas de rede e documentos de auto-hospedagem" + "pt-BR": "Novo site de documentação para usuários e desenvolvedores, com guias de ferramentas, solução de problemas de rede e auto-hospedagem" } }, { @@ -1800,7 +1800,7 @@ "zh-TW": "提升「服務可用性」進階工具的穩定性", "fr": "Amélioration de la stabilité de l'outil Disponibilité des services", "ru": "Повышена стабильность инструмента «Статус сервисов»", - "pt-BR": "Melhorou a estabilidade da ferramenta Status do Serviço" + "pt-BR": "Estabilidade da ferramenta Status dos serviços aprimorada" } }, { @@ -1839,7 +1839,7 @@ "zh-TW": "網路連通性支援匯入內建測試列表:伊朗、俄羅斯、中國等國家合集,以及 AI、社群、串流影音、遊戲、開發者、雲端服務、加密貨幣交易所、新聞等主題合集", "fr": "Connectivité : importez des listes de tests prêtes à l'emploi — packs pays (Iran, Russie, Chine) et ensembles IA, réseaux sociaux, streaming, jeux, développeurs, cloud, crypto et actualités", "ru": "Проверка доступности: импорт готовых списков — наборы по странам (Иран, Россия, Китай), а также ИИ, соцсети, стриминг, игры, разработка, облака, криптобиржи и новости", - "pt-BR": "Conectividade: importe listas de testes selecionadas — pacotes de países (Irã, Rússia, China) além de IA, redes sociais, streaming, jogos, desenvolvedores, nuvem, criptografia e conjuntos de notícias" + "pt-BR": "Conectividade: importe listas de testes selecionadas — pacotes de países (Irã, Rússia, China), além de conjuntos de IA, redes sociais, streaming, jogos, desenvolvedores, nuvem, criptomoedas e notícias" } }, { @@ -1883,7 +1883,7 @@ "zh-TW": "最佳化了一些程式邏輯,提高程式碼複用率", "fr": "Optimisation de certaines logiques de programmation pour augmenter le taux de réutilisation du code", "ru": "Оптимизация некоторых логических программ для повышения коэффициента повторного использования кода", - "pt-BR": "Otimizou alguma lógica do programa para aumentar a taxa de reutilização de código" + "pt-BR": "Lógica do programa otimizada para aumentar a reutilização do código" } }, { @@ -1894,7 +1894,7 @@ "zh-TW": "修正了一些問題", "fr": "Correction de petits problèmes", "ru": "Исправлены некоторые проблемы", - "pt-BR": "Corrigido alguns problemas" + "pt-BR": "Corrigidos alguns problemas" } } ] @@ -1911,7 +1911,7 @@ "zh-TW": "新增工具:深度畫像檢測——看看網站能讀到的資訊,有多少和你想被當成的國家對得上", "fr": "Nouvel outil : Vérification de persona approfondie — voyez dans quelle mesure ce que lisent les sites correspond au pays pour lequel vous voulez passer", "ru": "Новый инструмент: углублённая проверка портрета — насколько то, что видят сайты, совпадает со страной, за жителя которой вы хотите себя выдавать", - "pt-BR": "Nova ferramenta: verificação detalhada de personalidade – veja quanto do que os sites lêem concorda com o país para o qual você deseja ser levado" + "pt-BR": "Nova ferramenta: Verificação aprofundada de persona — veja em que medida o que os sites leem corresponde ao país cuja identidade você deseja apresentar" } }, { @@ -1922,7 +1922,7 @@ "zh-TW": "網路連通性測試可刪除預設網站、新增國際電商平台、巴西常用網站匯入列表", "fr": "Connectivité : les sites prédéfinis sont désormais supprimables, avec de nouvelles listes importables « E-commerce mondial » et « Essentiels Brésil »", "ru": "Проверка доступности: предустановленные сайты теперь можно удалять, добавлены импортируемые списки «Электронная коммерция» и «Бразилия: основные»", - "pt-BR": "Conectividade: sites predefinidos agora são removíveis, além de novas listas de importação Global E-commerce e Brazil Essentials" + "pt-BR": "Conectividade: sites predefinidos agora podem ser removidos, além das novas listas de importação Global E-commerce e Brazil Essentials" } }, { @@ -1933,7 +1933,7 @@ "zh-TW": "使用精美的長條圖展示多次重新整理模式下的網路連通性測試結果", "fr": "Connectivité : les résultats des tests multi-passes s'affichent désormais en élégantes barres de latence", "ru": "Проверка доступности: результаты многократных тестов теперь отображаются изящными столбиками задержки", - "pt-BR": "Conectividade: os resultados dos testes multi-round agora são renderizados como lindas barras de latência" + "pt-BR": "Conectividade: resultados de testes em várias rodadas agora são exibidos como barras de latência claras" } }, { @@ -1944,7 +1944,7 @@ "zh-TW": "最佳化了多個地方的使用者體驗", "fr": "Optimisation de l'expérience utilisateur dans plusieurs endroits", "ru": "Оптимизация пользовательского опыта в нескольких местах", - "pt-BR": "Experiência de múltiplos usuários otimizada" + "pt-BR": "Diversos aspectos da experiência do usuário otimizados" } }, { @@ -1955,7 +1955,7 @@ "zh-TW": "最佳化多處日期格式顯示", "fr": "Optimisation de l'affichage des dates dans plusieurs endroits", "ru": "Оптимизация отображения дат в нескольких местах", - "pt-BR": "Exibição de data otimizada em vários lugares" + "pt-BR": "Exibição de datas otimizada em vários pontos" } }, { @@ -1966,7 +1966,7 @@ "zh-TW": "修正了一些問題", "fr": "Correction de petits problèmes", "ru": "Исправлены некоторые проблемы", - "pt-BR": "Corrigido alguns problemas" + "pt-BR": "Corrigidos alguns problemas" } } ] @@ -1983,7 +1983,7 @@ "zh-TW": "為開發者:重構多國語言架構,新增語言變得更容易", "fr": "Pour les développeurs : refonte de l'architecture multi-langue, rendant plus facile l'ajout de nouvelles langues", "ru": "Для разработчиков: переработана архитектура многоязычности, чтобы было легче добавлять новые языки", - "pt-BR": "Para desenvolvedores: refatorou a arquitetura multilíngue, facilitando a adição de novos idiomas" + "pt-BR": "Para desenvolvedores: arquitetura multilíngue refatorada, facilitando a adição de novos idiomas" } }, { @@ -1994,7 +1994,7 @@ "zh-TW": "為開發者:新增 Section 推廣位,可以依需要在不同的 Section 增加推廣內容", "fr": "Pour les développeurs : ajout de slots promotionnels par section, permettant d'ajouter du contenu promotionnel dans différentes sections selon les besoins", "ru": "Для разработчиков: добавлены слоты продвижения, чтобы можно было добавлять продвижение в разные секции в зависимости от потребностей", - "pt-BR": "Para desenvolvedores: slots de promoção de seção adicionados, pode adicionar conteúdo promocional em diferentes seções conforme necessário" + "pt-BR": "Para desenvolvedores: slots de promoção por seção adicionados; conteúdo promocional pode ser inserido onde necessário" } }, { @@ -2027,7 +2027,7 @@ "zh-TW": "修正了一些問題", "fr": "Correction de divers problèmes", "ru": "Исправлены некоторые проблемы", - "pt-BR": "Corrigido alguns problemas" + "pt-BR": "Corrigidos alguns problemas" } } ] diff --git a/frontend/locales/security-checklist/pt-BR.json b/frontend/locales/security-checklist/pt-BR.json index 6fe5ccf2e..d0ac7a01b 100644 --- a/frontend/locales/security-checklist/pt-BR.json +++ b/frontend/locales/security-checklist/pt-BR.json @@ -166,7 +166,7 @@ { "point": "Use um mecanismo de pesquisa privado", "priority": "Essential", - "details": "Usar um mecanismo de pesquisa que preserva a privacidade e não rastreia reduzirá o risco de que seus termos de pesquisa não sejam registrados ou usados ​​contra você. Considere [DuckDuckGo](https://awesome-privacy.xyz/essentials/search-engines/duckduckgo) ou [Qwant](https://awesome-privacy.xyz/essentials/search-engines/qwant). O Google implementa algumas políticas de rastreamento [incrivelmente invasivas](https://hackernoon.com/data-privacy-concerns-with-google-b946f2b7afea) e tem um histórico de exibição de [resultados de pesquisa tendenciosos](https://www.businessinsider.com/evidence-that-google-search-results-are-biased-2014-10). Portanto, o Google, juntamente com o Bing, o Baidu, o Yahoo e o Yandex, são incompatíveis com qualquer pessoa que pretenda proteger a sua privacidade. Recomenda-se atualizar sua [pesquisa padrão do navegador](https://duckduckgo.com/install) para um mecanismo de pesquisa que respeite a privacidade.", + "details": "Usar um mecanismo de pesquisa que preserva a privacidade e não rastreia reduzirá o risco de que seus termos de pesquisa não sejam registrados ou usados contra você. Considere [DuckDuckGo](https://awesome-privacy.xyz/essentials/search-engines/duckduckgo) ou [Qwant](https://awesome-privacy.xyz/essentials/search-engines/qwant). O Google implementa algumas políticas de rastreamento [incrivelmente invasivas](https://hackernoon.com/data-privacy-concerns-with-google-b946f2b7afea) e tem um histórico de exibição de [resultados de pesquisa tendenciosos](https://www.businessinsider.com/evidence-that-google-search-results-are-biased-2014-10). Portanto, o Google, juntamente com o Bing, o Baidu, o Yahoo e o Yandex, são incompatíveis com qualquer pessoa que pretenda proteger a sua privacidade. Recomenda-se atualizar sua [pesquisa padrão do navegador](https://duckduckgo.com/install) para um mecanismo de pesquisa que respeite a privacidade.", "slug": "web-browsing-use-a-private-search-engine" }, { @@ -190,7 +190,7 @@ { "point": "Use DNS sobre HTTPS", "priority": "Essential", - "details": "O DNS tradicional faz solicitações em texto simples para que todos possam ver. Ele permite a espionagem e manipulação de dados DNS por meio de ataques man-in-the-middle. Enquanto o DNS sobre HTTPS realiza a resolução de DNS por meio do protocolo HTTPS, o que significa que os dados entre você e seu resolvedor de DNS são criptografados. Uma opção popular é [1.1.1.1](https://awesome-privacy.xyz/security-tools/mobile-apps/1.1.1.1) do [CloudFlare](https://awesome-privacy.xyz/networking/dns-providers/cloudflare) ou compare provedores - é simples de ativar no navegador. Observe que o DoH tem seus próprios problemas, principalmente impedindo a filtragem da web.", + "details": "O DNS tradicional envia consultas em texto simples, visíveis a qualquer pessoa. Isso permite espionagem e manipulação de dados de DNS por ataques man-in-the-middle. Já o DNS sobre HTTPS (DoH) realiza a resolução por HTTPS, criptografando os dados entre você e seu resolvedor de DNS. O [1.1.1.1](https://awesome-privacy.xyz/security-tools/mobile-apps/1.1.1.1) da [Cloudflare](https://awesome-privacy.xyz/networking/dns-providers/cloudflare) é uma opção popular, mas vale comparar provedores; a ativação no navegador é simples. Observe, porém, que o DoH também tem limitações, sobretudo por dificultar a filtragem da web.", "slug": "web-browsing-use-dns-over-https" }, { @@ -232,7 +232,7 @@ { "point": "Cuidado com redirecionamentos", "priority": "Optional", - "details": "Embora alguns redirecionamentos sejam inofensivos, outros, como os redirecionamentos não validados, são usados ​​em ataques de phishing, podendo fazer com que um link malicioso pareça legítimo. Se não tiver certeza sobre um URL de redirecionamento, você pode verificar para onde ele encaminha com uma ferramenta como o RedirectDetective.", + "details": "Embora alguns redirecionamentos sejam inofensivos, outros, como os redirecionamentos não validados, são usados em ataques de phishing, podendo fazer com que um link malicioso pareça legítimo. Se não tiver certeza sobre um URL de redirecionamento, você pode verificar para onde ele encaminha com uma ferramenta como o RedirectDetective.", "slug": "web-browsing-beware-of-redirects" }, { @@ -384,7 +384,7 @@ { "point": "Ter mais de um endereço de e-mail", "priority": "Essential", - "details": "Considere usar um endereço de e-mail diferente para comunicações críticas de segurança de e-mails triviais, como boletins informativos. Esta compartimentação poderia reduzir a quantidade de danos causados ​​por uma violação de dados e também facilitar a recuperação de uma conta comprometida.", + "details": "Considere usar um endereço de e-mail diferente para comunicações críticas de segurança de e-mails triviais, como boletins informativos. Esta compartimentação poderia reduzir a quantidade de danos causados por uma violação de dados e também facilitar a recuperação de uma conta comprometida.", "slug": "email-have-more-than-one-email-address" }, { @@ -474,7 +474,7 @@ { "point": "Sempre use portas TLS", "priority": "Advanced", - "details": "Existem opções SSL para POP3, IMAP e SMTP como portas TCP/IP padrão. Eles são fáceis de usar e têm amplo suporte, portanto devem sempre ser usados ​​em vez de portas de e-mail de texto simples.", + "details": "Existem opções SSL para POP3, IMAP e SMTP como portas TCP/IP padrão. Eles são fáceis de usar e têm amplo suporte, portanto devem sempre ser usados em vez de portas de e-mail de texto simples.", "slug": "email-always-use-tls-ports" }, { @@ -658,7 +658,7 @@ { "point": "Pense em todas as interações como permanentes", "priority": "Essential", - "details": "Praticamente todas as postagens, comentários, fotos, etc., são continuamente apoiados por uma infinidade de serviços de terceiros, que arquivam esses dados e os tornam indexáveis ​​e disponíveis publicamente quase para sempre.", + "details": "Praticamente todas as postagens, comentários, fotos, etc., são continuamente apoiados por uma infinidade de serviços de terceiros, que arquivam esses dados e os tornam indexáveis e disponíveis publicamente quase para sempre.", "slug": "social-media-think-of-all-interactions-as-permanent" }, { @@ -798,7 +798,7 @@ { "point": "Altere o endereço IP local do roteador", "priority": "Optional", - "details": "É possível que um script malicioso em seu navegador explore uma vulnerabilidade de script entre sites, acessando roteadores vulneráveis ​​conhecidos em seus endereços IP locais e adulterando-os.", + "details": "É possível que um script malicioso em seu navegador explore uma vulnerabilidade de script entre sites, acessando roteadores vulneráveis conhecidos em seus endereços IP locais e adulterando-os.", "slug": "networks-change-the-routers-local-ip-address" }, { @@ -864,7 +864,7 @@ { "point": "Desative o gerenciamento baseado em nuvem", "priority": "Optional", - "details": "Você deve tratar o painel de administração do seu roteador com o máximo cuidado, pois danos consideráveis ​​podem ser causados ​​se um invasor conseguir obter acesso.", + "details": "Você deve tratar o painel de administração do seu roteador com o máximo cuidado, pois danos consideráveis podem ser causados se um invasor conseguir obter acesso.", "slug": "networks-disable-cloud-based-management" }, { @@ -890,8 +890,8 @@ { "title": "Dispositivos móveis", "slug": "mobile-devices", - "description": "Reduza o rastreamento invasivo para células, smartphones e tablets", - "intro": "Os smartphones revolucionaram muitos aspectos da vida e trouxeram o mundo ao nosso alcance. Para muitos de nós, os smartphones são o principal meio de comunicação, entretenimento e acesso ao conhecimento. Mas embora eles tenham levado a conveniência a um nível totalmente novo, há algumas coisas horríveis acontecendo por trás da tela.\nO rastreamento geográfico é usado para rastrear todos os nossos movimentos e temos pouco controle sobre quem possui esses dados – seu telefone é capaz até de [rastrear sua localização sem GPS](https://gizmodo.com/how-to-track-a-cellphone-without-gps-or-consent-1821125371). Ao longo dos anos, surgiram vários relatórios, descrevendo maneiras pelas quais o [microfone pode escutar](https://www.independent.co.uk/life-style/gadgets-and-tech/news/smartphone-apps-listening-privacy-alphonso-shazam-advertising-pool-3d-honey-quest-a8139451.html) e a [câmera pode observar você](https://www.businessinsider.com/hackers-governments-smartphone-iphone-camera-wikileaks-cybersecurity-hack-privacy-webcam-2017-6) do seu telefone - tudo sem o seu conhecimento ou consentimento. E há também os aplicativos maliciosos, a falta de patches de segurança e backdoors potenciais/prováveis.\nUsar um smartphone gera muitos dados sobre você – desde informações que você compartilha intencionalmente até dados gerados silenciosamente a partir de suas ações. Pode ser assustador ver o que o Google, a Microsoft, a Apple e o Facebook sabem sobre nós – às vezes eles sabem mais do que a nossa família mais próxima. É difícil compreender o que os seus dados revelarão, especialmente em conjunto com outros dados.\nEsses dados são usados ​​para [muito mais do que apenas publicidade](https://internethealthreport.org/2018/the-good-the-bad-and-the-ugly-sides-of-data-tracking/) - mais frequentemente, são usados ​​para avaliar pessoas em finanças, seguros e emprego. Anúncios direcionados podem até ser usados para vigilância refinada (consulte [ADINT](https://adint.cs.washington.edu))\nMuitos de nós estamos preocupados sobre como [os governos coletam e usam nossos dados de smartphones](https://www.statista.com/statistics/373916/global-opinion-online-monitoring-government/) e, com razão, as agências federais frequentemente [solicitam nossos dados ao Google](https://www.statista.com/statistics/273501/global-data-requests-from-google-by-federal-agencies-and-governments/), [Facebook](https://www.statista.com/statistics/287845/global-data-requests-from-facebook-by-federal-agencies-and-governments/), Apple, Microsoft, Amazon e outras empresas de tecnologia. Às vezes, as solicitações são feitas em massa, retornando informações detalhadas sobre todos dentro de uma determinada cerca geográfica, [muitas vezes para pessoas inocentes.pessoas](https://www.nytimes.com/interactive/2019/04/13/us/google-location-tracking-police.html). E isto não inclui todo o tráfego da Internet ao qual as agências de inteligência de todo o mundo têm acesso irrestrito.", + "description": "Reduza o rastreamento invasivo em celulares, smartphones e tablets", + "intro": "Os smartphones revolucionaram muitos aspectos da vida e trouxeram o mundo ao nosso alcance. Para muitos de nós, os smartphones são o principal meio de comunicação, entretenimento e acesso ao conhecimento. Mas embora eles tenham levado a conveniência a um nível totalmente novo, há algumas coisas horríveis acontecendo por trás da tela.\nO rastreamento geográfico é usado para rastrear todos os nossos movimentos e temos pouco controle sobre quem possui esses dados – seu telefone é capaz até de [rastrear sua localização sem GPS](https://gizmodo.com/how-to-track-a-cellphone-without-gps-or-consent-1821125371). Ao longo dos anos, surgiram vários relatórios, descrevendo maneiras pelas quais o [microfone pode escutar](https://www.independent.co.uk/life-style/gadgets-and-tech/news/smartphone-apps-listening-privacy-alphonso-shazam-advertising-pool-3d-honey-quest-a8139451.html) e a [câmera pode observar você](https://www.businessinsider.com/hackers-governments-smartphone-iphone-camera-wikileaks-cybersecurity-hack-privacy-webcam-2017-6) do seu telefone - tudo sem o seu conhecimento ou consentimento. E há também os aplicativos maliciosos, a falta de patches de segurança e backdoors potenciais/prováveis.\nUsar um smartphone gera muitos dados sobre você – desde informações que você compartilha intencionalmente até dados gerados silenciosamente a partir de suas ações. Pode ser assustador ver o que o Google, a Microsoft, a Apple e o Facebook sabem sobre nós – às vezes eles sabem mais do que a nossa família mais próxima. É difícil compreender o que os seus dados revelarão, especialmente em conjunto com outros dados.\nEsses dados são usados para [muito mais do que apenas publicidade](https://internethealthreport.org/2018/the-good-the-bad-and-the-ugly-sides-of-data-tracking/) - mais frequentemente, são usados para avaliar pessoas em finanças, seguros e emprego. Anúncios direcionados podem até ser usados para vigilância refinada (consulte [ADINT](https://adint.cs.washington.edu))\nMuitos de nós estamos preocupados sobre como [os governos coletam e usam nossos dados de smartphones](https://www.statista.com/statistics/373916/global-opinion-online-monitoring-government/) e, com razão, as agências federais frequentemente [solicitam nossos dados ao Google](https://www.statista.com/statistics/273501/global-data-requests-from-google-by-federal-agencies-and-governments/), [Facebook](https://www.statista.com/statistics/287845/global-data-requests-from-facebook-by-federal-agencies-and-governments/), Apple, Microsoft, Amazon e outras empresas de tecnologia. Às vezes, as solicitações são feitas em massa, retornando informações detalhadas sobre todos dentro de uma determinada cerca geográfica, [inclusive pessoas inocentes](https://www.nytimes.com/interactive/2019/04/13/us/google-location-tracking-police.html). E isto não inclui todo o tráfego da Internet ao qual as agências de inteligência de todo o mundo têm acesso irrestrito.", "checklist": [ { "point": "Criptografe seu dispositivo", @@ -1240,7 +1240,7 @@ { "point": "Implementar controle de acesso obrigatório", "priority": "Advanced", - "details": "Restrinja o acesso privilegiado para limitar os danos que podem ser causados ​​se um sistema for comprometido.", + "details": "Restrinja o acesso privilegiado para limitar os danos que podem ser causados se um sistema for comprometido.", "slug": "personal-computers-implement-mandatory-access-control" }, { @@ -1314,7 +1314,7 @@ { "point": "Mitigar os riscos do Alexa/Google Home", "priority": "Optional", - "details": "Considere alternativas focadas na privacidade, como [Mycroft](https://awesome-privacy.xyz/smart-home-and-iot/voice-assistants/mycroft) ou use o Project Alias ​​para evitar a escuta ociosa por assistentes ativados por voz.", + "details": "Considere alternativas focadas na privacidade, como [Mycroft](https://awesome-privacy.xyz/smart-home-and-iot/voice-assistants/mycroft) ou use o Project Alias para evitar a escuta ociosa por assistentes ativados por voz.", "slug": "smart-home-mitigate-alexa-google-home-risks" }, { @@ -1341,7 +1341,7 @@ "title": "Finanças Pessoais", "slug": "personal-finance", "description": "Protegendo seus fundos, contas financeiras e transações", - "intro": "A fraude de cartão de crédito é a forma mais comum de roubo de identidade (com [133.015 relatos apenas nos EUA em 2017](https://www.experian.com/blogs/ask-experian/identity-theft-statistics/)) e uma perda total de US$ 905 milhões, o que representou um aumento de 26% em relação ao ano anterior. O valor médio perdido por pessoa foi de US$ 429 em 2017. É mais importante do que nunca tomar medidas básicas para se proteger de ser vítima\nObservação sobre cartões de crédito: Os cartões de crédito possuem métodos tecnológicos para detectar e impedir algumas transações fraudulentas. Os principais processadores de pagamentos implementam isso, extraindo enormes quantidades de dados dos titulares de seus cartões, a fim de saber muito sobre os hábitos de consumo de cada pessoa. Esses dados são usados ​​para identificar fraudes, mas também são vendidos a outros corretores de dados. Os cartões de crédito são, portanto, bons para a segurança, mas terríveis para a privacidade dos dados.", + "intro": "A fraude de cartão de crédito é a forma mais comum de roubo de identidade (com [133.015 relatos apenas nos EUA em 2017](https://www.experian.com/blogs/ask-experian/identity-theft-statistics/)) e uma perda total de US$ 905 milhões, o que representou um aumento de 26% em relação ao ano anterior. O valor médio perdido por pessoa foi de US$ 429 em 2017. É mais importante do que nunca tomar medidas básicas para se proteger de ser vítima\nObservação sobre cartões de crédito: Os cartões de crédito possuem métodos tecnológicos para detectar e impedir algumas transações fraudulentas. Os principais processadores de pagamentos implementam isso, extraindo enormes quantidades de dados dos titulares de seus cartões, a fim de saber muito sobre os hábitos de consumo de cada pessoa. Esses dados são usados para identificar fraudes, mas também são vendidos a outros corretores de dados. Os cartões de crédito são, portanto, bons para a segurança, mas terríveis para a privacidade dos dados.", "checklist": [ { "point": "Inscreva-se para receber alertas de fraude e monitoramento de crédito", @@ -1350,7 +1350,7 @@ "slug": "personal-finance-sign-up-for-fraud-alerts-and-credit-monitoring" }, { - "point": "Aplicar um congelamento de crédito", + "point": "Congele seu crédito", "priority": "Essential", "details": "Evite consultas de crédito não autorizadas congelando seu crédito por meio da Experian, TransUnion e Equifax.", "slug": "personal-finance-apply-a-credit-freeze" @@ -1374,13 +1374,13 @@ "slug": "personal-finance-use-cryptocurrency-for-online-transactions" }, { - "point": "Armazene criptografia com segurança", + "point": "Armazene criptomoedas com segurança", "priority": "Advanced", "details": "Armazene criptomoedas com segurança usando geração de carteira offline, carteiras de hardware como [Trezor](https://awesome-privacy.xyz/finance/crypto-wallets/trezor) ou [ColdCard](https://awesome-privacy.xyz/finance/crypto-wallets/coldcard), ou considere soluções de armazenamento de longo prazo como [CryptoSteel](https://awesome-privacy.xyz/finance/crypto-wallets/cryptosteel).", "slug": "personal-finance-store-crypto-securely" }, { - "point": "Compre criptografia anonimamente", + "point": "Compre criptomoedas de forma anônima", "priority": "Advanced", "details": "Compre criptomoedas sem vincular à sua identidade por meio de serviços como [LocalBitcoins](https://awesome-privacy.xyz/finance/crypto-exchanges/localbitcoins), [Bisq](https://awesome-privacy.xyz/finance/crypto-exchanges/bisq) ou caixas eletrônicos Bitcoin.", "slug": "personal-finance-buy-crypto-anonymously" @@ -1409,7 +1409,7 @@ "title": "Aspecto Humano", "slug": "human-aspect", "description": "Evitando riscos de segurança de engenharia social", - "intro": "Muitas violações de dados, hacks e ataques são causados ​​por erro humano. A lista a seguir contém etapas que você deve seguir para reduzir o risco de isso acontecer com você. Muitos deles são de bom senso, mas vale a pena anotá-los.", + "intro": "Muitas violações de dados, hacks e ataques são causados por erro humano. A lista a seguir contém etapas que você deve seguir para reduzir o risco de isso acontecer com você. Muitos deles são de bom senso, mas vale a pena anotá-los.", "checklist": [ { "point": "Verifique os destinatários", @@ -1534,7 +1534,7 @@ { "point": "Use métodos de pagamento anônimos", "priority": "Advanced", - "details": "Opte por métodos de pagamento anônimos, como criptomoedas, para evitar inserir informações identificáveis ​​online.", + "details": "Opte por métodos de pagamento anônimos, como criptomoedas, para evitar inserir informações identificáveis online.", "slug": "human-aspect-use-anonymous-payment-methods" } ] From abb91611a3b15484086753207bdbaa5c68f393fa Mon Sep 17 00:00:00 2001 From: jason5ng32 Date: Tue, 25 Aug 2026 10:57:54 +0800 Subject: [PATCH 05/13] Improvements --- .github/ISSUE_TEMPLATE/config.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index d17aacd1d..cbffa2dec 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -3,9 +3,6 @@ contact_links: - name: 📖 Documentation url: https://docs.ipcheck.ing about: Deployment, MaxMind setup, environment variables, and how each tool works. - - name: 💬 Questions & help - url: https://github.com/jason5ng32/MyIP/discussions/categories/q-a - about: Setup help, "why does my result look like this", and anything that isn't a bug. - name: 🔒 Report a security vulnerability url: https://github.com/jason5ng32/MyIP/security/advisories/new about: Private report, visible only to the maintainer. Please don't open a public issue. From 0449c22e29231493b5341ba821288cee54e598d6 Mon Sep 17 00:00:00 2001 From: fly1d <309400591+fly1d@users.noreply.github.com> Date: Tue, 25 Aug 2026 11:27:34 +0800 Subject: [PATCH 06/13] Feat(dns): add DNS.SB resolver Add DNS.SB as a verified EU resolver with UDP and JSON DoH endpoints for #392. OpenAI Codex assisted with issue review, verification, implementation, and tests. --- api/data/dns-resolvers.js | 1 + 1 file changed, 1 insertion(+) diff --git a/api/data/dns-resolvers.js b/api/data/dns-resolvers.js index 78cd92e91..051125624 100644 --- a/api/data/dns-resolvers.js +++ b/api/data/dns-resolvers.js @@ -51,4 +51,5 @@ export const DNS_RESOLVERS = [ { id: 'giga', name: 'GIGA', country: 'TW', udp: '203.133.1.6' }, { id: 'dns4eu', name: 'DNS4EU', country: 'EU', udp: '86.54.11.1' }, { id: 'cznic', name: 'CZ.NIC ODVR', country: 'CZ', udp: '193.17.47.1' }, + { id: 'dnssb', name: 'DNS.SB', country: 'EU', udp: '185.222.222.222', doh: 'https://doh.dns.sb/dns-query?' }, ]; From 64337843090c60f37b3a6bc63dd2a191dc48902a Mon Sep 17 00:00:00 2001 From: jason5ng32 Date: Tue, 25 Aug 2026 19:42:02 +0800 Subject: [PATCH 07/13] Fix(ui): keep country-picker sticky tally flush once results render sticky top-0 resolves against the scroll container's content box and never covers the container's own padding, so the results-state layout (where the padded wrapper itself became the scroll container) pushed the tally down by py-3. Split overflow and padding into separate layers so the scroll container is always padding-free, in all three Globalping-backed tools. Co-Authored-By: Claude Fable 5 --- .../advanced-tools/CensorshipCheck.vue | 18 ++++++++++-------- .../advanced-tools/GlobalLatencyTest.vue | 19 +++++++++++-------- .../components/advanced-tools/MtrTest.vue | 18 ++++++++++-------- 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/frontend/components/advanced-tools/CensorshipCheck.vue b/frontend/components/advanced-tools/CensorshipCheck.vue index e964227f9..bb468fc04 100644 --- a/frontend/components/advanced-tools/CensorshipCheck.vue +++ b/frontend/components/advanced-tools/CensorshipCheck.vue @@ -104,14 +104,16 @@
-
-
- + the picker's own continent catalog. Scroll container + stays padding-free (sticky top-0 can't cover a + scroll container's own padding) --> +
+
+
+ +
diff --git a/frontend/components/advanced-tools/GlobalLatencyTest.vue b/frontend/components/advanced-tools/GlobalLatencyTest.vue index 257e60e29..64d7fd34f 100644 --- a/frontend/components/advanced-tools/GlobalLatencyTest.vue +++ b/frontend/components/advanced-tools/GlobalLatencyTest.vue @@ -73,14 +73,17 @@ results exist the column caps its own height; once the right column has content, an absolutely-positioned inner wrapper makes the picker exactly as tall as the results - (the row height comes from the right column alone) --> -
-
- + (the row height comes from the right column alone). + The scroll container stays padding-free — sticky top-0 + can't cover a scroll container's own padding, so the + px-4 py-3 lives one level further in --> +
+
+
+ +
diff --git a/frontend/components/advanced-tools/MtrTest.vue b/frontend/components/advanced-tools/MtrTest.vue index 1f68740ac..87919cec8 100644 --- a/frontend/components/advanced-tools/MtrTest.vue +++ b/frontend/components/advanced-tools/MtrTest.vue @@ -70,14 +70,16 @@
- -
-
- + +
+
+
+ +
From 70370ade019616d14a501bd3dfa1d2599c91d343 Mon Sep 17 00:00:00 2001 From: 9anna Date: Tue, 25 Aug 2026 20:14:47 +0800 Subject: [PATCH 08/13] Feat(connectivity): add productivity import list Add a curated Work & Productivity preset with 12 globally unique HTTPS targets, committed favicons, and locale labels. Refs #404. Co-authored-by: OpenAI Codex --- frontend/data/connectivity-import-lists.js | 18 ++++++++++++++++++ frontend/locales/en.json | 1 + frontend/locales/fr.json | 1 + frontend/locales/pt-BR.json | 1 + frontend/locales/ru.json | 1 + frontend/locales/zh-TW.json | 1 + frontend/locales/zh.json | 1 + public/favicons/airtable.png | Bin 0 -> 1312 bytes public/favicons/asana.png | Bin 0 -> 1950 bytes public/favicons/canva.png | Bin 0 -> 1138 bytes public/favicons/clickup.png | Bin 0 -> 1049 bytes public/favicons/dropbox.png | Bin 0 -> 1379 bytes public/favicons/figma.png | Bin 0 -> 1244 bytes public/favicons/linear.png | Bin 0 -> 901 bytes public/favicons/miro.png | Bin 0 -> 783 bytes public/favicons/notion.png | Bin 0 -> 1511 bytes public/favicons/slack.png | Bin 0 -> 927 bytes public/favicons/trello.png | Bin 0 -> 369 bytes public/favicons/zoom.png | Bin 0 -> 1575 bytes 19 files changed, 24 insertions(+) create mode 100644 public/favicons/airtable.png create mode 100644 public/favicons/asana.png create mode 100644 public/favicons/canva.png create mode 100644 public/favicons/clickup.png create mode 100644 public/favicons/dropbox.png create mode 100644 public/favicons/figma.png create mode 100644 public/favicons/linear.png create mode 100644 public/favicons/miro.png create mode 100644 public/favicons/notion.png create mode 100644 public/favicons/slack.png create mode 100644 public/favicons/trello.png create mode 100644 public/favicons/zoom.png diff --git a/frontend/data/connectivity-import-lists.js b/frontend/data/connectivity-import-lists.js index 751e12fc2..caf8b38e2 100644 --- a/frontend/data/connectivity-import-lists.js +++ b/frontend/data/connectivity-import-lists.js @@ -184,6 +184,24 @@ export const IMPORT_LISTS = [ { id: 'snapchat', name: 'Snapchat', url: 'https://www.snapchat.com/favicon.ico' }, ], }, + { + id: 'productivity', + emoji: '💼', + members: [ + { id: 'notion', name: 'Notion', url: 'https://www.notion.so/front-static/favicon.ico' }, + { id: 'slack', name: 'Slack', url: 'https://slack.com/favicon.ico' }, + { id: 'zoom', name: 'Zoom', url: 'https://zoom.us/favicon.ico' }, + { id: 'figma', name: 'Figma', url: 'https://static.figma.com/app/icon/2/favicon.ico', iconDomain: 'www.figma.com' }, + { id: 'trello', name: 'Trello', url: 'https://trello.com/favicon.ico' }, + { id: 'asana', name: 'Asana', url: 'https://asana.com/favicon.ico' }, + { id: 'dropbox', name: 'Dropbox', url: 'https://cfl.dropboxstatic.com/static/metaserver/static/images/favicon.ico', iconDomain: 'www.dropbox.com' }, + { id: 'canva', name: 'Canva', url: 'https://www.canva.com/favicon.ico' }, + { id: 'miro', name: 'Miro', url: 'https://miro.com/favicon.ico' }, + { id: 'airtable', name: 'Airtable', url: 'https://airtable.com/favicon.ico' }, + { id: 'linear', name: 'Linear', url: 'https://linear.app/favicon.ico' }, + { id: 'clickup', name: 'ClickUp', url: 'https://clickup.com/favicon.ico' }, + ], + }, { id: 'streaming', emoji: '🎬', diff --git a/frontend/locales/en.json b/frontend/locales/en.json index e4917c208..0bbf4cecb 100644 --- a/frontend/locales/en.json +++ b/frontend/locales/en.json @@ -1240,6 +1240,7 @@ "brazil": "Brazil Essentials", "ai": "AI Services", "social": "Social & Messaging", + "productivity": "Work & Productivity", "streaming": "Streaming", "gaming": "Gaming", "developer": "Developer", diff --git a/frontend/locales/fr.json b/frontend/locales/fr.json index c9c7ffa2b..b2ce4fceb 100644 --- a/frontend/locales/fr.json +++ b/frontend/locales/fr.json @@ -1240,6 +1240,7 @@ "brazil": "Essentiels Brésil", "ai": "Services IA", "social": "Réseaux sociaux", + "productivity": "Travail et productivité", "streaming": "Streaming", "gaming": "Jeux vidéo", "developer": "Développeurs", diff --git a/frontend/locales/pt-BR.json b/frontend/locales/pt-BR.json index 17a230941..e2b786fbe 100644 --- a/frontend/locales/pt-BR.json +++ b/frontend/locales/pt-BR.json @@ -1240,6 +1240,7 @@ "brazil": "Essenciais do Brasil", "ai": "Serviços de IA", "social": "Redes sociais e mensagens", + "productivity": "", "streaming": "Streaming", "gaming": "Jogos", "developer": "Desenvolvimento", diff --git a/frontend/locales/ru.json b/frontend/locales/ru.json index 6ee0ce8a3..dbe4e7ea8 100644 --- a/frontend/locales/ru.json +++ b/frontend/locales/ru.json @@ -1240,6 +1240,7 @@ "brazil": "Бразилия: основные", "ai": "ИИ-сервисы", "social": "Соцсети", + "productivity": "Работа и продуктивность", "streaming": "Стриминг", "gaming": "Игровые платформы", "developer": "Для разработчиков", diff --git a/frontend/locales/zh-TW.json b/frontend/locales/zh-TW.json index 79f8be83a..41b5bfe56 100644 --- a/frontend/locales/zh-TW.json +++ b/frontend/locales/zh-TW.json @@ -1240,6 +1240,7 @@ "brazil": "巴西常用", "ai": "AI 服務", "social": "社交通訊", + "productivity": "工作與生產力", "streaming": "流媒體", "gaming": "遊戲平臺", "developer": "開發者", diff --git a/frontend/locales/zh.json b/frontend/locales/zh.json index 3f653fed4..62fcd9baf 100644 --- a/frontend/locales/zh.json +++ b/frontend/locales/zh.json @@ -1240,6 +1240,7 @@ "brazil": "巴西常用", "ai": "AI 服务", "social": "社交通讯", + "productivity": "工作与生产力", "streaming": "流媒体", "gaming": "游戏平台", "developer": "开发者", diff --git a/public/favicons/airtable.png b/public/favicons/airtable.png new file mode 100644 index 0000000000000000000000000000000000000000..cae131fa00383689cd699f91066693f12ec8db1c GIT binary patch literal 1312 zcmV+*1>gFKP)oWt8DWQr%E1ne4#3sw@_G0mV_M6`|T#?3Sh6PUXCm8PF;gI5tJVDg{r>VL|{X zH&7z4QJadn4`o1W8DqDwMxaQQxe1n^#-hZ^V6Ws6NLE8q2DE}%j`9((USUGA!+QkW zLfB=L?XsNuB>@fzvyvnc9Ytw7=nXpoTk`GMjF&Sve72kaZ z0<+gEKx3$bhVJ&B#$vlLHI}9RV^^y76-V#NF(x=&tV1bOWloa9&m#CuCS{UMdqng} z_1Pg-qHIveiBZ_yoGYG~1^{k^yQmAc;SdR7VVYe=%6+!=&Ai4#SEKuBCG#Dn5an%! zF@uP1=l=_xUzT$wdTnZrW}y@~%32_EfF=VQ0Jvj^_&wN4NbNqgV!OpUZXDgw(l~bS zYW77E^eCB5khKT}z}(*Jh6t)qi?GA;Q7(CO^wvC8tC^i0tPv7-*vf4?I6yyfTp}ktV)_56_w9+^m1v$krBi|d@)b6yGAkj`$r=DqRj!2ExgNed zcyE!LUdMcz(^y&78=HPor`aJkE4+c?N?Lei$UOrOoW%WzVy1UIGd<%6%~jROj?wp` zV|F(iRe3Wd;`Mk*$oHlQY|hXk}@D7 zof(#E$IIiUejyjOUr)8DL`cYhz#X8(K+S3BR(3$AHj`vfE|Yc`Zl&dYD#2Vn7VPpyVr@Fox1uHWk%*5*~`#ql_}j2denfs?AKiIi zDeNu@0e9h5t3dBkXOhF1krR*fhj33{6;>RZcS+%eXx&VbLU~BE3s769&^jVWBLcFi=XT28s$y z4W>b4!XWjfDRJt!_RDbrkor7?wHSpWf>vGqIw?i$8pS$m4WcJ z+e=D4ohpDGfbB!wN9+_*_mO%ktDQn@AM8|KV_PUA6mq)Xe#clr9P4E*+Zq#&rwB;l zp$K4NR!P$*Oa;^+$>iwA5{(ta>UdJDf$(1;KHw0JrsWSHbQ3+7;T?eAt8c^ zfmEdhZ5&MkW&eahSoO+&3J;|tXQIo3#Mv2022zQ}5@MI7826h4Ck@8&VXQMC4_%>D z?Xy&Eq-wi;-XEO>>Zwk<-)%pysRnfKJX<_``B-Ii>?$Osdz!L+k7Wc?au!6g zZ#t|%!|fvpB)y2}(_`Bo7XTpK`o+zZ?R`}4SSf}i;&drh1F?Wup}~T;hY0mI%Uhn9 z9M|^v_W)qTJgJrY0A+g{RlADPchx9$ZBSQzLPSIl0yj$PJ-HONm#mpfKmL57_U&`2 z+G{D>GoK7#Fk9NS+bw(qI?{}4O)i%c9o zV6J}deU-y>*XKmvUb$LbeG2WwiRzk)ws{@jyn^fPuYP{(qHgC!5pZ9*Z3AVx9NRxv z>i!3@QWO<|174F>RX(+=S3JPTPrp zZ4YAFM;csb^uXigBljOMy9?gLiHY-7!wxj98x5sJ9t*mxKypd6vfF8ohTz@oqf5_fv%?a}BXLi&*7%QaL>% zqyin1>B6U))+pf?x9#G!@0)-UHbFQIji4cqg`L#VrVrio-75{M`v+tes%*w}8~RL|$@5n74j7&M;TMIfsL z(CLU1BZT4LGTry98YHGu=0LjMDVlOWMDB-jUleT4;1D-4ZId|6!pUHcA%DO0-WdRD z&;|mipVky|ltMKp^6G1FJ#Y=`dMos&=Zq?x?l@c2H7oM-9t_uqy2Bb0Df8AD5>Vd} z(FSDR49rhJWB|N_Mj$({>OdVN&8hb_>Mi&he0EHICV*?+lB=E`l|H%R8O1e+a1H8v zXh#BXJ0ipF1gOil@G~-@?{q%Rk$Ja}z#)ZKA$=0{fCDX13PcNtHHZZiMUc_NRiGv+ zMSOV2A4eA=j^&Tu&y}9?@c;#^i_u`rdwQW>861WM<37;c0zb2pll$HaYti$7 z+p<-Zv>N3kq&N<-LB#$Gsa~^>?tFW(II}P>xNHULKdS0Jg!&ToZ-V|!j5%N*e|*XR ko3kv-vMkH8EdPJlE{a8)!@&Et;07*qoM6N<$f~9q%X#fBK literal 0 HcmV?d00001 diff --git a/public/favicons/canva.png b/public/favicons/canva.png new file mode 100644 index 0000000000000000000000000000000000000000..31a0232296085ea89dc8553458ecc071e859dc61 GIT binary patch literal 1138 zcmV-&1daQNP)zQ^{7n(%mk@A3`u&j0`e&`Cr=R9J$j$*?c1{1~^WYGxa0M**&Jf&z4`<*7c<;`5Vb*z} zn%9CCQ0Z&<@`5v;=RjY5%^$Ae>vd5tO~jk|8rHJfI}ilWf&&$0GvPxtOcH8;d2izpcA+gpa8J|iwDRR4##gpg$uBP zEaGz+Ab5XhtR-#Ih`$^7M}Z^b01C(JN1v`uqZd%Kpdf{PKp;0?(YG62gZTqb33L^5 z1eNB~nfa~@2e`K)C~S}{<5%G3X}mnuJlplD14P~nq$-}E;;&zK`CWU@V*n7qHBmfI zFl$c%no729iv?BCoM>sU_1lWK02@7;+IR1|A~T|eYmV(Y1HJl`CE8y4}vEejAwCdCkW^WukSVXrvM;O zG{j~>XK88vmhdd_{AfH&B?5s1ysq{7hzCKcs%dzME;-aitxm?b^8-H`eO@s3EP{7H z+wPZ*+q?c&&@hd2Z&t7iukibQyB^G=VYC8adFQDWY?t>-!<78EUOjI6kEH>W*^Z{R zf+e5{#{gR!<{!(^bnd+D#(4>Q1VeO~?hu;s5)#KkdAwnUeHr*Z=?k07*qoM6N<$ Eg3U!DMgRZ+ literal 0 HcmV?d00001 diff --git a/public/favicons/clickup.png b/public/favicons/clickup.png new file mode 100644 index 0000000000000000000000000000000000000000..ca3589a39a890ea3ccbeccead6259a618d45b8da GIT binary patch literal 1049 zcmV+!1m^pRP) zO=uit7{`C_%x*KA)MV3a5_@RDq6Lf9C=o2J5-%PUDM6xmkOU7k&_h8y1Uy)zH(QE` zRdZ+?@el$*L@%P4C{e+*P;IrLLbIu*+w5dJvzz^xO?Kz;upepjv6E>M!9NVlJUk!& z_nG&7p7&AQg;?C`)0OH)(IG;ZO@va|2$w`@=i4KVLsdDzv}J`G3hK*1Q15D}HwXrF zlv0}+9}!_;vA}%VL0oq{6OitQnwxC^;-)>8&gA63LOPR^xM`08s94aMu%Xd<5ofNF?C1lW;rg%SAb6So0Sdn79c8-+-9{0h9u34h9F{;#a=i z`6DoV9p0UQ%tGmVdE&+fVe;G-5jYctQ&V>dR4D^e{**GIi)Uf-meDn{9 zECmCIgkjgtDxd1h)EDq;KNM0MBrsEi!?$3>UUFVxux}T<-w(%*Lg#^%wz2Qv=jXwh z*#LnfDY(2qb;*_ZhaZRIJy35zC@z&6>8TS<{xbNK@@JZ4u&gNuPyi3-JFS5d8zDuZXu| z8Iv)WXli}>o_+YIA>oH%mtYGVJ*^XNt*vin;FAk3Nlke5QH|I3=r#4%+=R|Nj1CCX ze+dOcC>juGftUI;IuEVhzNccssfi*ft)yQtgnjKA#~#sXuUlyopG&Tt0R<#)$vuL6 z7Dmpx{B}Xnc~H?DDaqq$nE2b}&xA`cq`)Z2m4bM__OGaU43jbV{B4(nU0D$nL#3yZ zm8#5uLI?_VC3&$Pc7)-?QvuqH)idUK44Zbs8>cnG?Ij2IT%49ItkedUdPbW8C!Sn8 zcm|S3MOsZ7b5!xUPGlWx~YwF4v}o z8wn|;zx)fDTNO|2g%|c~v~KtIB_f!Kl&#{XJ=WCJ(6ue-?`E9K30VhF5Hb|?K5zE< zg+)@S?6_7G8Omhy{;YveNYT=)XbJld4v zeTbA*6vlt&{hZO=RVi~z1I>svBheN=$Ue-E(p<^3gpx`^jm*#@Ew)S&3#?6q5dSEW zOpwHlEH$+=$DMTMrB~FLSu(x#v9Rx%U<3 zspCKeJ%fw`^auPNBH&v<&_l@q0;>m;1Moi}AV4UP6;Ore?qXvgBj&ri*pdh&Kvo!Z zS;CwNp;_>Jfk=C3pb2{S*4#HKq`a&^q_fzP2s8^sLe1EikC*1yvM^xxk{qLl#SjAd z!uF)_J12~;O4#vOj?D`K4lHYC@(nQrV%F*c!aQ}379VISVOF^G3PtVokVO+BTwg;h z;Ak>gVeKB5y1gFR(-tW3`f47Z98xT z60jiOETnu>?r(m!S-#C<&(|)o(%=;3&vYcvGIkLRxJ)aq{P7XXr$$`SU(uKmUi-x5)jb|(&sfInJ>9ndT@Yx2E>xpY7&kVi zZdSmYH_{yc!Gb;oF||bkoD(h|qIhRPjuqQ|_U(7z5)E#L)h`g}dJL7RMCD*b&4?J= zhlS%qoPOGjmTngt2^)tX&$;U=GmHnt14TR zqdD}0!&6&*_BS}KRj@QuM#QY16;eI4HQP_WTdaK7XVYh{A<;`4=jn0`71#o!h9o>Q zE#$6|F=9iM7vcn52OM9M4}`j%E}QpzhzE~O3YmXXh?fQx3PA*x1%6ti6uf=FVcmxw zhySoi6585drdX4)V7Zzl6C-9;N1%mVlOO^j5GN2d3F+RN+L-~3p`a32G{p>mu1TN} ztF?Jfr{IB`LsGslcY{L`W5ifMF#%5#MX+dNiX*>TET0-sQ4Uca5(Taewy!zUXz}D$ zkGJ-Epy2pl7Heh)45?J8PzYnNEpSs12e4*GinTj^;}c%-7<4{{&E_<#9v-uzCZuL$ z0+xnI*m%%k=~kb!r!1Dt2=Q#qn(aPieHE|F4p?||To^ZD?^iZ2eBg56uxrZRyVNmk zITM-%yF&BaodL6}6IRrF)bDc{bhYC3xp{6MX*_!OVTT2qe117iYiIym1y zAb_dFn5vjJ9}XCHWpY93QaEL`hO`ejnuZ^39@*sc#ZkxXynA$GL~Y?}e#;66zqbkU zg5_x(+a%W7h!aPnBjMYV7ALdjI4%XHRX{Lz=U5njZOpp+14a!^TCZpV2fwpfz1?Tm zR|R+S>8$7NQDO^PpnxX9Dc7u=5mI|sK$1Y+E}zEq8i@t3#{)6Q3A9*q9sTWf) l_f}5x@4TL0Y!d{?{0$vbI6W(Nb>#p6002ovPDHLkV1l^;dglND literal 0 HcmV?d00001 diff --git a/public/favicons/figma.png b/public/favicons/figma.png new file mode 100644 index 0000000000000000000000000000000000000000..737763bb030ddff9a20c7bf285d5438670c139fd GIT binary patch literal 1244 zcmV<21S9*2P)% zKWtl76vltYCXPtsq%0sx2Pjbou=vv$B@z;1gLELaf;<93h$6AjCL#eL1xrAaG!0@v zD2RnQC^!|Qm5>-mP)Kt5@+i_s&+-dMcBjqkv%Wk_0JKqH? z0sLg}L?!3BSprxvc%o9-)!-h0i1TG5G6^%T7WV)ul}~{sXJ7qwiS*hjSCe}H<#Gj) zL1$mRr5v+-J+_?!b92+cxXD`==_nItowq-PIR@wF2Z0l2zcG!ZPlb%sXJJK=R`6j3V?0f8KvDnIc6i9{|q> zwA_zyMrL_K4`W7R=2KvM@xGMieS$B3O9_N`BVm;*AN)DbfgUhAfjrcu$J%>v1+TZ;}`A#{`>r7P!MhrHANp-v!PADEMZA z{_1H2Oi;u-6ZBax0w$>5nc!ZJwf4Chb{i9PzST7X6a2+nC5?g!s%IwXw_g33pd|3k z1pU>Ef(hPsJARp93m*elJyiOJ9=>ulIS26KBo$S>F+qKtHH6`iW&R{Vzee;S$ZIo9 zi$^A?Pcn({QHT=XAaa^# zfVZh(wSUrgz$@CrmzHt2$MeAiKRiOy&sWGH^isRp24;dc2LK>b+)A3hYj^txuGOmm zKLTfg66g3_huwb+-7%Jr05TVfsg3oOd@TSyBo2Loi`fYeJjt%mQ1oEAzfaLIF*3op zWez~53dxSU_xr_SG01!h?1sgIF@S^Rey>b0PB{mVxll|g)yC@+G|D-EjrEm0G-RKk zN$wO?8oE!=S?*BOKNE~qjlcwBRoqN)CFb#CXM(Z!92$NYkysg?Z@Du;RgX+iL$$Z~ zkaGa-iFIF0@KSTjUgy3(-*OJ1+&NhhRUb_7*!la0L;vk9tW2lC50AV%Eh1r<;OJs@ zBKGYMA&$Yt&bC1{FhNDema^^UzCPayO@ulYj^;!I^$9Kk1C8?Jx8wzhWfzV#{Yq=C zPf&G>2?8u5vVc}g?eg19xpOjfU!QOJX_WjAEAFds?D`8@Fjl@4u2n1m0000jofWJ-vKTtOvZKh8h07?Kn zyqy@-V+ShrWLiF-4}m}cV`F0&9UX-r2oMAT&(F_zd3iyhP{75-1)VawDEc|#%N<>gWPU+a{&ZFpiCxXsrh=PQYq@~?QIT#D2kSpOe0-gUFn6; zwqYm~YP$KFj*pM2r>DpI5?Wqfwhdx^ecc)Wzu&KFF1sKYV>CWKZVtfZa#22?r@g&B zE)dylR?Btba@4i3oU@hIcb zXtb#SZ*OljFfd?l74mw$TxVi&aZx`&JRYaX$;p<0*xK6C4pFmVkJDeKo!ct*opliFozI z?d`3(Wt2C>>FKF{07;U_<#M$|Ic;xm>j#KNqqMWL(-II13k&)Id_Er$5qAj27zrWw8M?W5nL?TKeUJ!G0bH)KWJ3CcI?1qqK+1w2c0GghjRwcC)A`l2P zGT#^g040-2+acE0*0h+{2H^2{==}WLHi&dOZT(}F{{DWtxw&aNL^hkHzP>)K=CuRV zAkyh{(;z~j5Q(Cw$Gkp(S~(>WiKamq2xB`2gF)4wIHM5xe4hM%zx@C}<-ynd{Jc_D zjUejZ14xoY;c!^Bz3l+?F)}hjOG`^MG&H38Jr;{mu~;NomMI>OTXL-WX!n`_w}fUf|4qte*CO}>v3fL~RQ b%9;NMLBp1^ECO5000000NkvXXu0mjf(FTok literal 0 HcmV?d00001 diff --git a/public/favicons/miro.png b/public/favicons/miro.png new file mode 100644 index 0000000000000000000000000000000000000000..339d520a8a516ff93627a31e306b298779833c08 GIT binary patch literal 783 zcmV+q1MvKbP)p?v(DYN0007hNkl$c0-KwYiPvu?)T-Gr?UV2Nq0w)_y33VGDIR``n0y6n z_(H!A@n!uu=0^r>OwR;J`9^{#{iVeDn|*_e5@tA$SMIwnVt4p#P|U-a z3D`A;I&8~RIc(Wr30PJXV?GJ6<&NPPVAUSmKOEeZHYI~7Yv>4eeK-joYXM+9MmkYY z6a*pduJ;5h18{hZ9}C(&WKS&R?L!sQ=#%8!4-w@Zi{(MASspBCrQ8$ zLm2t)2q0;9a$2k_!xe4_WRgl5CP+e=I|XqhtF#Q&T@h(A`Cdt0uIPGCz$2NaRZH7J zi-1NFtCbX#CxYw|XwJoANS8jKLy%bDNwE-D?x01$O}C9Fb^<#DJPJz0%4?p=g@YCW z4*@~7!NIU+fz3j)G%p-92zb0`4WpI>_6TCNaOWUscuU%P1XL|`G8D{J9;7t^S3A}a zCqM5e<*r&02$C%!fst$J5|CM-av~(Ivut1OiD4SqRKd61fM|MGC(G5Qim8YT9T;`t zptcZC7GN$(V_Q3@2u{ix$HO|H^-&+MB|%IDG#)l<5YupQakROO+i=z(rq~La1e&vY zF)piMT^$17Qm4oJNtMYClr}*aF1KR57{B_0n1+LrAY3rqN5Yl7nx zI$$A*nQLh@NF#;Da&d-%_zcz*X@8fO)@6(;!XL@}6@J&Rh9Eq97t| zE6{|JfUEK$X6mkao|h?2Q{;J$@9*#OH-Iu0|<^APysR^%^n;MSe!1KJe9^s=PqRwCwh{z!gNs`cZyCu^!$uJBOLJ;Si04yd6 zA?SQQ>!Oz`D8{-K>`K4^h0y~5#BmJEvKqVK6c9p`S2?a_TCdlQ&(btS9LL!0cC{Ym zx-LFHKigjCGRAgo45|tQO@L(ga5&7W(5>)1uV$cy5VYU#+o}Yk36RNk-FdaS5lNCX&Qja$ma;5s zs^S2DjUcInFxLHvVB0o4&ucR{H$z%?-H(tClj5*5{G!X@6gzVeGDpwBm$k^ngbD&b&L@B5F15TYyUYkCk-s50Za?yNnaBet)C zJ~w%a9v}&*#J%)=sf`h$ZGPvRlWp6b>wtYjVM+ox6=7s0`o7fqgz$a8m&75<;pg+Y z)(+>KK0iMvAwZ24b^%ld-p9uWe7`#iT_sY*X0t&QMUDIa>-8FjVZb!a&bB4eG{y0F z1OOO@0mCo`ZL<&F9=|^1RK(Yo$g+$K!?@c9JPLiX))*rqLoamiID90A5K!?18DlYk z4>eB+@fh#yPQ-CMs9f8TnLU6vHLuMc(1Qac^fL;1p5t=4!1w)Hkd!VfV=bW|RGjcS zLpwmx6h$6};b3E?V{Bk#Q=KswOu)6UKtV!jZqqb{Wmy$w<%-T~wdxdpXjJE1Fbo6d z^I6Tx8DoDsD^bHqlA*i3OG`lz)KnS791+!aD26&ok4{1evTeI9lFb1I9-JhiGXO)) za~ua>UtfbryajsTq@H9Tr7Sx#kTPYA{Ra#uKtQtxKru7y_xqYL(uHXfP7kKk6`m0} zisLgeFyiPe5t%5?71kh)+D}J<-hddzQQOi<7!?*y4c`k3hdgi{1NdT$MS6kJaq&M$ zLXN)+HL3RdqU5V(%ilu}P2O{Q+y?N9>alkfZNhykc})pZ9E%@{{{e^3yyQVUZ`1$) N002ovPDHLkV1kZot}*}s literal 0 HcmV?d00001 diff --git a/public/favicons/slack.png b/public/favicons/slack.png new file mode 100644 index 0000000000000000000000000000000000000000..cbeeaa2d515c28024b0b8d992230d17f103ed462 GIT binary patch literal 927 zcmV;Q17Q4#P)Y}j6o#L3U7@UCEJP(FTE=^7c>^JQRLPP`MR-?b)5$Nez2?JX5bL8r^7YM`WOF3GM&A8(6p6@pGYLdncRwh10jfWL z(MBbnQzr5;WPHttNPFJ8YGz#}nt!xw`qVh*YligJ%u`UiGYUAq5jah9Vx;C%!28Mo z>RAUR=Ag{x7*v0L=J-L z?Jw;q7!9OAQ?x5m=&1;C8n6B~@?yxe5!ZxCtq^qQou58mPkTnBQ6ynjQ_x$YS}zXr z04OEXHUI)%P|8sXJs+L>C%2A3XaH2{KZhAR*eH(&pTw42FzR4g5(R4joYNa;wqi`2 z`Ipnorn}Tk;yMQ4&&%Z>RCP<0rDu?l71dUDggCtNO;?pIo`TVWYb|a_K)$;axNsttJ zsP=PW#%aGCFTMXKjhH(PE|a46guwHsIE6wmbh*&;Fq3Esy~=~VzN*$USIDM~xf>Tr zc>dGFu1jjN(c{tKP9XwfLF@Q45a002ovPDHLkV1fbN BxxxSd literal 0 HcmV?d00001 diff --git a/public/favicons/trello.png b/public/favicons/trello.png new file mode 100644 index 0000000000000000000000000000000000000000..16a53bd1dd10f63fc8cb1c4760a563bc57eacff9 GIT binary patch literal 369 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!bOU@sT-^(NL?iZ~q5uE?Gq`MH z4A@mN<YCe2S|_gqYGf-3@(X5|A@s`c)RBKL*nuK%JzX3_B3j>0 z_vAaQz~g#YLSxH!`@98P5(N|wyk91ipLtZDO>x6^-9w!TpTyKS?rQ}U&6if(az@^( zUi;Ji@+onLCMmtB*wx&OxC+>m3#{{q<>H z|ExDe)FV}1eOsk^97l|xprz`LG|p)YlvdcSV{Urpd{6mAbZ1|QdPB6#j+0HdZFXF2 ziH_ZKv+Z_m#e)Oxay2iSj@#9IIO2X^p6C9&l^_2z_`Z+Ny7FPk1fa(mJYD@<);T3K F0Ra9Sp5y=k literal 0 HcmV?d00001 diff --git a/public/favicons/zoom.png b/public/favicons/zoom.png new file mode 100644 index 0000000000000000000000000000000000000000..7a9fe7f59b30eb6843fe252e2dbc4f6489c832b6 GIT binary patch literal 1575 zcmV+?2H5$DP)4l=qlv_Y z;xCA8gcwB;Tl_;3lakb!6n|_B)fU7`1W_a!cg<=wCYzm|+1Z(Q@9~fKX7aQ9v-gr@S=hEr&+RUieB;b-K^B~^|Va*bz> zJ-&8k*#Oo(8t-t@Tnwj7h}dJNp1kfSO9EK4+mDFaAtz{0qrIF; zyS!tMISr$yp1l5GPXMKd?I{)e^0J+Z^>VgIRAldqpI!a+1pta4jdzI33y5l0L$XAu zml+jR3*y3#v!A=}ObfsbyR0-@tN#IX5D^eXkfqP}e^1IZk!_;BvOYZa_}Uo-s8*{_ zV15wuG+(oT576*J?4^S$jaZ0dX{Q-^oa!%l6WyU`IzN&`V5>#Nx0NpDH)k&D47_2EZ@`Fa!lGagG5-Fd>*?25Pj?VBky$Au%45cG{Gi z;ad8v>;HH8J&{WMK1|viCQzgUL_&Sg1WW*@LP)>J9H_L66AU62IK={}f+>jSfk;Bw zU@d3Hft^J@vL)ZOQbU06{@nQHPYo|Ze?b`CDST`T^yT1p7mcS+8Vzske@MCaHlZHF znKwLNI~`M*OQX^Rq->DlLzAx~vZ;CYx8IoK$NNg$d6VnbB)L3o-1=CIbIQ5>j?H%^ z{J9tk5!BWtK9U7D-7(KVqn)b zKK{%s4WBsr*0~tWv-3V<^Ih<#NqEPIapR}p*)x!j66Zg7*|=lGbI(&T=f{n=uMaz(gOPAwW-nMv{}A0>{PRiS1pBFv|mp9LY@Kb+^p=U20$ zARInjW#99a6kIc5n~%}7k;tMnVFTWjVBkZlY0!wJtwbZSP&I5-whwF>E^^`v*C)@2_uyS%jG-07BZpf?aaCJ0IB& zyt8?p|GDPbczYkSbH-F9r0@K?kQ1u4K*PhiH|99`>snh*{Pu!pcqroev83h&{6$(I7B|qz>k6Jl!HidZ>2!}wm^Z!sfOSH?sW2Y=reg=$IPYfN*`s;c%D{TA42LwHe z=uoF|S+f4S%KoMzdnzZ_pY8P3^K#18U#{$n7(sOp$Y5ua5$Vx*+8fY>i5#uX)}H01 zcU8K%=?!2WNYo#(*;Kb;x&e`!L5EN&BDyL$7MTXEA~Ftc!bE>BB4e}Vf4#=ogNt6z Z{|mm=1SS=(iF5z}002ovPDHLkV1i+g1z-RG literal 0 HcmV?d00001 From 7ed58d8330f52db2c3f4699cb7b4674e76796a06 Mon Sep 17 00:00:00 2001 From: Victor Solano Date: Tue, 25 Aug 2026 14:42:40 +0200 Subject: [PATCH 09/13] Style: make waitFor a const arrow and trim its comment to current behavior Both changes requested in review. waitFor was declared with `async function`; AGENTS.md requires new functions to use const arrow syntax, matching `tick` directly above it. The comment's middle paragraph narrated the removed 80ms sleep and the failure it produced. That history belongs to the PR, not the source. The remaining text states only the current constraint: the run spans a POST plus up to three real pollInterval timers, so no constant works, and the timeout only bounds a hang. Greptile's P1 on the `await tick()` before `scope.stop()` is deliberately not applied, per the maintainer's analysis: Node fires expired timers in expiry order and drains microtasks between callbacks, so the assertion, stop() and clearTimeout all complete before the 50ms poll could run. Removing the tick is the riskier direction. No behavior change. tests/composable-globalping-measurement.test.js 22/22; full `pnpm check` 1139/1139 plus build green. Re-ran the mutation control after the edit: deleting clearTimeout from cancel() still fails exactly the disposal case (21 pass, 1 fail), so the style change did not weaken it. --- tests/composable-globalping-measurement.test.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/composable-globalping-measurement.test.js b/tests/composable-globalping-measurement.test.js index e700f91e8..ea773f929 100644 --- a/tests/composable-globalping-measurement.test.js +++ b/tests/composable-globalping-measurement.test.js @@ -47,19 +47,17 @@ const tick = () => new Promise((r) => setTimeout(r, 0)); // // A fixed sleep cannot do this job: a run here spans a POST plus up to three // real `pollInterval` timers, so any constant is either flaky when the machine -// is loaded or slow on every green run. The "retries while in-progress" case -// used to allow 80ms for that chain and failed under a parallel suite with -// status still 'running' — a wait that expired, reported as a wrong result. +// is loaded or slow on every green run. // // The timeout only bounds a hang; it is never reached on a passing run. -async function waitFor(predicate, { timeout = 2000, label = 'condition' } = {}) { +const waitFor = async (predicate, { timeout = 2000, label = 'condition' } = {}) => { const deadline = Date.now() + timeout; for (;;) { if (predicate()) return; if (Date.now() > deadline) throw new Error(`timed out after ${timeout}ms waiting for ${label}`); await tick(); } -} +}; describe('useGlobalpingMeasurement()', () => { beforeEach(() => { From 1332db40c0157b96a7e72caa5ffc5ecc44805a7d Mon Sep 17 00:00:00 2001 From: Vitor Parras Date: Tue, 25 Aug 2026 14:44:25 -0300 Subject: [PATCH 10/13] Fix(i18n): correct Brazilian Portuguese checklist and changelog --- frontend/data/changelog.json | 2 +- .../locales/security-checklist/pt-BR.json | 58 +++++++++---------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/frontend/data/changelog.json b/frontend/data/changelog.json index 71cb77984..2fb1c9615 100644 --- a/frontend/data/changelog.json +++ b/frontend/data/changelog.json @@ -1778,7 +1778,7 @@ "zh-TW": "新增 AI 助手 IPilot:依據文件回答你的問題,並可在你授權後讀取頁面上的測試結果", "fr": "Nouvel assistant IA : IPilot répond à vos questions à partir de la documentation et peut lire vos résultats affichés avec votre autorisation", "ru": "Новый ИИ-помощник IPilot: отвечает на вопросы по документации и может прочитать результаты на странице с вашего разрешения", - "pt-BR": "Novo assistente de IA: o IPilot responde às suas perguntas nos documentos e pode ler os resultados na página com sua permissão" + "pt-BR": "Novo assistente de IA: o IPilot responde às suas perguntas com base na documentação e pode ler os resultados exibidos na página com sua permissão." } }, { diff --git a/frontend/locales/security-checklist/pt-BR.json b/frontend/locales/security-checklist/pt-BR.json index d0ac7a01b..d3afc6c65 100644 --- a/frontend/locales/security-checklist/pt-BR.json +++ b/frontend/locales/security-checklist/pt-BR.json @@ -8,7 +8,7 @@ { "point": "Use uma senha forte", "priority": "Essential", - "details": "Se sua senha for muito curta ou contiver palavras, lugares ou nomes de dicionário, ela poderá ser facilmente quebrada por força bruta ou adivinhada por alguém. A maneira mais fácil de criar uma senha forte é torná-la longa (mais de 12 caracteres). Considere usar uma 'frase secreta', composta de muitas palavras. Como alternativa, use um gerador de senha para criar uma senha aleatória longa e forte. Experimente [HowSecureIsMyPassword.net](https://howsecureismypassword.net) para ter uma ideia da rapidez com que senhas comuns podem ser quebradas. Leia mais sobre como criar senhas fortes: [securityinabox.org](https://securityinabox.org/en/passwords/passwords-and-2fa/)", + "details": "Se sua senha for muito curta ou contiver palavras, lugares ou nomes de dicionário, ela poderá ser facilmente quebrada por força bruta ou adivinhada por alguém. A maneira mais fácil de criar uma senha forte é torná-la longa (pelo menos 12 caracteres). Considere usar uma 'frase secreta', composta de muitas palavras. Como alternativa, use um gerador de senha para criar uma senha aleatória longa e forte. Experimente [HowSecureIsMyPassword.net](https://howsecureismypassword.net) para ter uma ideia da rapidez com que senhas comuns podem ser quebradas. Leia mais sobre como criar senhas fortes: [securityinabox.org](https://securityinabox.org/en/passwords/passwords-and-2fa/)", "slug": "authentication-use-a-strong-password" }, { @@ -44,7 +44,7 @@ { "point": "Inscreva-se para receber alertas de violação", "priority": "Optional", - "details": "Depois que um site sofre uma violação significativa de dados, os dados vazados geralmente acabam na Internet. Existem vários sites que coletam esses registros vazados e permitem que você pesquise seu endereço de e-mail para verificar se está em alguma de suas listas. [Firefox Monitor](https://monitor.firefox.com), [Have I been pwned](https://haveibeenpwned.com) e [DeHashed](https://dehashed.com) permitem que você se inscreva no monitoramento, onde eles irão notificá-lo se seu endereço de e-mail aparecer em algum novo conjunto de dados. É útil saber o mais rápido possível quando isso acontece, para que você possa alterar as senhas das contas afetadas. [Fui pwned](https://awesome-privacy.xyz/security-tools/online-tools/have-i-been-pwned) também possui notificação em todo o domínio, onde você pode receber alertas se algum endereço de e-mail em todo o seu domínio aparecer (útil se você usar aliases para [encaminhamento anônimo](https://github.com/Lissy93/awesome-privacy#anonymous-mail-forwarding))", + "details": "Depois que um site sofre uma violação significativa de dados, os dados vazados geralmente acabam na Internet. Existem vários sites que coletam esses registros vazados e permitem que você pesquise seu endereço de e-mail para verificar se está em alguma de suas listas. [Firefox Monitor](https://monitor.firefox.com), [Have I Been Pwned](https://haveibeenpwned.com) e [DeHashed](https://dehashed.com) permitem que você se inscreva no monitoramento, onde eles irão notificá-lo se seu endereço de e-mail aparecer em algum novo conjunto de dados. É útil saber o mais rápido possível quando isso acontece, para que você possa alterar as senhas das contas afetadas. [Have I Been Pwned](https://awesome-privacy.xyz/security-tools/online-tools/have-i-been-pwned) também possui notificação em todo o domínio, onde você pode receber alertas se algum endereço de e-mail em todo o seu domínio aparecer (útil se você usar aliases para [encaminhamento anônimo](https://github.com/Lissy93/awesome-privacy#anonymous-mail-forwarding))", "slug": "authentication-sign-up-for-breach-alerts" }, { @@ -86,7 +86,7 @@ { "point": "Não use um PIN de 4 dígitos", "priority": "Optional", - "details": "Não use um PIN curto para acessar seu smartphone ou computador. Em vez disso, use uma senha de texto ou um PIN muito mais longo. As senhas numéricas são fáceis de decifrar (um pino de 4 dígitos tem 10.000 combinações, em comparação com 7,4 milhões para um código alfanumérico de 4 caracteres)", + "details": "Não use um PIN curto para acessar seu smartphone ou computador. Em vez disso, use uma senha de texto ou um PIN muito mais longo. As senhas numéricas são fáceis de decifrar (um PIN de 4 dígitos tem 10.000 combinações, em comparação com 7,4 milhões para um código alfanumérico de 4 caracteres)", "slug": "authentication-dont-use-a-4-digit-pin" }, { @@ -184,7 +184,7 @@ { "point": "Verifique se há HTTPS", "priority": "Essential", - "details": "Se você inserir informações em um site não HTTPS, esses dados serão transportados sem criptografia e poderão, portanto, ser lidos por qualquer pessoa que os intercepte. Não insira nenhum dado em um site que não seja HTTPS, mas também não deixe que o cadeado verde lhe dê uma falsa sensação de segurança, só porque um site possui certificado SSL, não significa que seja legítimo ou confiável. [HTTPS-Everywhere](https://www.eff.org/https-everywhere) (desenvolvido por [EFF](https://www.eff.org/)) costumava ser uma extensão/complemento de navegador que habilitava HTTPS automaticamente em sites, mas a partir de 2022 está obsoleto. Em seu [artigo de relatório](https://www.eff.org/) a EFF explica que a maioria dos navegadores agora integra essas proteções. Além disso, fornece instruções para os navegadores [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox), Chrome, Edge e Safari sobre como ativar suas proteções seguras HTTPS.", + "details": "Se você inserir informações em um site não HTTPS, esses dados serão transportados sem criptografia e poderão, portanto, ser lidos por qualquer pessoa que os intercepte. Não insira nenhum dado em um site que não seja HTTPS, mas também não deixe que o cadeado verde lhe dê uma falsa sensação de segurança, só porque um site possui certificado SSL, não significa que seja legítimo ou confiável. [HTTPS-Everywhere](https://www.eff.org/https-everywhere) (desenvolvido por [EFF](https://www.eff.org/)) costumava ser uma extensão/complemento de navegador que habilitava HTTPS automaticamente em sites, mas a partir de 2022 está obsoleto. Em seu [comunicado](https://www.eff.org/) a EFF explica que a maioria dos navegadores agora integra essas proteções. Além disso, fornece instruções para os navegadores [Firefox](https://awesome-privacy.xyz/essentials/browsers/firefox), Chrome, Edge e Safari sobre como ativar suas proteções seguras HTTPS.", "slug": "web-browsing-check-for-https" }, { @@ -314,7 +314,7 @@ "slug": "web-browsing-disable-webrtc" }, { - "point": "Falsificação de assinatura de tela HTML5", + "point": "Falsificação de assinatura Canvas HTML5", "priority": "Optional", "details": "O Canvas Fingerprinting permite que os sites identifiquem e rastreiem os usuários com muita precisão. Você pode usar a extensão Canvas-Fingerprint-Blocker para falsificar sua impressão digital ou usar [Tor](https://awesome-privacy.xyz/networking/mix-networks/tor).", "slug": "web-browsing-spoof-html5-canvas-sig" @@ -384,7 +384,7 @@ { "point": "Ter mais de um endereço de e-mail", "priority": "Essential", - "details": "Considere usar um endereço de e-mail diferente para comunicações críticas de segurança de e-mails triviais, como boletins informativos. Esta compartimentação poderia reduzir a quantidade de danos causados por uma violação de dados e também facilitar a recuperação de uma conta comprometida.", + "details": "Considere usar um endereço de e-mail separado para comunicações críticas de segurança, distinto do usado para e-mails triviais, como boletins informativos. Esta compartimentação poderia reduzir a quantidade de danos causados por uma violação de dados e também facilitar a recuperação de uma conta comprometida.", "slug": "email-have-more-than-one-email-address" }, { @@ -576,7 +576,7 @@ "slug": "messaging-strip-meta-data-from-media" }, { - "point": "URLs padrão", + "point": "Neutralize URLs (defang)", "priority": "Optional", "details": "O envio de links por meio de vários serviços pode expor involuntariamente suas informações pessoais. Isso ocorre porque, quando uma miniatura ou visualização é gerada, isso acontece no lado do cliente.", "slug": "messaging-defang-urls" @@ -596,7 +596,7 @@ { "point": "Evite SMS", "priority": "Optional", - "details": "SMS pode ser conveniente, mas não é seguro. É suscetível a ameaças como interceptação, troca de sim, manipulação e malware.", + "details": "SMS pode ser conveniente, mas não é seguro. É suscetível a ameaças como interceptação, troca de SIM, manipulação e malware.", "slug": "messaging-avoid-sms" }, { @@ -658,13 +658,13 @@ { "point": "Pense em todas as interações como permanentes", "priority": "Essential", - "details": "Praticamente todas as postagens, comentários, fotos, etc., são continuamente apoiados por uma infinidade de serviços de terceiros, que arquivam esses dados e os tornam indexáveis e disponíveis publicamente quase para sempre.", + "details": "Praticamente todas as postagens, comentários e fotos são continuamente copiados e armazenados em backup por inúmeros serviços de terceiros, que arquivam esses dados e os tornam indexáveis e disponíveis publicamente quase para sempre.", "slug": "social-media-think-of-all-interactions-as-permanent" }, { "point": "Não revele muito", "priority": "Essential", - "details": "As informações de perfil criam uma mina de ouro de informações para hackers, o tipo de dados que os ajuda a personalizar golpes de phishing. Evite compartilhar muitos detalhes (DoB, cidade natal, escola, etc.).", + "details": "As informações de perfil criam uma mina de ouro de informações para hackers, o tipo de dados que os ajuda a personalizar golpes de phishing. Evite compartilhar muitos detalhes (data de nascimento, cidade natal, escola etc.).", "slug": "social-media-don-t-reveal-too-much" }, { @@ -682,7 +682,7 @@ { "point": "Não conceda permissões desnecessárias", "priority": "Essential", - "details": "Por padrão, muitos dos aplicativos populares de redes sociais solicitarão permissão para acessar seus contatos, registro de chamadas, localização, histórico de mensagens, etc.", + "details": "Por padrão, muitos aplicativos populares de redes sociais solicitarão permissão para acessar seus contatos, registro de chamadas, localização, histórico de mensagens etc. Se não precisarem desse acesso, não o conceda.", "slug": "social-media-don-t-grant-unnecessary-permissions" }, { @@ -694,7 +694,7 @@ { "point": "Evite publicar dados geográficos enquanto ainda estiver no local", "priority": "Essential", - "details": "Se você planeja compartilhar qualquer conteúdo que revele um local, espere até sair desse local. Isto é particularmente importante quando você estiver viajando em um restaurante, campus, hotel/resort, prédio público ou aeroporto.", + "details": "Se você planeja compartilhar qualquer conteúdo que revele sua localização, espere até sair do local. Isso é particularmente importante quando estiver viajando, em um restaurante, campus, hotel ou resort, prédio público ou aeroporto.", "slug": "social-media-avoid-publishing-geo-data-while-still-onsite" }, { @@ -786,7 +786,7 @@ { "point": "Evite o roteador gratuito do seu ISP", "priority": "Optional", - "details": "Normalmente, eles são fabricados a granel e baratos na China, com firmware de propriedade insegura que não recebe atualizações de segurança regulares.", + "details": "Normalmente, eles são fabricados a granel e baratos na China, com firmware proprietário e inseguro que não recebe atualizações de segurança regulares.", "slug": "networks-avoid-the-free-router-from-your-isp" }, { @@ -804,7 +804,7 @@ { "point": "Não revele informações pessoais no SSID", "priority": "Optional", - "details": "Você deve atualizar o nome da sua rede, escolhendo um SSID que não o identifique, inclua seu número/endereço fixo e não especifique a marca/modelo do dispositivo.", + "details": "Você deve atualizar o nome da sua rede, escolhendo um SSID que não o identifique, não inclua o número do seu apartamento ou endereço e não especifique a marca ou o modelo do dispositivo.", "slug": "networks-don-t-reveal-personal-info-in-ssid" }, { @@ -850,7 +850,7 @@ "slug": "networks-kill-unused-processes-and-services-on-your-router" }, { - "point": "Não tenho portas abertas", + "point": "Não tenha portas abertas", "priority": "Optional", "details": "Feche todas as portas abertas em seu roteador que não sejam necessárias. As portas abertas fornecem uma entrada fácil para hackers.", "slug": "networks-don-t-have-open-ports" @@ -956,7 +956,7 @@ { "point": "Apagar após muitas tentativas de login", "priority": "Optional", - "details": "Para se proteger contra um invasor forçando seu PIN, configure seu dispositivo para apagar após muitas tentativas de login malsucedidas.", + "details": "Para se proteger contra um invasor tentando descobrir seu PIN por força bruta, configure seu dispositivo para apagar após muitas tentativas de login malsucedidas.", "slug": "mobile-devices-erase-after-too-many-login-attempts" }, { @@ -1108,7 +1108,7 @@ { "point": "Não vincule seu PC à sua conta Microsoft ou Apple", "priority": "Optional", - "details": "Use uma conta local apenas para evitar sincronização e exposição de dados. Evite usar serviços de sincronização que comprometam a privacidade.", + "details": "Use apenas uma conta local para evitar sincronização e exposição de dados. Evite usar serviços de sincronização que comprometam a privacidade.", "slug": "personal-computers-don-t-link-your-pc-with-your-microsoft-or-apple-account" }, { @@ -1132,7 +1132,7 @@ { "point": "Use um filtro de privacidade", "priority": "Optional", - "details": "Use um filtro de privacidade de tela em espaços públicos para evitar a navegação e proteger informações confidenciais.", + "details": "Use um filtro de privacidade para a tela em espaços públicos, para impedir que pessoas vejam sua tela por cima do seu ombro e proteger informações confidenciais.", "slug": "personal-computers-use-a-privacy-filter" }, { @@ -1144,7 +1144,7 @@ { "point": "Não carregue dispositivos do seu PC", "priority": "Optional", - "details": "Use um banco de energia ou carregador CA de parede em vez do PC para evitar riscos de segurança associados às conexões USB.", + "details": "Use um carregador portátil ou um carregador de parede em vez do PC para evitar riscos de segurança associados às conexões USB.", "slug": "personal-computers-don-t-charge-devices-from-your-pc" }, { @@ -1341,7 +1341,7 @@ "title": "Finanças Pessoais", "slug": "personal-finance", "description": "Protegendo seus fundos, contas financeiras e transações", - "intro": "A fraude de cartão de crédito é a forma mais comum de roubo de identidade (com [133.015 relatos apenas nos EUA em 2017](https://www.experian.com/blogs/ask-experian/identity-theft-statistics/)) e uma perda total de US$ 905 milhões, o que representou um aumento de 26% em relação ao ano anterior. O valor médio perdido por pessoa foi de US$ 429 em 2017. É mais importante do que nunca tomar medidas básicas para se proteger de ser vítima\nObservação sobre cartões de crédito: Os cartões de crédito possuem métodos tecnológicos para detectar e impedir algumas transações fraudulentas. Os principais processadores de pagamentos implementam isso, extraindo enormes quantidades de dados dos titulares de seus cartões, a fim de saber muito sobre os hábitos de consumo de cada pessoa. Esses dados são usados para identificar fraudes, mas também são vendidos a outros corretores de dados. Os cartões de crédito são, portanto, bons para a segurança, mas terríveis para a privacidade dos dados.", + "intro": "A fraude de cartão de crédito é a forma mais comum de roubo de identidade (com [133.015 relatos apenas nos EUA em 2017](https://www.experian.com/blogs/ask-experian/identity-theft-statistics/)) e uma perda total de US$ 905 milhões, o que representou um aumento de 26% em relação ao ano anterior. O valor mediano perdido por pessoa foi de US$ 429 em 2017. É mais importante do que nunca tomar medidas básicas para se proteger de ser vítima\nObservação sobre cartões de crédito: Os cartões de crédito possuem métodos tecnológicos para detectar e impedir algumas transações fraudulentas. Os principais processadores de pagamentos implementam isso, extraindo enormes quantidades de dados dos titulares de seus cartões, a fim de saber muito sobre os hábitos de consumo de cada pessoa. Esses dados são usados para identificar fraudes, mas também são vendidos a outros corretores de dados. Os cartões de crédito são, portanto, bons para a segurança, mas terríveis para a privacidade dos dados.", "checklist": [ { "point": "Inscreva-se para receber alertas de fraude e monitoramento de crédito", @@ -1386,7 +1386,7 @@ "slug": "personal-finance-buy-crypto-anonymously" }, { - "point": "Tombar/Misturar Moedas", + "point": "Misture suas criptomoedas (tumbling)", "priority": "Advanced", "details": "Use um misturador de bitcoin ou CoinJoin antes de converter Bitcoin em moeda para ocultar trilhas de transação.", "slug": "personal-finance-tumble-mix-coins" @@ -1466,7 +1466,7 @@ "slug": "human-aspect-store-personal-data-securely" }, { - "point": "Detalhes pessoais obscuros de documentos", + "point": "Oculte detalhes pessoais em documentos", "priority": "Essential", "details": "Ao compartilhar documentos, oculte detalhes pessoais com retângulos opacos para evitar vazamento de informações.", "slug": "human-aspect-obscure-personal-details-from-documents" @@ -1520,7 +1520,7 @@ "slug": "human-aspect-compartmentalize" }, { - "point": "Quem é o protetor de privacidade", + "point": "Use o WhoIs Privacy Guard", "priority": "Advanced", "details": "Use o WhoIs Privacy Guard para registros de domínio para proteger suas informações pessoais de pesquisas públicas.", "slug": "human-aspect-whois-privacy-guard" @@ -1548,13 +1548,13 @@ { "point": "Destrua documentos confidenciais", "priority": "Essential", - "details": "Destrua ou edite documentos confidenciais antes de descartá-los para protegê-los contra\nroubo de identidade e manter a confidencialidade.", + "details": "Destrua ou tarje documentos confidenciais antes de descartá-los para protegê-los contra roubo de identidade e manter a confidencialidade.", "slug": "physical-security-destroy-sensitive-documents" }, { - "point": "Desativação de registros públicos", + "point": "Remova-se dos registros públicos", "priority": "Essential", - "details": "Entre em contato com pessoas que pesquisam sites para cancelar listagens que mostram a personalidade\ninformações, usando guias como o Manual de Remoção de Dados Pessoais de Michael Bazzell.", + "details": "Entre em contato com sites de busca de pessoas para remover listagens que exibem informações pessoais, usando guias como o Manual de Remoção de Dados Pessoais de Michael Bazzell.", "slug": "physical-security-opt-out-of-public-records" }, { @@ -1564,7 +1564,7 @@ "slug": "physical-security-watermark-documents" }, { - "point": "Não revele informações sobre chamadas recebidas", + "point": "Não revele informações em chamadas recebidas", "priority": "Essential", "details": "Compartilhe apenas dados pessoais nas chamadas que você iniciar e verifique o número de telefone do destinatário.", "slug": "physical-security-don-t-reveal-info-on-inbound-calls" @@ -1624,7 +1624,7 @@ "slug": "physical-security-reduce-exposure-to-cctv" }, { - "point": "Roupas de reconhecimento antifacial", + "point": "Roupas que dificultam o reconhecimento facial", "priority": "Advanced", "details": "Use roupas com padrões que enganem a tecnologia de reconhecimento facial.", "slug": "physical-security-anti-facial-recognition-clothing" @@ -1638,7 +1638,7 @@ { "point": "Proteja seu DNA", "priority": "Advanced", - "details": "Evite compartilhar DNA com sites históricos e tenha cuidado ao deixar vestígios de DNA.", + "details": "Evite compartilhar DNA com sites de genealogia ou ancestralidade e tenha cuidado ao deixar vestígios de DNA.", "slug": "physical-security-protect-your-dna" } ] From 7796304dcd619eefcd9a2d6dd67307bcbe584130 Mon Sep 17 00:00:00 2001 From: Vitor Parras Date: Tue, 25 Aug 2026 15:06:13 -0300 Subject: [PATCH 11/13] Docs(readme): add Brazilian Portuguese README translation --- README.md | 2 +- README_FR.md | 2 +- README_PT-BR.md | 169 ++++++++++++++++++++++++++++++++++++++++++++++++ README_RU.md | 2 +- README_ZH.md | 2 +- README_ZH_TW.md | 2 +- 6 files changed, 174 insertions(+), 5 deletions(-) create mode 100644 README_PT-BR.md diff --git a/README.md b/README.md index 1e23bd8ee..9c5d5ef53 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ ![CodeQL](https://github.com/jason5ng32/MyIP/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main) ![Docker Build and Push](https://github.com/jason5ng32/MyIP/actions/workflows/docker-image.yml/badge.svg?branch=main) -[English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) +[English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) | [Português (BR)](README_PT-BR.md) 👉 Demo: [https://ipcheck.ing](https://ipcheck.ing) diff --git a/README_FR.md b/README_FR.md index 94552a6ff..14b1891d3 100644 --- a/README_FR.md +++ b/README_FR.md @@ -18,7 +18,7 @@ ![CodeQL](https://github.com/jason5ng32/MyIP/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main) ![Docker Build and Push](https://github.com/jason5ng32/MyIP/actions/workflows/docker-image.yml/badge.svg?branch=main) -[English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) +[English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) | [Português (BR)](README_PT-BR.md) 👉 Démo: [https://ipcheck.ing](https://ipcheck.ing) diff --git a/README_PT-BR.md b/README_PT-BR.md new file mode 100644 index 000000000..30bff2d5f --- /dev/null +++ b/README_PT-BR.md @@ -0,0 +1,169 @@ +# 🧰 MyIP - Uma caixa de ferramentas de IP aprimorada + +> Esta é uma tradução mantida pela comunidade; o README em inglês é a fonte canônica e esta versão pode ficar desatualizada. + +
+ +![IPCheck.ing Banner](https://raw.githubusercontent.com/jason5ng32/MyIP/main/public/github/gh_banner.png) + +jason5ng32%2FMyIP | Trendshift + +[![Mentioned in Awesome Self Hosted](https://awesome.re/mentioned-badge.svg)](https://github.com/awesome-selfhosted/awesome-selfhosted) + +![GitHub Repo stars](https://img.shields.io/github/stars/jason5ng32/MyIP) +![GitHub forks](https://img.shields.io/github/forks/jason5ng32/myip) +![Docker Pulls](https://img.shields.io/docker/pulls/jason5ng32/myip) + +[![Website](https://img.shields.io/website?url=https%3A%2F%2Fipcheck.ing&up_message=online&label=IPCheck.ing 'IPCheck.ing')](https://ipcheck.ing) +![PWA](https://img.shields.io/badge/PWA-Supported-blue) + +![CodeQL](https://github.com/jason5ng32/MyIP/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main) +![Docker Build and Push](https://github.com/jason5ng32/MyIP/actions/workflows/docker-image.yml/badge.svg?branch=main) + +[English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) | [Português (BR)](README_PT-BR.md) + +👉 Demonstração: [https://ipcheck.ing](https://ipcheck.ing) + +Adicione a demonstração aos favoritos ou faça sua própria implantação. + +[![Deploy with Docker](https://raw.githubusercontent.com/jason5ng32/MyIP/main/public/github/Docker.svg)](https://hub.docker.com/r/jason5ng32/myip) + +
+ +## 👀 Principais recursos + +* 🛜 **Veja seus IPs**: Detecta e exibe seus IPs locais a partir de vários provedores IPv4 e IPv6. +* 🔍 **Consulte informações sobre IPs**: Fornece uma ferramenta para consultar informações sobre qualquer endereço IP. +* 🕵️ **Informações de IP**: Apresenta informações detalhadas de todos os endereços IP, incluindo país, região, ASN, localização geográfica e muito mais. +* 🛰️ **Histórico de ASN e topologia de upstream**: Visualize anúncios históricos de AS para um prefixo IP e os caminhos de upstream de um ASN até as redes de backbone Tier 1. +* 🚦 **Teste de disponibilidade**: Testa a acessibilidade de vários sites, como Google, GitHub, YouTube, ChatGPT e outros. +* 📡 **Status dos serviços**: Exibe a disponibilidade atual de serviços conhecidos, como Claude, OpenAI, GitHub e Cloudflare, a partir de suas páginas oficiais de status, com o status de cada serviço e incidentes recentes. +* 🚥 **Detecção de WebRTC**: Identifica o endereço IP usado durante conexões WebRTC. +* 🛑 **Teste de vazamento de DNS**: Exibe dados de endpoints DNS para avaliar o risco de vazamentos de DNS ao usar VPNs ou proxies. +* 🚀 **Teste de velocidade**: Testa a velocidade da sua rede com redes de borda. +* 🚏 **Teste de regras de proxy**: Testa as configurações de regras de software de proxy para assegurar que funcionem corretamente. +* ⏱️ **Teste global de latência**: Realiza testes de latência em servidores localizados em diferentes regiões do mundo. +* 🚉 **Teste MTR**: Realiza testes MTR em servidores localizados em diferentes regiões do mundo. +* 🔦 **Resolvedor DNS**: Resolve nomes de domínio a partir de diversas fontes e obtém resultados de resolução em tempo real que podem ser usados para determinar se há contaminação. +* 🚧 **Verificação de censura**: Verifica se um site está bloqueado em determinados países. +* 📓 **Consulta Whois**: Realiza consultas Whois para nomes de domínio ou endereços IP. +* 📀 **Consulta MAC**: Consulta informações sobre um endereço físico. +* 🖥️ **Impressões digitais do navegador**: Oferece várias formas de calcular a impressão digital do seu navegador. +* 📋 **Checklist de cibersegurança**: Um checklist abrangente de cibersegurança com um total de 258 itens. + +## 💪 Também + +* 🌗 **Modo escuro**: Alterna automaticamente entre os modos escuro e claro com base nas configurações do sistema, além de permitir a alteração manual. +* 📲 **Suporte a PWA**: Pode ser instalado como aplicativo no celular e como app do Chrome no computador. +* ⌨️ **Atalhos de teclado**: Oferece atalhos de teclado para todas as funções; pressione `?` para ver a lista de atalhos. +* 🌍 Com base nos resultados dos testes de disponibilidade, indica se o acesso global à Internet está viável no momento. +* 🔤 Compatível com diversos idiomas. + +## 📕 Como usar + +### Implantação em um ambiente Node + +Certifique-se de que o Node.js esteja instalado. + +Clone o código: + +```bash +git clone https://github.com/jason5ng32/MyIP.git +``` + +Instale e compile. Este projeto usa pnpm — se você ainda não o tiver, instale-o primeiro (o npm acompanha o Node; portanto, este comando sempre funciona): + +```bash +npm install -g pnpm +pnpm install && pnpm run build +``` + +Execute: + +```bash +pnpm start +``` + +O programa será executado na porta 18966. + +### Uso com Docker + +Clique no botão “Deploy to Docker” no topo deste documento para concluir a implantação. Ou use o comando a seguir: + +```bash +docker run -d -p 18966:18966 --name myip --restart always jason5ng32/myip:latest +``` + +## 📖 Documentação + +Os guias completos estão no Centro de Documentação do MyIP: **[docs.ipcheck.ing](https://docs.ipcheck.ing)** + +* [Guia do desenvolvedor](https://docs.ipcheck.ing/developer) — implantação, configuração, arquitetura e contribuição +* [Base de conhecimento](https://docs.ipcheck.ing/knowledge-base) — como usar cada ferramenta, diagnóstico de rede passo a passo e conceitos de redes + +## 🤝 Contribuições + +As contribuições são bem-vindas! Mantemos uma seleção de tarefas adequadas para iniciantes — cada uma com caminhos de arquivo exatos, critérios de aceitação e testes que conduzem a uma compilação bem-sucedida: + +* 🏷️ [Issues para iniciantes](https://github.com/jason5ng32/MyIP/labels/good%20first%20issue) — adicione um resolvedor DNS do seu país, inclua listas de sites selecionadas, traduza o README para seu idioma, aprimore traduções e muito mais +* 🌐 [TRANSLATING.md](TRANSLATING.md) — leve a UI ao seu idioma: um pacote de locale e uma linha no registro; uma **tradução parcial é bem-vinda em uma primeira PR** +* 📄 [CONTRIBUTING.md](CONTRIBUTING.md) — instalação, convenções e o fluxo das PRs (direcione-as para a branch `dev`) + +## ⚙️ Configuração + +Dois ajustes são essenciais antes de qualquer outra coisa: + +* **MaxMind GeoLite2 (obrigatório)** — credenciais gratuitas que viabilizam a geolocalização de IP e as consultas ASN. Sem elas, a fonte MaxMind retorna 503. → [Configuração do MaxMind](https://docs.ipcheck.ing/developer/getting-started/maxmind-setup) +* **`ALLOWED_DOMAINS` (obrigatório em um domínio real)** — lista de nomes de host permitidos para a API de backend. Sem ela, toda solicitação proveniente de um domínio que não seja localhost recebe 403. → [Proxy reverso e domínios](https://docs.ipcheck.ing/developer/getting-started/reverse-proxy-and-domains) + +```bash +docker run -d -p 18966:18966 \ + -e MAXMIND_ACCOUNT_ID="YOUR_ACCOUNT_ID" \ + -e MAXMIND_LICENSE_KEY="YOUR_LICENSE_KEY" \ + -e MAXMIND_AUTO_UPDATE="true" \ + -e ALLOWED_DOMAINS="your-domain.com" \ + --name myip --restart always \ + jason5ng32/myip:latest +``` + +Todo o restante — chaves de API opcionais, segurança e limitação de taxa, registros, Sentry e os domínios da API curl — está documentado na [referência de variáveis de ambiente](https://docs.ipcheck.ing/developer/reference/environment-variables). + + +## 👩🏻‍💻 Uso avançado + +Se você usa um proxy para acessar a Internet, considere adicionar esta regra à configuração do proxy e adaptá-la ao seu cliente. Essa configuração permite verificar tanto seu IP real quanto o IP usado com o proxy: + +```ini +# IP Testing +IP-CIDR,1.0.0.2/32,Proxy,no-resolve +IP-CIDR6,2606:4700:4700::1111/128,Proxy,no-resolve +DOMAIN,4.ipcheck.ing,DIRECT +DOMAIN,6.ipcheck.ing,DIRECT +# Rule Testing +DOMAIN,ptest-1.ipcheck.ing,Proxy1 +DOMAIN,ptest-2.ipcheck.ing,Proxy2 +DOMAIN,ptest-3.ipcheck.ing,Proxy3 +DOMAIN,ptest-4.ipcheck.ing,Proxy4 +DOMAIN,ptest-5.ipcheck.ing,Proxy5 +DOMAIN,ptest-6.ipcheck.ing,Proxy6 +DOMAIN,ptest-7.ipcheck.ing,Proxy7 +DOMAIN,ptest-8.ipcheck.ing,Proxy8 +``` + +## 💖 Patrocinadores + +Como projeto de código aberto, somos muito gratos aos seguintes patrocinadores pelo apoio: + + + +1Password + +Greptile + +Sentry + +GitBook + +v.ps + +Cloudflare Project Alexandria diff --git a/README_RU.md b/README_RU.md index de6f2c5df..25af97cf0 100644 --- a/README_RU.md +++ b/README_RU.md @@ -18,7 +18,7 @@ ![CodeQL](https://github.com/jason5ng32/MyIP/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main) ![Сборка и публикация Docker](https://github.com/jason5ng32/MyIP/actions/workflows/docker-image.yml/badge.svg?branch=main) -[English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) +[English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) | [Português (BR)](README_PT-BR.md) 👉 Демо: [https://ipcheck.ing](https://ipcheck.ing) diff --git a/README_ZH.md b/README_ZH.md index 598cbaefc..701f3d5b3 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -18,7 +18,7 @@ ![CodeQL](https://github.com/jason5ng32/MyIP/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main) ![Docker Build and Push](https://github.com/jason5ng32/MyIP/actions/workflows/docker-image.yml/badge.svg?branch=main) -[English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) +[English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) | [Português (BR)](README_PT-BR.md) 👉 在这里体验:[https://ipcheck.ing](https://ipcheck.ing) diff --git a/README_ZH_TW.md b/README_ZH_TW.md index 3c5ca48de..4aad93f82 100644 --- a/README_ZH_TW.md +++ b/README_ZH_TW.md @@ -18,7 +18,7 @@ ![CodeQL](https://github.com/jason5ng32/MyIP/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main) ![Docker Build and Push](https://github.com/jason5ng32/MyIP/actions/workflows/docker-image.yml/badge.svg?branch=main) -[English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) +[English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) | [Português (BR)](README_PT-BR.md) 👉 在這裡體驗:[https://ipcheck.ing](https://ipcheck.ing) From 2ce2f3298eec782a3609eb212af431ec60016f03 Mon Sep 17 00:00:00 2001 From: jason5ng32 Date: Wed, 26 Aug 2026 09:25:49 +0800 Subject: [PATCH 12/13] Docs(readme): restructure README and rebuild all translations The feature list had fallen behind the product (v7.x additions missing, stale copy) and 18 flat bullets scanned poorly. Regroup features into five sections, adopt GFM alerts for the required configuration, collapse the proxy rules into a details block, put Docker before Node, add the missing License section, and fix long-standing typos. All five translations are rebuilt from the new English text with tool names aligned to each UI locale pack, plus a community-maintained disclaimer. Co-Authored-By: Claude Fable 5 --- README.md | 134 ++++++++++++++++++++++---------------- README_FR.md | 159 ++++++++++++++++++++++++++------------------- README_PT-BR.md | 137 +++++++++++++++++++++++---------------- README_RU.md | 169 ++++++++++++++++++++++++++++-------------------- README_ZH.md | 149 +++++++++++++++++++++++++----------------- README_ZH_TW.md | 149 +++++++++++++++++++++++++----------------- 6 files changed, 527 insertions(+), 370 deletions(-) diff --git a/README.md b/README.md index 9c5d5ef53..8212d0c3b 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,8 @@ [English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) | [Português (BR)](README_PT-BR.md) +An open-source, all-in-one IP toolbox: IP lookup from multiple sources, connectivity tests, WebRTC & DNS-leak detection, speed test, MTR, censorship checks, Whois, and more — self-hostable with one Docker command. + 👉 Demo: [https://ipcheck.ing](https://ipcheck.ing) Feel free to bookmark the demo or deploy your own. @@ -28,42 +30,63 @@ Feel free to bookmark the demo or deploy your own.
-## 👀 Main Features - -* 🛜 **View Your IPs**: Detects and displays your local IPs, sourcing from multiple IPv4 and IPv6 providers. -* 🔍 **Search IP Information**: Provides a tool for querying information about any IP address. -* 🕵️ **IP Information**: Presents detailed information for all IP addresses, including country, region, ASN, geographic location, and more. -* 🛰️ **ASN History & Upstream Topology**: View historical AS announcements for an IP prefix, and visualize the upstream paths from an ASN to the Tier 1 backbone networks. -* 🚦 **Availability Check**: Tests the accessibility of various websites, such as Google, GitHub, YouTube, ChatGPT, and others. -* 📡 **Service Status**: Shows the live availability of well-known services (Claude, OpenAI, GitHub, Cloudflare, and more) from their official status pages, with per-service status and recent incidents. -* 🚥 **WebRTC Detection**: Identifies the IP address used during WebRTC connections. -* 🛑 **DNS Leak Test**: Shows DNS endpoint data to evaluate the risk of DNS leaks when using VPNs or proxies. -* 🚀 **Speed Test**:Test your network speed with edge networks. -* 🚏 **Proxy Rule Testing**: Test the rule settings of proxy software to ensure their correctness. -* ⏱️ **Global Latency Test**: Performe lantency tests on servers located in different regions around the world. -* 🚉 **MTR Test**: Perform MTR tests on servers located in different regions around the world. -* 🔦 **DNS Resolver**: Performs DNS resolution of a domain name from multiple sources and obtains real-time resolution results that can be used for contamination determination. -* 🚧 **Censorship Check**: Check if a website is blocked in some countries. -* 📓 **Whois Search**: Perform whois information search for domain names or IP addresses -* 📀 **MAC Lookup**: Query information of a physical address -* 🖥️ **Browser Fingerprints**:Multiple ways to caculate your browser fingerprint -* 📋 **Cybersecurity Checklist**:A comprehensive cybersecurity checklist with a total of 258 items - -## 💪 Also - -* 🌗 **Dark Mode**: Automatically toggles between dark and daylight modes based on system settings, with an option for manual switching. -* 📲 **PWA Supported**:Can be added as a desktop app on your phone as well as a Chrome app on your computer. -* ⌨️ **Keyboard Shortcuts**: Supports keyboard shortcuts for all functions, press `?` to view the shortcut list. -* 🌍 Based on availability test results, it indicates whether global internet access is currently feasible. -* 🔤 Multiple languages supported. +## 👀 Features + +### 🪪 Your IP & Identity + +* 🛜 **IP Cards**: Detects your IPv4 and IPv6 from multiple independent sources side by side — country, region, city, ASN, organization, and the IP's local time zone. +* 🔍 **Query IP**: Looks up the same detailed information for any IP address you're curious about. +* 🧾 **IP History**: Keeps a local record of the IPs you've been seen with, filterable by type and country — stored in your browser only. +* 🖥️ **Browser Fingerprint**: Calculates your browser fingerprint in multiple ways and shows what makes you identifiable. + +### 🕵️ Leaks & Privacy + +* 🚥 **WebRTC Detection**: Reveals the IP address exposed during WebRTC connections — including whether your browser's privacy hardening is on. +* 🛑 **DNS Leak Test**: Shows which DNS endpoints resolve your queries, to evaluate the risk of DNS leaks when using VPNs or proxies. +* 📋 **Security Checklist**: A 258-item personal cybersecurity checklist across 12 areas, with progress saved in your browser. + +### 📡 Network Tests + +* 🚦 **Connectivity Check**: Tests the reachability of up to 60 sites of your choice, with multi-round minimum-latency results — plus curated import lists, from country packs to AI, social, streaming, gaming, developer, and more. Based on the results, it signals whether global internet access is currently feasible for you. +* 🚀 **Speed Test**: Measures your download, upload, and latency against edge networks. +* ⏱️ **Global Latency Test**: Pings your target from probes all over the world — pick countries from all available Globalping probes, grouped by continent. +* 🚉 **MTR Test**: Runs MTR from globally distributed probes to see the route packets actually take. +* 🚧 **Censorship Check**: Shows where a website is blocked worldwide — and by what means. +* 🚏 **Proxy Rule Test**: Verifies that your proxy software's rule configuration works the way you intended. + +### 🔦 Lookup & Infrastructure + +* 📟 **DNS Resolver**: Resolves a domain through multiple resolvers at once, grouped by country — an easy way to spot hijacking or contamination. +* 📓 **Whois Search**: Performs Whois lookups for domain names and IP addresses. +* 🗄️ **MAC Lookup**: Identifies the vendor and details behind a physical address. +* 🛰️ **ASN Info & Upstream Topology**: Shows AS details, historical announcements for an IP prefix, and the upstream paths from an ASN to the Tier 1 backbone. +* 📶 **Service Status**: Live availability of well-known services — Claude, OpenAI, GitHub, Cloudflare, and more — from their official status pages, with recent incidents. + +### ✨ Platform + +* 📤 **Shareable Reports**: Turn your test results into a diagnostic report — a read-only link with auto-expiry, AI-ready Markdown, or JSON. +* ⌨️ **Curl API**: Get your IP from the terminal with a single `curl` command. +* 🌍 **Earth Online**: A panel broadcasting global internet outage events as they happen. +* 🌗 **Dark Mode**: Follows your system automatically, with a manual toggle. +* 📲 **PWA**: Installable as an app on your phone and as a Chrome app on your desktop. +* ⚡ **Keyboard Shortcuts**: Every function has one — press `?` to see the list. +* 🔤 **Multiple Languages**: The UI ships in 6 languages, and adding yours takes one locale pack. ## 📕 How to Use -### Deploying in a Node Environment +### Using Docker -Make sure you have Node.js installed. +One command and you're up: -Clone the code: +```bash +docker run -d -p 18966:18966 --name myip --restart always jason5ng32/myip:latest +``` + +Or click the "Deploy with Docker" button at the top of this page. + +### Deploying in a Node Environment + +Make sure you have Node.js installed, then clone the code: ```bash git clone https://github.com/jason5ng32/MyIP.git @@ -84,14 +107,26 @@ pnpm start The program will run on port 18966. -### Using Docker +## ⚙️ Configuration + +> [!IMPORTANT] +> **MaxMind GeoLite2 credentials are required.** They power IP geolocation and ASN lookups — without them, the MaxMind source returns 503. They're free: → [MaxMind Setup](https://docs.ipcheck.ing/developer/getting-started/maxmind-setup) -Click the 'Deploy to Docker' button at the top to complete the deployment. Or, use the following shell: +> [!WARNING] +> **`ALLOWED_DOMAINS` is required on a real domain.** It's the hostname allowlist for the backend API — without it, every request from a non-localhost domain gets 403. → [Reverse Proxy & Domains](https://docs.ipcheck.ing/developer/getting-started/reverse-proxy-and-domains) ```bash -docker run -d -p 18966:18966 --name myip --restart always jason5ng32/myip:latest +docker run -d -p 18966:18966 \ + -e MAXMIND_ACCOUNT_ID="YOUR_ACCOUNT_ID" \ + -e MAXMIND_LICENSE_KEY="YOUR_LICENSE_KEY" \ + -e MAXMIND_AUTO_UPDATE="true" \ + -e ALLOWED_DOMAINS="your-domain.com" \ + --name myip --restart always \ + jason5ng32/myip:latest ``` +Everything else — optional API keys, security & rate limiting, logging, Sentry, the curl API domains — is documented in the [Environment Variables reference](https://docs.ipcheck.ing/developer/reference/environment-variables). + ## 📖 Documentation Full guides live in the MyIP Docs Center: **[docs.ipcheck.ing](https://docs.ipcheck.ing)** @@ -107,28 +142,11 @@ Contributions are welcome! We keep a curated set of beginner-friendly tasks — * 🌐 [TRANSLATING.md](TRANSLATING.md) — bring the UI to your language: a locale pack plus one registry line, and a **partial translation is a welcome first PR** * 📄 [CONTRIBUTING.md](CONTRIBUTING.md) — setup, conventions, and how PRs flow (target the `dev` branch) -## ⚙️ Configuration - -Two settings matter before anything else: - -* **MaxMind GeoLite2 (required)** — free credentials that power IP geolocation and ASN lookups. Without them, the MaxMind source returns 503. → [MaxMind Setup](https://docs.ipcheck.ing/developer/getting-started/maxmind-setup) -* **`ALLOWED_DOMAINS` (required on a real domain)** — hostname allowlist for the backend API. Without it, every request from a non-localhost domain gets 403. → [Reverse Proxy & Domains](https://docs.ipcheck.ing/developer/getting-started/reverse-proxy-and-domains) - -```bash -docker run -d -p 18966:18966 \ - -e MAXMIND_ACCOUNT_ID="YOUR_ACCOUNT_ID" \ - -e MAXMIND_LICENSE_KEY="YOUR_LICENSE_KEY" \ - -e MAXMIND_AUTO_UPDATE="true" \ - -e ALLOWED_DOMAINS="your-domain.com" \ - --name myip --restart always \ - jason5ng32/myip:latest -``` - -Everything else — optional API keys, security & rate limiting, logging, Sentry, the curl API domains — is documented in the [Environment Variables reference](https://docs.ipcheck.ing/developer/reference/environment-variables). - - ## 👩🏻‍💻 Advanced Usage +
+Proxy rules for checking your real IP and your proxy IP at the same time + If you're using a proxy for internet access, consider adding this rule to your proxy configuration (modify it according to your client). This setup lets you check both your real IP and the IP when using the proxy: ```ini @@ -148,9 +166,11 @@ DOMAIN,ptest-7.ipcheck.ing,Proxy7 DOMAIN,ptest-8.ipcheck.ing,Proxy8 ``` +
+ ## 💖 Sponsors -As a open source project, I'm very grateful to the following sponsors for their support: +As an open source project, I'm very grateful to the following sponsors for their support: @@ -165,3 +185,7 @@ As a open source project, I'm very grateful to the following sponsors for their v.ps Cloudflare Project Alexandria + +## 📄 License + +[MIT](LICENSE) © Jason Ng diff --git a/README_FR.md b/README_FR.md index 14b1891d3..94d750318 100644 --- a/README_FR.md +++ b/README_FR.md @@ -1,5 +1,8 @@ # 🧰 MyIP - Une meilleure boîte à outils IP +> [!NOTE] +> Ceci est une traduction maintenue par la communauté ; le README anglais fait foi et cette version peut être en retard sur celui-ci. +
![IPCheck.ing Banner](https://raw.githubusercontent.com/jason5ng32/MyIP/main/public/github/gh_banner.png) @@ -20,99 +23,100 @@ [English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) | [Português (BR)](README_PT-BR.md) -👉 Démo: [https://ipcheck.ing](https://ipcheck.ing) +Une boîte à outils IP tout-en-un et open source : recherche d'IP depuis plusieurs sources, tests de connectivité, détection WebRTC et de fuites DNS, test de vitesse, MTR, vérification de la censure, Whois et plus encore — auto-hébergeable en une seule commande Docker. + +👉 Démo : [https://ipcheck.ing](https://ipcheck.ing) -Notes: Vous pouvez utiliser ma démo gratuitement et vous pouvez également la déployer vous-même. +N'hésitez pas à mettre la démo en favori ou à déployer votre propre instance. [![Deploy with Docker](https://raw.githubusercontent.com/jason5ng32/MyIP/main/public/github/Docker.svg)](https://hub.docker.com/r/jason5ng32/myip)
-## 👀 Principales fonctionnalités - -* 🛜 **Afficher vos adresses IP** : Détecte et affiche votre adresse IP locale, provenant de plusieurs fournisseurs IPv4 et IPv6. -* 🔍 **Recherche d'informations sur l'adresse IP** : Fournit un outil pour interroger des informations sur n'importe quelle adresse IP. -* 🕵️ **Informations sur l'adresse IP** : Présente des informations détaillées pour toutes les adresses IP, y compris le pays, la région, l'ASN, la localisation géographique, et plus encore. -* 🛰️ **Historique ASN et topologie amont** : Consultez l'historique des annonces AS pour un préfixe IP, et visualisez les chemins amont d'un ASN vers les réseaux dorsaux Tier 1. -* 🚦 **Vérification de disponibilité** : Teste l'accessibilité de différents sites web, tels que Google, GitHub, YouTube, ChatGPT, et d'autres. -* 📡 **État des services** : Affiche la disponibilité en temps réel de services populaires (Claude, OpenAI, GitHub, Cloudflare, etc.) depuis leurs pages d'état officielles, avec l'état de chaque sous-service et les incidents récents. -* 🚥 **Détection WebRTC** : Identifie l'adresse IP utilisée lors des connexions WebRTC. -* 🛑 **Test de fuite DNS** : Affiche les données de point de terminaison DNS pour évaluer le risque de fuites DNS lors de l'utilisation de VPN ou de proxies. -* 🚀 **Test de vitesse** : Testez la vitesse de votre réseau avec des réseaux de pointe. -* 🚏 **Test de règles** : Teste si les paramètres de règles fonctionnent correctement avec le logiciel de proxy. -* ⏱️ **Test de latence mondiale** : Effectue des tests de latence sur des serveurs situés dans différentes régions du monde. -* 🚉 **Test MTR** : Effectue des tests MTR sur des serveurs situés dans différentes régions du monde. -* 🔦 **Résolveur DNS** : effectue la résolution DNS d'un nom de domaine à partir de plusieurs sources, obtient les résultats de la résolution en temps réel et peut être utilisé pour la détermination de la contamination. -* 🚧 **Test de Censorship**: Vérifier si un site est bloqué dans certains pays. -* 📓 **Recherche Whois** : Effectuer une recherche d'informations Whois pour les noms de domaine ou les adresses IP -* 📀 **Recherche MAC** : Requête d'informations d'une adresse physique -* 🖥️ **Empreinte digitale du navigateur**: Plusieurs façons de visualiser l'empreinte digitale de votre navigateur -* 📋 **Liste de contrôle de cybersécurité**:: Une liste de contrôle complète de la cybersécurité avec un total de 258 éléments - -## 💪Également - -* 🌗 **Mode sombre** : Bascule automatiquement entre les modes sombre et clair en fonction des paramètres du système, avec une option de basculement manuel. -* 📲 **Prise en charge de PWA** : Peut être ajouté en tant qu'application de bureau sur votre téléphone ainsi qu'en tant qu'application Chrome sur votre ordinateur. -* ⌨️ **Raccourcis clavier** : Prend en charge les raccourcis clavier pour toutes les fonctions, appuyez sur `?` pour afficher la liste des raccourcis. -* 🌍 Basé sur les résultats des tests de disponibilité, il indique si l'accès Internet mondial est actuellement réalisable. -* 🔤 Prise en charge de plusieurs langues. +## 👀 Fonctionnalités -## 📕 Comment utiliser +### 🪪 Votre IP et votre identité -### Déploiement dans un environnement Node +* 🛜 **Cartes IP** : Détecte vos adresses IPv4 et IPv6 depuis plusieurs sources indépendantes, présentées côte à côte — pays, région, ville, ASN, organisation et fuseau horaire local de l'IP. +* 🔍 **Recherche d'IP** : Affiche les mêmes informations détaillées pour n'importe quelle adresse IP qui vous intrigue. +* 🧾 **Historique des IP** : Conserve un enregistrement local des IP sous lesquelles vous avez été vu, filtrable par type et par pays — stocké uniquement dans votre navigateur. +* 🖥️ **Empreinte du navigateur** : Calcule l'empreinte de votre navigateur de plusieurs manières et montre ce qui vous rend identifiable. -Assurez-vous d'avoir Node.js installé. +### 🕵️ Fuites et vie privée -Clonez le code : +* 🚥 **Détection WebRTC** : Révèle l'adresse IP exposée lors des connexions WebRTC — y compris si les protections de confidentialité de votre navigateur sont actives. +* 🛑 **Test de fuite DNS** : Montre quels points de terminaison DNS résolvent vos requêtes, afin d'évaluer le risque de fuite DNS lors de l'utilisation d'un VPN ou d'un proxy. +* 📋 **Liste de contrôle de cybersécurité** : Une liste personnelle de 258 points de cybersécurité répartis en 12 domaines, avec progression sauvegardée dans votre navigateur. -```bash -git clone https://github.com/jason5ng32/MyIP.git -``` +### 📡 Tests réseau -Installer & Construire. Ce projet utilise pnpm — si vous ne l'avez pas, installez-le d'abord (npm est fourni avec Node, donc cette commande fonctionne toujours) : +* 🚦 **Test de connectivité** : Teste l'accessibilité de jusqu'à 60 sites de votre choix, avec la latence minimale mesurée sur plusieurs tours — plus des listes d'import sélectionnées, des packs par pays jusqu'à l'IA, les réseaux sociaux, le streaming, le jeu, le développement et plus encore. D'après les résultats, il indique si l'accès à l'Internet mondial est actuellement possible pour vous. +* 🚀 **Test de vitesse** : Mesure vos débits descendant et montant ainsi que votre latence face à des réseaux edge. +* ⏱️ **Test de latence mondiale** : Mesure le ping vers votre cible depuis des sondes du monde entier — choisissez les pays parmi toutes les sondes Globalping disponibles, regroupées par continent. +* 🚉 **Test MTR** : Lance MTR depuis des sondes réparties dans le monde pour voir la route réellement empruntée par les paquets. +* 🚧 **Test de censure** : Montre où un site web est bloqué dans le monde — et par quels moyens. +* 🚏 **Test de règles de proxy** : Vérifie que la configuration des règles de votre logiciel de proxy fonctionne comme prévu. -```bash -npm install -g pnpm -pnpm install && pnpm run build -``` +### 🔦 Recherches et infrastructure -Exécuter: +* 📟 **Résolveur DNS** : Résout un domaine via plusieurs résolveurs à la fois, regroupés par pays — un moyen simple de repérer un détournement ou une contamination. +* 📓 **Recherche Whois** : Effectue des recherches Whois pour les noms de domaine et les adresses IP. +* 🗄️ **Recherche MAC** : Identifie le fabricant et les détails derrière une adresse physique. +* 🛰️ **Infos ASN et topologie amont** : Affiche les détails d'un AS, l'historique des annonces d'un préfixe IP et les chemins amont d'un ASN vers la dorsale Tier 1. +* 📶 **État des services** : Disponibilité en direct de services connus — Claude, OpenAI, GitHub, Cloudflare et d'autres — depuis leurs pages d'état officielles, avec les incidents récents. -```bash -pnpm start -``` +### ✨ Plateforme -Le programme s'exécutera sur le port 18966. +* 📤 **Rapports partageables** : Transformez vos résultats de test en rapport de diagnostic — un lien en lecture seule à expiration automatique, du Markdown prêt pour l'IA ou du JSON. +* ⌨️ **API curl** : Obtenez votre IP depuis le terminal avec une simple commande `curl`. +* 🌍 **La Terre en ligne** : Un panneau qui diffuse les pannes d'Internet mondiales au moment où elles se produisent. +* 🌗 **Mode sombre** : Suit automatiquement votre système, avec un basculement manuel. +* 📲 **PWA** : Installable comme application sur votre téléphone et comme application Chrome sur votre ordinateur. +* ⚡ **Raccourcis clavier** : Chaque fonction a le sien — appuyez sur `?` pour afficher la liste. +* 🔤 **Multilingue** : L'interface est disponible en 6 langues, et ajouter la vôtre ne demande qu'un paquet de langue. -### Using Docker +## 📕 Comment utiliser + +### Avec Docker -Cliquez sur le bouton 'Déployer sur Docker' en haut pour terminer le déploiement. Ou utilisez le shell suivant : +Une seule commande et c'est parti : ```bash docker run -d -p 18966:18966 --name myip --restart always jason5ng32/myip:latest ``` -## 📖 Documentation +Ou cliquez sur le bouton « Deploy with Docker » en haut de cette page. -Les guides complets se trouvent dans le centre de documentation MyIP : **[docs.ipcheck.ing](https://docs.ipcheck.ing)** (sélecteur de langue en haut à droite) +### Déploiement dans un environnement Node -* [Guide du développeur](https://docs.ipcheck.ing/developer/fr) — déploiement, configuration, architecture et contribution -* [Base de connaissances](https://docs.ipcheck.ing/knowledge-base/fr) — utilisation de chaque outil, diagnostic réseau pas à pas, concepts réseau +Assurez-vous d'avoir Node.js installé, puis clonez le code : -## 🤝 Contribuer +```bash +git clone https://github.com/jason5ng32/MyIP.git +``` -Les contributions sont les bienvenues ! Nous maintenons une sélection de tâches adaptées aux débutants — chacune avec les fichiers précis, les critères d'acceptation et des tests pour vous guider : +Installez et compilez. Ce projet utilise pnpm — si vous ne l'avez pas, installez-le d'abord (npm est fourni avec Node, donc cette commande fonctionne toujours) : -* 🏷️ [Good first issues](https://github.com/jason5ng32/MyIP/labels/good%20first%20issue) — ajouter un résolveur DNS de votre pays, enrichir les listes de sites, traduire le README dans votre langue, améliorer les traductions… -* 🌐 [TRANSLATING.md](TRANSLATING.md) — mettez l'interface à votre langue : un paquet de langue plus une ligne dans le registre, et **des traductions partielles sont les bienvenues pour votre première PR** -* 📄 [CONTRIBUTING.md](CONTRIBUTING.md) — installation, conventions et flux des PR (ciblez la branche `dev`) +```bash +npm install -g pnpm +pnpm install && pnpm run build +``` + +Lancez : + +```bash +pnpm start +``` + +Le programme s'exécutera sur le port 18966. ## ⚙️ Configuration -Deux réglages comptent avant tout : +> [!IMPORTANT] +> **Les identifiants MaxMind GeoLite2 sont requis.** Ils alimentent la géolocalisation IP et les recherches ASN — sans eux, la source MaxMind renvoie une erreur 503. Ils sont gratuits : → [Configuration MaxMind](https://docs.ipcheck.ing/developer/getting-started/maxmind-setup) -* **MaxMind GeoLite2 (requis)** — identifiants gratuits pour la géolocalisation IP et les recherches ASN. Sans eux, la source MaxMind renvoie 503. → [Configuration MaxMind](https://docs.ipcheck.ing/developer/getting-started/fr/maxmind-setup) -* **`ALLOWED_DOMAINS` (requis sur un vrai domaine)** — liste blanche de noms d'hôte pour l'API backend. Sans elle, toute requête venant d'un domaine autre que localhost reçoit un 403. → [Reverse proxy et domaines](https://docs.ipcheck.ing/developer/getting-started/fr/reverse-proxy-and-domains) +> [!WARNING] +> **`ALLOWED_DOMAINS` est requis sur un vrai domaine.** C'est la liste blanche de noms d'hôte pour l'API backend — sans elle, toute requête venant d'un domaine autre que localhost reçoit un 403. → [Reverse proxy et domaines](https://docs.ipcheck.ing/developer/getting-started/reverse-proxy-and-domains) ```bash docker run -d -p 18966:18966 \ @@ -124,15 +128,32 @@ docker run -d -p 18966:18966 \ jason5ng32/myip:latest ``` -Tout le reste — clés API optionnelles, sécurité et limitation de débit, journalisation, Sentry, domaines de l'API curl — est documenté dans la [référence des variables d'environnement](https://docs.ipcheck.ing/developer/reference/fr/environment-variables). +Tout le reste — clés API optionnelles, sécurité et limitation de débit, journalisation, Sentry, domaines de l'API curl — est documenté dans la [référence des variables d'environnement](https://docs.ipcheck.ing/developer/reference/environment-variables). +## 📖 Documentation + +Les guides complets se trouvent dans le centre de documentation MyIP : **[docs.ipcheck.ing](https://docs.ipcheck.ing)** + +* [Guide du développeur](https://docs.ipcheck.ing/developer) — déploiement, configuration, architecture et contribution +* [Base de connaissances](https://docs.ipcheck.ing/knowledge-base) — comment utiliser chaque outil, diagnostic réseau pas à pas et concepts réseau + +## 🤝 Contribuer + +Les contributions sont les bienvenues ! Nous maintenons une sélection de tâches adaptées aux débutants — chacune avec les chemins de fichiers exacts, des critères d'acceptation et des tests qui vous guident jusqu'à un build vert : + +* 🏷️ [Good first issues](https://github.com/jason5ng32/MyIP/labels/good%20first%20issue) — ajouter un résolveur DNS de votre pays, enrichir les listes de sites sélectionnées, traduire le README dans votre langue, peaufiner les traductions, et plus encore +* 🌐 [TRANSLATING.md](TRANSLATING.md) — mettez l'interface dans votre langue : un paquet de langue plus une ligne dans le registre, et **une traduction partielle est une première PR bienvenue** +* 📄 [CONTRIBUTING.md](CONTRIBUTING.md) — installation, conventions et cheminement des PR (ciblez la branche `dev`) ## 👩🏻‍💻 Utilisation avancée -Si vous utilisez un proxy pour accéder à Internet, envisagez d'ajouter cette règle à votre configuration de proxy (modifiez-la en fonction de votre client). Cette configuration vous permet de vérifier à la fois votre véritable adresse IP et l'adresse IP lorsque vous utilisez le proxy : +
+Règles de proxy pour vérifier en même temps votre IP réelle et votre IP de proxy + +Si vous utilisez un proxy pour accéder à Internet, envisagez d'ajouter cette règle à votre configuration de proxy (adaptez-la à votre client). Cette configuration vous permet de vérifier à la fois votre véritable adresse IP et celle utilisée via le proxy : ```ini -# Test d'adresse IP +# IP Testing IP-CIDR,1.0.0.2/32,Proxy,no-resolve IP-CIDR6,2606:4700:4700::1111/128,Proxy,no-resolve DOMAIN,4.ipcheck.ing,DIRECT @@ -148,9 +169,11 @@ DOMAIN,ptest-7.ipcheck.ing,Proxy7 DOMAIN,ptest-8.ipcheck.ing,Proxy8 ``` +
+ ## 💖 Sponsors -En tant que projet open source, je suis très reconnaissant aux sponsors suivants pour leur soutien : +En tant que projet open source, je suis très reconnaissant aux sponsors suivants pour leur soutien : @@ -162,6 +185,10 @@ En tant que projet open source, je suis très reconnaissant aux sponsors suivant GitBook -v.ps +v.ps Cloudflare Project Alexandria + +## 📄 Licence + +[MIT](LICENSE) © Jason Ng diff --git a/README_PT-BR.md b/README_PT-BR.md index 30bff2d5f..c4c47eae0 100644 --- a/README_PT-BR.md +++ b/README_PT-BR.md @@ -1,5 +1,6 @@ # 🧰 MyIP - Uma caixa de ferramentas de IP aprimorada +> [!NOTE] > Esta é uma tradução mantida pela comunidade; o README em inglês é a fonte canônica e esta versão pode ficar desatualizada.
@@ -22,6 +23,8 @@ [English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) | [Português (BR)](README_PT-BR.md) +Uma caixa de ferramentas de IP completa e de código aberto: consulta de IP a partir de múltiplas fontes, testes de conectividade, detecção de WebRTC e de vazamento de DNS, teste de velocidade, MTR, verificação de censura, Whois e muito mais — auto-hospedável com um único comando Docker. + 👉 Demonstração: [https://ipcheck.ing](https://ipcheck.ing) Adicione a demonstração aos favoritos ou faça sua própria implantação. @@ -30,42 +33,63 @@ Adicione a demonstração aos favoritos ou faça sua própria implantação.
-## 👀 Principais recursos - -* 🛜 **Veja seus IPs**: Detecta e exibe seus IPs locais a partir de vários provedores IPv4 e IPv6. -* 🔍 **Consulte informações sobre IPs**: Fornece uma ferramenta para consultar informações sobre qualquer endereço IP. -* 🕵️ **Informações de IP**: Apresenta informações detalhadas de todos os endereços IP, incluindo país, região, ASN, localização geográfica e muito mais. -* 🛰️ **Histórico de ASN e topologia de upstream**: Visualize anúncios históricos de AS para um prefixo IP e os caminhos de upstream de um ASN até as redes de backbone Tier 1. -* 🚦 **Teste de disponibilidade**: Testa a acessibilidade de vários sites, como Google, GitHub, YouTube, ChatGPT e outros. -* 📡 **Status dos serviços**: Exibe a disponibilidade atual de serviços conhecidos, como Claude, OpenAI, GitHub e Cloudflare, a partir de suas páginas oficiais de status, com o status de cada serviço e incidentes recentes. -* 🚥 **Detecção de WebRTC**: Identifica o endereço IP usado durante conexões WebRTC. -* 🛑 **Teste de vazamento de DNS**: Exibe dados de endpoints DNS para avaliar o risco de vazamentos de DNS ao usar VPNs ou proxies. -* 🚀 **Teste de velocidade**: Testa a velocidade da sua rede com redes de borda. -* 🚏 **Teste de regras de proxy**: Testa as configurações de regras de software de proxy para assegurar que funcionem corretamente. -* ⏱️ **Teste global de latência**: Realiza testes de latência em servidores localizados em diferentes regiões do mundo. -* 🚉 **Teste MTR**: Realiza testes MTR em servidores localizados em diferentes regiões do mundo. -* 🔦 **Resolvedor DNS**: Resolve nomes de domínio a partir de diversas fontes e obtém resultados de resolução em tempo real que podem ser usados para determinar se há contaminação. -* 🚧 **Verificação de censura**: Verifica se um site está bloqueado em determinados países. -* 📓 **Consulta Whois**: Realiza consultas Whois para nomes de domínio ou endereços IP. -* 📀 **Consulta MAC**: Consulta informações sobre um endereço físico. -* 🖥️ **Impressões digitais do navegador**: Oferece várias formas de calcular a impressão digital do seu navegador. -* 📋 **Checklist de cibersegurança**: Um checklist abrangente de cibersegurança com um total de 258 itens. - -## 💪 Também - -* 🌗 **Modo escuro**: Alterna automaticamente entre os modos escuro e claro com base nas configurações do sistema, além de permitir a alteração manual. -* 📲 **Suporte a PWA**: Pode ser instalado como aplicativo no celular e como app do Chrome no computador. -* ⌨️ **Atalhos de teclado**: Oferece atalhos de teclado para todas as funções; pressione `?` para ver a lista de atalhos. -* 🌍 Com base nos resultados dos testes de disponibilidade, indica se o acesso global à Internet está viável no momento. -* 🔤 Compatível com diversos idiomas. +## 👀 Recursos + +### 🪪 Seu IP e identidade + +* 🛜 **Cartões de IP**: Detecta seus IPv4 e IPv6 a partir de várias fontes independentes, lado a lado — país, região, cidade, ASN, organização e o fuso horário local do IP. +* 🔍 **Verificação de IP**: Consulta as mesmas informações detalhadas de qualquer endereço IP que despertar sua curiosidade. +* 🧾 **Histórico de IP**: Mantém um registro local dos IPs com os quais você já foi visto, filtrável por tipo e país — armazenado apenas no seu navegador. +* 🖥️ **Impressão digital do navegador**: Calcula a impressão digital do seu navegador de várias formas e mostra o que torna você identificável. + +### 🕵️ Vazamentos e privacidade + +* 🚥 **Detecção de WebRTC**: Revela o endereço IP exposto durante conexões WebRTC — inclusive se as proteções de privacidade do seu navegador estão ativas. +* 🛑 **Teste de vazamento de DNS**: Mostra quais endpoints DNS resolvem suas consultas, para avaliar o risco de vazamentos de DNS ao usar VPNs ou proxies. +* 📋 **Checklist de segurança**: Um checklist pessoal de cibersegurança com 258 itens em 12 áreas, com progresso salvo no seu navegador. + +### 📡 Testes de rede + +* 🚦 **Conectividade de rede**: Testa a acessibilidade de até 60 sites da sua escolha, com resultados de latência mínima em múltiplas rodadas — além de listas de importação selecionadas, de pacotes por país a IA, redes sociais, streaming, jogos, desenvolvimento e mais. Com base nos resultados, indica se o acesso global à Internet está viável para você no momento. +* 🚀 **Teste de velocidade**: Mede seu download, upload e latência em redes de borda. +* ⏱️ **Teste de latência global**: Faz ping no seu alvo a partir de sondas espalhadas pelo mundo — escolha países entre todas as sondas Globalping disponíveis, agrupadas por continente. +* 🚉 **Teste MTR**: Executa MTR a partir de sondas distribuídas globalmente para ver a rota que os pacotes realmente percorrem. +* 🚧 **Verificação de censura**: Mostra onde um site está bloqueado no mundo — e por quais meios. +* 🚏 **Teste de regras de proxy**: Verifica se a configuração de regras do seu software de proxy funciona do jeito que você pretendia. + +### 🔦 Consultas e infraestrutura + +* 📟 **Resolução DNS**: Resolve um domínio por vários resolvedores de uma só vez, agrupados por país — um jeito fácil de detectar sequestro ou contaminação. +* 📓 **Pesquisa Whois**: Realiza consultas Whois para nomes de domínio e endereços IP. +* 🗄️ **Consulta de MAC**: Identifica o fabricante e os detalhes por trás de um endereço físico. +* 🛰️ **Informações de ASN e topologia de upstream**: Mostra detalhes do AS, anúncios históricos de um prefixo IP e os caminhos de upstream de um ASN até o backbone Tier 1. +* 📶 **Status dos serviços**: Disponibilidade em tempo real de serviços conhecidos — Claude, OpenAI, GitHub, Cloudflare e outros — a partir de suas páginas oficiais de status, com incidentes recentes. + +### ✨ Plataforma + +* 📤 **Relatórios compartilháveis**: Transforme seus resultados de teste em um relatório diagnóstico — um link somente leitura com expiração automática, Markdown pronto para IA ou JSON. +* ⌨️ **API de linha de comando**: Obtenha seu IP no terminal com um único comando `curl`. +* 🌍 **Earth Online**: Um painel que transmite eventos globais de indisponibilidade da Internet em tempo real. +* 🌗 **Modo escuro**: Acompanha automaticamente o sistema, com alternância manual. +* 📲 **PWA**: Instalável como aplicativo no celular e como app do Chrome no computador. +* ⚡ **Atalhos de teclado**: Toda função tem o seu — pressione `?` para ver a lista. +* 🔤 **Vários idiomas**: A interface é distribuída em 6 idiomas, e adicionar o seu exige apenas um pacote de locale. ## 📕 Como usar -### Implantação em um ambiente Node +### Usando Docker + +Um comando e pronto: -Certifique-se de que o Node.js esteja instalado. +```bash +docker run -d -p 18966:18966 --name myip --restart always jason5ng32/myip:latest +``` -Clone o código: +Ou clique no botão "Deploy with Docker" no topo desta página. + +### Implantação em um ambiente Node + +Certifique-se de que o Node.js esteja instalado e, em seguida, clone o código: ```bash git clone https://github.com/jason5ng32/MyIP.git @@ -86,14 +110,26 @@ pnpm start O programa será executado na porta 18966. -### Uso com Docker +## ⚙️ Configuração -Clique no botão “Deploy to Docker” no topo deste documento para concluir a implantação. Ou use o comando a seguir: +> [!IMPORTANT] +> **As credenciais do MaxMind GeoLite2 são obrigatórias.** Elas viabilizam a geolocalização de IP e as consultas ASN — sem elas, a fonte MaxMind retorna 503. Elas são gratuitas: → [Configuração do MaxMind](https://docs.ipcheck.ing/developer/getting-started/maxmind-setup) + +> [!WARNING] +> **`ALLOWED_DOMAINS` é obrigatório em um domínio real.** É a lista de nomes de host permitidos para a API de backend — sem ela, toda solicitação proveniente de um domínio que não seja localhost recebe 403. → [Proxy reverso e domínios](https://docs.ipcheck.ing/developer/getting-started/reverse-proxy-and-domains) ```bash -docker run -d -p 18966:18966 --name myip --restart always jason5ng32/myip:latest +docker run -d -p 18966:18966 \ + -e MAXMIND_ACCOUNT_ID="YOUR_ACCOUNT_ID" \ + -e MAXMIND_LICENSE_KEY="YOUR_LICENSE_KEY" \ + -e MAXMIND_AUTO_UPDATE="true" \ + -e ALLOWED_DOMAINS="your-domain.com" \ + --name myip --restart always \ + jason5ng32/myip:latest ``` +Todo o restante — chaves de API opcionais, segurança e limitação de taxa, registros, Sentry e os domínios da API curl — está documentado na [referência de variáveis de ambiente](https://docs.ipcheck.ing/developer/reference/environment-variables). + ## 📖 Documentação Os guias completos estão no Centro de Documentação do MyIP: **[docs.ipcheck.ing](https://docs.ipcheck.ing)** @@ -109,29 +145,12 @@ As contribuições são bem-vindas! Mantemos uma seleção de tarefas adequadas * 🌐 [TRANSLATING.md](TRANSLATING.md) — leve a UI ao seu idioma: um pacote de locale e uma linha no registro; uma **tradução parcial é bem-vinda em uma primeira PR** * 📄 [CONTRIBUTING.md](CONTRIBUTING.md) — instalação, convenções e o fluxo das PRs (direcione-as para a branch `dev`) -## ⚙️ Configuração - -Dois ajustes são essenciais antes de qualquer outra coisa: - -* **MaxMind GeoLite2 (obrigatório)** — credenciais gratuitas que viabilizam a geolocalização de IP e as consultas ASN. Sem elas, a fonte MaxMind retorna 503. → [Configuração do MaxMind](https://docs.ipcheck.ing/developer/getting-started/maxmind-setup) -* **`ALLOWED_DOMAINS` (obrigatório em um domínio real)** — lista de nomes de host permitidos para a API de backend. Sem ela, toda solicitação proveniente de um domínio que não seja localhost recebe 403. → [Proxy reverso e domínios](https://docs.ipcheck.ing/developer/getting-started/reverse-proxy-and-domains) - -```bash -docker run -d -p 18966:18966 \ - -e MAXMIND_ACCOUNT_ID="YOUR_ACCOUNT_ID" \ - -e MAXMIND_LICENSE_KEY="YOUR_LICENSE_KEY" \ - -e MAXMIND_AUTO_UPDATE="true" \ - -e ALLOWED_DOMAINS="your-domain.com" \ - --name myip --restart always \ - jason5ng32/myip:latest -``` - -Todo o restante — chaves de API opcionais, segurança e limitação de taxa, registros, Sentry e os domínios da API curl — está documentado na [referência de variáveis de ambiente](https://docs.ipcheck.ing/developer/reference/environment-variables). - - ## 👩🏻‍💻 Uso avançado -Se você usa um proxy para acessar a Internet, considere adicionar esta regra à configuração do proxy e adaptá-la ao seu cliente. Essa configuração permite verificar tanto seu IP real quanto o IP usado com o proxy: +
+Regras de proxy para verificar seu IP real e seu IP de proxy ao mesmo tempo + +Se você usa um proxy para acessar a Internet, considere adicionar esta regra à configuração do proxy (adapte-a ao seu cliente). Essa configuração permite verificar tanto seu IP real quanto o IP usado com o proxy: ```ini # IP Testing @@ -150,9 +169,11 @@ DOMAIN,ptest-7.ipcheck.ing,Proxy7 DOMAIN,ptest-8.ipcheck.ing,Proxy8 ``` +
+ ## 💖 Patrocinadores -Como projeto de código aberto, somos muito gratos aos seguintes patrocinadores pelo apoio: +Como projeto de código aberto, sou muito grato aos seguintes patrocinadores pelo apoio: @@ -167,3 +188,7 @@ Como projeto de código aberto, somos muito gratos aos seguintes patrocinadores v.ps Cloudflare Project Alexandria + +## 📄 Licença + +[MIT](LICENSE) © Jason Ng diff --git a/README_RU.md b/README_RU.md index 25af97cf0..286bcfe0b 100644 --- a/README_RU.md +++ b/README_RU.md @@ -1,118 +1,122 @@ # 🧰 MyIP — удобный набор инструментов для работы с IP +> [!NOTE] +> Это перевод, поддерживаемый сообществом; английская версия README является основной, и данная версия может отставать от неё. +
-![Баннер IPCheck.ing](https://raw.githubusercontent.com/jason5ng32/MyIP/main/public/github/gh_banner.png) +![IPCheck.ing Banner](https://raw.githubusercontent.com/jason5ng32/MyIP/main/public/github/gh_banner.png) jason5ng32%2FMyIP | Trendshift -[![Упоминается в Awesome Self Hosted](https://awesome.re/mentioned-badge.svg)](https://github.com/awesome-selfhosted/awesome-selfhosted) +[![Mentioned in Awesome Self Hosted](https://awesome.re/mentioned-badge.svg)](https://github.com/awesome-selfhosted/awesome-selfhosted) -![Звёзды репозитория GitHub](https://img.shields.io/github/stars/jason5ng32/MyIP) -![Форки GitHub](https://img.shields.io/github/forks/jason5ng32/myip) -![Загрузки Docker](https://img.shields.io/docker/pulls/jason5ng32/myip) +![GitHub Repo stars](https://img.shields.io/github/stars/jason5ng32/MyIP) +![GitHub forks](https://img.shields.io/github/forks/jason5ng32/myip) +![Docker Pulls](https://img.shields.io/docker/pulls/jason5ng32/myip) -[![Сайт](https://img.shields.io/website?url=https%3A%2F%2Fipcheck.ing&up_message=online&label=IPCheck.ing 'IPCheck.ing')](https://ipcheck.ing) +[![Website](https://img.shields.io/website?url=https%3A%2F%2Fipcheck.ing&up_message=online&label=IPCheck.ing 'IPCheck.ing')](https://ipcheck.ing) ![PWA](https://img.shields.io/badge/PWA-Supported-blue) ![CodeQL](https://github.com/jason5ng32/MyIP/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main) -![Сборка и публикация Docker](https://github.com/jason5ng32/MyIP/actions/workflows/docker-image.yml/badge.svg?branch=main) +![Docker Build and Push](https://github.com/jason5ng32/MyIP/actions/workflows/docker-image.yml/badge.svg?branch=main) [English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) | [Português (BR)](README_PT-BR.md) +Универсальный набор IP-инструментов с открытым исходным кодом: определение IP по нескольким источникам, проверка доступности сайтов, обнаружение утечек WebRTC и DNS, тест скорости, MTR, проверка цензуры, Whois и многое другое — разворачивается на своём сервере одной командой Docker. + 👉 Демо: [https://ipcheck.ing](https://ipcheck.ing) -Добавьте демо-сайт в закладки или разверните собственный экземпляр. +Добавьте демо в закладки или разверните собственный экземпляр. -[![Развернуть с помощью Docker](https://raw.githubusercontent.com/jason5ng32/MyIP/main/public/github/Docker.svg)](https://hub.docker.com/r/jason5ng32/myip) +[![Deploy with Docker](https://raw.githubusercontent.com/jason5ng32/MyIP/main/public/github/Docker.svg)](https://hub.docker.com/r/jason5ng32/myip)
-## 👀 Основные возможности - -* 🛜 **Просмотр ваших IP-адресов**: обнаруживает и показывает локальные IP-адреса, используя несколько источников IPv4 и IPv6. -* 🔍 **Поиск информации об IP**: позволяет получить сведения о любом IP-адресе. -* 🕵️ **Информация об IP**: показывает подробные сведения обо всех IP-адресах, включая страну, регион, ASN, географическое положение и многое другое. -* 🛰️ **История ASN и топология вышестоящих сетей**: показывает историю анонсов AS для IP-префикса и визуализирует пути от ASN к магистральным сетям Tier 1. -* 🚦 **Проверка доступности**: проверяет доступность различных сайтов, например Google, GitHub, YouTube, ChatGPT и других. -* 📡 **Состояние сервисов**: показывает текущую доступность известных сервисов (Claude, OpenAI, GitHub, Cloudflare и других) по данным их официальных страниц состояния, включая состояние отдельных компонентов и недавние инциденты. -* 🚥 **Проверка WebRTC**: определяет IP-адрес, используемый при подключениях WebRTC. -* 🛑 **Тест утечки DNS**: показывает данные конечных точек DNS, чтобы оценить риск утечки DNS при использовании VPN или прокси. -* 🚀 **Тест скорости**: проверяет скорость сети с помощью пограничной инфраструктуры. -* 🚏 **Проверка правил прокси**: проверяет корректность правил маршрутизации в прокси-программах. -* ⏱️ **Глобальный тест задержки**: измеряет задержку с серверов, расположенных в разных регионах мира. -* 🚉 **Тест MTR**: выполняет MTR-тесты с серверов, расположенных в разных регионах мира. -* 🔦 **DNS-резолвер**: выполняет разрешение доменного имени через несколько источников и получает актуальные результаты, которые можно использовать для выявления подмены DNS. -* 🚧 **Проверка цензуры**: проверяет, заблокирован ли сайт в некоторых странах. -* 📓 **Поиск Whois**: получает регистрационные сведения о доменных именах и IP-адресах. -* 📀 **Поиск MAC-адреса**: получает сведения о физическом адресе устройства. -* 🖥️ **Цифровой отпечаток браузера**: позволяет рассчитать отпечаток браузера несколькими способами. -* 📋 **Контрольный список кибербезопасности**: содержит 258 рекомендаций по комплексной защите цифровой жизни. - -## 💪 Дополнительно - -* 🌗 **Тёмная тема**: автоматически переключается между светлой и тёмной темой в соответствии с настройками системы; также доступно ручное переключение. -* 📲 **Поддержка PWA**: сайт можно установить как приложение на телефон или компьютер через Chrome. -* ⌨️ **Сочетания клавиш**: все функции поддерживают горячие клавиши; нажмите `?`, чтобы открыть их список. -* 🌍 По результатам проверки доступности определяется, возможен ли полноценный доступ к глобальному интернету. -* 🔤 Поддерживаются многочисленные языки. +## 👀 Возможности -## 📕 Использование +### 🪪 Ваш IP и идентичность -### Развёртывание в среде Node.js +* 🛜 **Карточки IP**: определяют ваши IPv4 и IPv6 по нескольким независимым источникам одновременно — страна, регион, город, ASN, организация и местный часовой пояс IP-адреса. +* 🔍 **Проверка IP**: показывает те же подробные сведения о любом интересующем вас IP-адресе. +* 🧾 **История IP**: ведёт локальный журнал IP-адресов, с которых вас видели в сети, с фильтрами по типу и стране — данные хранятся только в вашем браузере. +* 🖥️ **Цифровой отпечаток браузера**: рассчитывает отпечаток браузера несколькими способами и показывает, что именно делает вас узнаваемым. -Убедитесь, что Node.js установлен. +### 🕵️ Утечки и приватность -Клонируйте репозиторий: +* 🚥 **Обнаружение WebRTC**: показывает IP-адрес, раскрываемый при подключениях WebRTC, — в том числе включена ли в вашем браузере усиленная защита приватности. +* 🛑 **Тест утечки DNS**: показывает, какие конечные точки DNS обрабатывают ваши запросы, чтобы оценить риск утечки DNS при использовании VPN или прокси. +* 📋 **Контрольный список безопасности**: 258 рекомендаций по личной кибербезопасности в 12 разделах; прогресс сохраняется в браузере. -```bash -git clone https://github.com/jason5ng32/MyIP.git -``` +### 📡 Сетевые тесты -Установите зависимости и соберите проект. Проект использует pnpm. Если pnpm ещё не установлен, сначала установите его (npm входит в состав Node.js, поэтому эта команда всегда доступна): +* 🚦 **Проверка доступности**: проверяет доступность до 60 сайтов на ваш выбор, показывая минимальную задержку по итогам нескольких раундов, а готовые списки для импорта охватывают подборки по странам, ИИ-сервисы, соцсети, стриминг, игры, инструменты разработчика и многое другое. По результатам инструмент показывает, доступен ли вам сейчас глобальный интернет. +* 🚀 **Тест скорости**: измеряет скорость загрузки, отдачи и задержку через периферийные сети. +* ⏱️ **Глобальный тест задержки**: пингует вашу цель с зондов по всему миру — выбирайте страны из всех доступных зондов Globalping, сгруппированных по континентам. +* 🚉 **Тест MTR**: запускает MTR с распределённых по миру зондов, чтобы увидеть, каким маршрутом на самом деле идут пакеты. +* 🚧 **Проверка цензуры**: показывает, где в мире сайт заблокирован и какими методами. +* 🚏 **Проверка правил прокси**: проверяет, что правила в вашей прокси-программе работают именно так, как вы задумали. -```bash -npm install -g pnpm -pnpm install && pnpm run build -``` +### 🔦 Поиск и инфраструктура -Запустите проект: +* 📟 **Разрешение DNS**: разрешает домен сразу через несколько резолверов, сгруппированных по странам, — простой способ заметить перехват или загрязнение DNS. +* 📓 **Поиск Whois**: выполняет Whois-запросы для доменных имён и IP-адресов. +* 🗄️ **Поиск MAC-адреса**: определяет производителя и другие сведения по физическому адресу. +* 🛰️ **Сведения об ASN и топология вышестоящих сетей**: показывают данные автономной системы, историю анонсов IP-префикса и пути от ASN к магистральным сетям Tier 1. +* 📶 **Состояние сервисов**: актуальная доступность известных сервисов — Claude, OpenAI, GitHub, Cloudflare и других — по данным их официальных страниц состояния, включая недавние инциденты. -```bash -pnpm start -``` +### ✨ Платформа + +* 📤 **Диагностические отчёты**: превращают результаты тестов в отчёт, которым можно поделиться, — ссылка только для чтения с автоматическим истечением срока, Markdown для ИИ или JSON. +* ⌨️ **Curl API**: узнайте свой IP прямо из терминала одной командой `curl`. +* 🌍 **Земля онлайн**: панель, транслирующая глобальные сбои интернета в момент их возникновения. +* 🌗 **Тёмная тема**: автоматически следует настройкам системы, с ручным переключателем. +* 📲 **PWA**: устанавливается как приложение на телефон и как приложение Chrome на компьютер. +* ⚡ **Сочетания клавиш**: есть у каждой функции — нажмите `?`, чтобы увидеть список. +* 🔤 **Несколько языков**: интерфейс доступен на 6 языках, а чтобы добавить свой, достаточно одного языкового пакета. -Приложение будет доступно на порту 18966. +## 📕 Использование ### Использование Docker -Нажмите кнопку «Развернуть с помощью Docker» в верхней части страницы или выполните следующую команду: +Одна команда — и всё готово: ```bash docker run -d -p 18966:18966 --name myip --restart always jason5ng32/myip:latest ``` -## 📖 Документация +Или нажмите кнопку «Deploy with Docker» в верхней части этой страницы. -Полные руководства — в центре документации MyIP: **[docs.ipcheck.ing](https://docs.ipcheck.ing)** (переключатель языка в правом верхнем углу) +### Развёртывание в среде Node -* [Руководство разработчика](https://docs.ipcheck.ing/developer/ru) — развёртывание, настройка, архитектура и участие в разработке -* [База знаний](https://docs.ipcheck.ing/knowledge-base/ru) — как пользоваться каждым инструментом, пошаговая диагностика сети, сетевые концепции +Убедитесь, что Node.js установлен, затем клонируйте репозиторий: -## 🤝 Участие в проекте +```bash +git clone https://github.com/jason5ng32/MyIP.git +``` -Мы рады вашему участию! У нас есть подборка задач для новичков — с точными путями к файлам, критериями приёмки и тестами, которые ведут вас к зелёной сборке: +Установите зависимости и соберите проект. Проект использует pnpm — если он ещё не установлен, сначала установите его (npm входит в состав Node, поэтому эта команда всегда доступна): -* 🏷️ [Good first issues](https://github.com/jason5ng32/MyIP/labels/good%20first%20issue) — добавьте DNS-резолвер своей страны, расширьте подборки сайтов, переведите README на свой язык, улучшите переводы -* 🌐 [TRANSLATING.md](TRANSLATING.md) — переведите интерфейс на свой язык: один языковой пакет и одна строка в регистре, а также **частичные переводы — это приветствуемый первый PR** -* 📄 [CONTRIBUTING.md](CONTRIBUTING.md) — настройка окружения, соглашения и процесс PR (PR направляются в ветку `dev`) +```bash +npm install -g pnpm +pnpm install && pnpm run build +``` + +Запустите: + +```bash +pnpm start +``` + +Приложение будет работать на порту 18966. ## ⚙️ Конфигурация -Прежде всего важны две настройки: +> [!IMPORTANT] +> **Учётные данные MaxMind GeoLite2 обязательны.** Они обеспечивают геолокацию IP и запросы ASN — без них источник MaxMind возвращает 503. Они бесплатны: → [MaxMind Setup](https://docs.ipcheck.ing/developer/getting-started/maxmind-setup) -* **MaxMind GeoLite2 (обязательно)** — бесплатные учётные данные для геолокации IP и запросов ASN. Без них источник MaxMind возвращает 503. → [Настройка MaxMind](https://docs.ipcheck.ing/developer/getting-started/ru/maxmind-setup) -* **`ALLOWED_DOMAINS` (обязательно на реальном домене)** — белый список хостов для backend API. Без него любой запрос с домена, отличного от localhost, получает 403. → [Обратный прокси и домены](https://docs.ipcheck.ing/developer/getting-started/ru/reverse-proxy-and-domains) +> [!WARNING] +> **`ALLOWED_DOMAINS` обязателен на реальном домене.** Это список разрешённых хостов для backend API — без него любой запрос с домена, отличного от localhost, получает 403. → [Reverse Proxy & Domains](https://docs.ipcheck.ing/developer/getting-started/reverse-proxy-and-domains) ```bash docker run -d -p 18966:18966 \ @@ -124,12 +128,29 @@ docker run -d -p 18966:18966 \ jason5ng32/myip:latest ``` -Всё остальное — необязательные ключи API, безопасность и ограничение частоты запросов, логирование, Sentry, домены curl API — описано в [справочнике переменных окружения](https://docs.ipcheck.ing/developer/reference/ru/environment-variables). +Всё остальное — необязательные ключи API, безопасность и ограничение частоты запросов, логирование, Sentry, домены curl API — описано в [справочнике переменных окружения](https://docs.ipcheck.ing/developer/reference/environment-variables). + +## 📖 Документация +Полные руководства — в центре документации MyIP: **[docs.ipcheck.ing](https://docs.ipcheck.ing)** + +* [Руководство разработчика](https://docs.ipcheck.ing/developer) — развёртывание, настройка, архитектура и участие в разработке +* [База знаний](https://docs.ipcheck.ing/knowledge-base) — как пользоваться каждым инструментом, пошаговая диагностика сети и сетевые концепции + +## 🤝 Участие в проекте + +Мы рады вашему участию! У нас есть подборка задач для новичков — с точными путями к файлам, критериями приёмки и тестами, которые ведут вас к зелёной сборке: + +* 🏷️ [Good first issues](https://github.com/jason5ng32/MyIP/labels/good%20first%20issue) — добавьте DNS-резолвер своей страны, расширьте подборки сайтов, переведите README на свой язык, улучшите переводы и не только +* 🌐 [TRANSLATING.md](TRANSLATING.md) — переведите интерфейс на свой язык: языковой пакет плюс одна строка в реестре, причём **частичный перевод — отличный первый PR** +* 📄 [CONTRIBUTING.md](CONTRIBUTING.md) — настройка окружения, соглашения и процесс работы с PR (направляйте их в ветку `dev`) ## 👩🏻‍💻 Расширенное использование -Если для доступа в интернет используется прокси, добавьте следующее правило в конфигурацию прокси-клиента, изменив его под своё приложение. Это позволит проверять как настоящий IP-адрес, так и адрес, используемый через прокси: +
+Правила прокси для одновременной проверки реального IP и IP через прокси + +Если вы выходите в интернет через прокси, добавьте это правило в конфигурацию прокси (адаптировав его под свой клиент). Такая настройка позволяет проверять и ваш реальный IP, и IP при использовании прокси: ```ini # IP Testing @@ -148,9 +169,11 @@ DOMAIN,ptest-7.ipcheck.ing,Proxy7 DOMAIN,ptest-8.ipcheck.ing,Proxy8 ``` +
+ ## 💖 Спонсоры -Я очень благодарен следующим спонсорам за поддержку проекта с открытым исходным кодом: +Как автор проекта с открытым исходным кодом, я очень благодарен следующим спонсорам за поддержку: @@ -162,6 +185,10 @@ DOMAIN,ptest-8.ipcheck.ing,Proxy8 GitBook -v.ps +v.ps Cloudflare Project Alexandria + +## 📄 Лицензия + +[MIT](LICENSE) © Jason Ng diff --git a/README_ZH.md b/README_ZH.md index 701f3d5b3..5e72966be 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -1,4 +1,7 @@ -# 🧰 IP 工具箱 +# 🧰 MyIP - 更好的 IP 工具箱 + +> [!NOTE] +> 这是由社区维护的翻译版本;英文版 README 为唯一权威来源,本页面内容可能滞后于英文版。
@@ -20,9 +23,11 @@ [English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) | [Português (BR)](README_PT-BR.md) +一个开源的一站式 IP 工具箱:多来源 IP 查询、连通性测试、WebRTC 与 DNS 泄露检测、网速测试、MTR、封锁检测、Whois 等等 —— 一条 Docker 命令即可自行部署。 + 👉 在这里体验:[https://ipcheck.ing](https://ipcheck.ing) -你可以直接用我已经搭建好的服务,也可以自行搭建。 +欢迎收藏在线版本,也可以自行部署。 [![Deploy with Docker](https://raw.githubusercontent.com/jason5ng32/MyIP/main/public/github/Docker.svg)](https://hub.docker.com/r/jason5ng32/myip) @@ -30,89 +35,88 @@ ## 👀 主要功能 -* 🛜 **看自己的 IP**:从多个 IPv4 和 IPv6 来源检测显示本机的 IP -* 🔍 **查任意 IP 信息**:可以通过小工具查询任意 IP 的信息 -* 🕵️ **看 IP 信息**:显示所有 IP 的相关信息,包括国家、地区、ASN、地理位置等 -* 🛰️ **ASN 历史与上游拓扑**:查看 IP 前缀的历史 AS 宣告记录,以及该 ASN 到 Tier 1 骨干网的上游路径图 -* 🚦 **可用性检测**:检测一些网站的可用性:Google, Github, Youtube, 网易, 百度等 -* 📡 **服务可用性**:展示一些知名服务(Claude、OpenAI、GitHub、Cloudflare 等)的实时可用状态,数据来自它们的官方状态页,可查看各子服务状态与最近的事故 -* 🚥 **WebRTC 检测**:查看使用 WebRTC 连接时使用的 IP -* 🛑 **DNS 泄露检测**:查看 DNS 出口信息,以便查看在 VPN/代理的情况下,是否存在 DNS 泄露隐私的风险 -* 🚀 **网速测试**:利用边缘网络进行网速测试 -* 🚏 **代理规则测试**:配合代理软件的规则设置,测试规则设置是否正常 -* ⏱️ **全球延迟测试**:从分布在全球的多个服务器进行延迟测试,了解你与全球网络的连接速度 -* 🚉 **MTR 测试**:从分布在全球的多个服务器进行 MTR 测试,了解你与全球的连接路径 -* 🔦 **DNS 解析器**:从多个渠道对域名进行 DNS 解析,获取实时的解析结果,可用于污染判断 -* 🚧 **封锁测试**:检查特定的网站在部分国家是否被封锁 -* 📓 **Whois 查询**:对域名或 IP 进行 whois 信息查询 -* 📀 **MAC 地址查询**:查询物理地址的归属信息 -* 🖥️ **浏览器指纹**:多种方式查看浏览器指纹 -* 📋 **网络安全检查清单**:一共有 258 项的,全面的网络安全检查清单 - -## 💪 同时还支持 - -* 🌗 **暗黑模式**:根据系统设置自动切换暗黑/白天模式,也可以手动切换 -* 📲 **支持 PWA**:可以添加为手机应用以及电脑里的桌面应用,方便使用 -* ⌨️ **支持快捷键**:可以随时输入 `?` 查看快捷键菜单 -* 🌍 根据可用性检测结果,返回目前是否可以访问全世界网络的提示 -* 🔤 支持多种语言 +### 🪪 你的 IP 与身份 -## 📕 如何使用 +* 🛜 **IP 卡片**:从多个相互独立的来源并列检测你的 IPv4 和 IPv6 —— 国家、地区、城市、ASN、组织,以及该 IP 所在地的时区。 +* 🔍 **IP 查询**:查询任意一个你感兴趣的 IP 地址的同样详细的信息。 +* 🧾 **IP 历史记录**:在本地记录你使用过的 IP,可按类型和国家筛选 —— 数据只存在你的浏览器里。 +* 🖥️ **浏览器指纹**:用多种方式计算你的浏览器指纹,并展示是什么让你变得可被识别。 -### 在 Node 环境部署 +### 🕵️ 泄露与隐私 -确保你系统里已经有 Node.js 环境。 +* 🚥 **WebRTC 检测**:揭示 WebRTC 连接过程中暴露的 IP 地址 —— 包括你的浏览器是否开启了隐私强化。 +* 🛑 **DNS 泄露测试**:展示是哪些 DNS 出口在解析你的请求,以便评估使用 VPN 或代理时 DNS 泄露的风险。 +* 📋 **安全检查清单**:一份覆盖 12 个领域、共 258 项的个人网络安全检查清单,进度保存在你的浏览器里。 -克隆代码: +### 📡 网络测试 -```bash -git clone https://github.com/jason5ng32/MyIP.git -``` +* 🚦 **网络连通性**:检测最多 60 个你自选网站的可达性,多轮测试取最低延迟 —— 还提供精选导入列表,从国家套装到 AI、社交、流媒体、游戏、开发者等应有尽有。并根据检测结果,提示你当前能否访问全球互联网。 +* 🚀 **网速测试**:基于边缘网络测量你的下载、上传速度与延迟。 +* ⏱️ **全球延迟测试**:从遍布全球的探针 ping 你的目标 —— 可从所有可用的 Globalping 探针中按大洲分组选择国家。 +* 🚉 **MTR 测试**:从分布在全球的探针发起 MTR,查看数据包实际经过的路由。 +* 🚧 **封锁测试**:展示一个网站在全球哪些地方被封锁 —— 以及是通过什么手段封锁的。 +* 🚏 **分流测试**:验证你的代理软件的规则配置是否按你的预期工作。 -安装与编译。本项目使用 pnpm,如果你还没有,请先安装(npm 随 Node 一起提供,这条命令一定能用): +### 🔦 查询与基础设施 -```bash -npm install -g pnpm -pnpm install && pnpm run build -``` +* 📟 **DNS 解析**:同时通过多个解析器解析一个域名,并按国家分组 —— 轻松发现劫持或污染。 +* 📓 **Whois 查询**:对域名和 IP 地址进行 Whois 查询。 +* 🗄️ **MAC 地址查询**:识别一个物理地址背后的厂商与详细信息。 +* 🛰️ **ASN 信息与上游拓扑**:展示 AS 详情、IP 前缀的历史宣告记录,以及从某个 ASN 到 Tier 1 骨干网的上游路径。 +* 📶 **服务可用性**:知名服务的实时可用状态 —— Claude、OpenAI、GitHub、Cloudflare 等 —— 数据来自它们的官方状态页,并附最近的事故。 -运行: +### ✨ 平台能力 -```bash -pnpm start -``` +* 📤 **诊断报告分享**:把你的测试结果生成一份诊断报告 —— 可选自动过期的只读链接、适合喂给 AI 的 Markdown,或 JSON。 +* ⌨️ **命令行 API**:在终端里用一条 `curl` 命令获取你的 IP。 +* 🌍 **地球在线**:一个实时播报全球断网事件的面板。 +* 🌗 **暗黑模式**:自动跟随系统,也可以手动切换。 +* 📲 **PWA**:可以安装为手机应用,也可以安装为桌面上的 Chrome 应用。 +* ⚡ **快捷键**:每个功能都有对应的快捷键 —— 按 `?` 查看列表。 +* 🔤 **多语言**:界面内置 6 种语言,添加你的语言只需一个语言包。 -程序会运行在 18966 端口。 +## 📕 如何使用 ### 使用 Docker -点击顶部的部署到 Docker 按钮,即可完成部署,又或者,直接输入下面的命令: +一条命令即可运行: ```bash docker run -d -p 18966:18966 --name myip --restart always jason5ng32/myip:latest ``` -## 📖 官方文档 +或者点击本页顶部的「Deploy with Docker」按钮。 -完整文档在 MyIP 文档中心:**[docs.ipcheck.ing](https://docs.ipcheck.ing)**(右上角可切换中文) +### 在 Node 环境部署 -* [开发者指南](https://docs.ipcheck.ing/developer/zh) —— 部署、配置、架构说明与参与贡献 -* [知识库](https://docs.ipcheck.ing/knowledge-base/zh) —— 每个工具的使用说明、网络问题排查指南、网络概念科普 +确保你已经安装了 Node.js,然后克隆代码: -## 🤝 参与贡献 +```bash +git clone https://github.com/jason5ng32/MyIP.git +``` -欢迎参与贡献!我们维护着一批对新手友好的任务,每条都写明了具体文件、验收标准,并有测试引导你完成: +安装与构建。本项目使用 pnpm —— 如果你还没有,请先安装(npm 随 Node 一起提供,这条命令一定能用): -* 🏷️ [Good first issues](https://github.com/jason5ng32/MyIP/labels/good%20first%20issue) —— 添加你所在国家的 DNS 解析服务、添加精选网站列表、把 README 翻译成你的语言、润色翻译等 -* 🌐 [TRANSLATING.md](TRANSLATING.md) —— 把 UI 带到你的语言:一个语言包加上一行注册表,以及 **部分翻译也是欢迎的首次 PR** -* 📄 [CONTRIBUTING.md](CONTRIBUTING.md) —— 环境搭建、开发约定与 PR 流程(请将 PR 提交到 `dev` 分支) +```bash +npm install -g pnpm +pnpm install && pnpm run build +``` + +运行: + +```bash +pnpm start +``` + +程序会运行在 18966 端口。 ## ⚙️ 配置 -开始之前,有两项配置最重要: +> [!IMPORTANT] +> **MaxMind GeoLite2 凭证是必需的。** 它为 IP 地理位置与 ASN 查询提供数据 —— 不配置时,MaxMind 数据源会返回 503。凭证是免费的:→ [MaxMind Setup](https://docs.ipcheck.ing/developer/getting-started/maxmind-setup) -* **MaxMind GeoLite2(必须)** —— 免费凭证,为 IP 地理位置与 ASN 查询提供数据。不配置时 MaxMind 数据源会返回 503。→ [MaxMind 配置指南](https://docs.ipcheck.ing/developer/getting-started/zh/maxmind-setup) -* **`ALLOWED_DOMAINS`(使用真实域名时必须)** —— 后端 API 的域名白名单。不配置时,来自非 localhost 域名的请求都会收到 403。→ [反向代理与域名](https://docs.ipcheck.ing/developer/getting-started/zh/reverse-proxy-and-domains) +> [!WARNING] +> **在真实域名上部署时,`ALLOWED_DOMAINS` 是必需的。** 它是后端 API 的主机名白名单 —— 不配置时,来自非 localhost 域名的每个请求都会收到 403。→ [Reverse Proxy & Domains](https://docs.ipcheck.ing/developer/getting-started/reverse-proxy-and-domains) ```bash docker run -d -p 18966:18966 \ @@ -124,12 +128,29 @@ docker run -d -p 18966:18966 \ jason5ng32/myip:latest ``` -其余全部为可选配置 —— 第三方 API Key、安全与限流、日志、Sentry、CURL API 域名等,详见[环境变量参考](https://docs.ipcheck.ing/developer/reference/zh/environment-variables)。 +其余全部是可选配置 —— 第三方 API Key、安全与限流、日志、Sentry、curl API 域名等,详见[环境变量参考](https://docs.ipcheck.ing/developer/reference/environment-variables)。 + +## 📖 官方文档 + +完整指南在 MyIP 文档中心:**[docs.ipcheck.ing](https://docs.ipcheck.ing)** + +* [开发者指南](https://docs.ipcheck.ing/developer) —— 部署、配置、架构说明与参与贡献 +* [知识库](https://docs.ipcheck.ing/knowledge-base) —— 每个工具的使用说明、网络问题排查步骤、网络概念科普 + +## 🤝 参与贡献 + +欢迎参与贡献!我们维护着一批对新手友好的任务,每条都写明了具体文件路径、验收标准,并有测试引导你完成一次绿色构建: +* 🏷️ [Good first issues](https://github.com/jason5ng32/MyIP/labels/good%20first%20issue) —— 添加你所在国家的 DNS 解析服务、添加精选网站列表、把 README 翻译成你的语言、润色翻译等 +* 🌐 [TRANSLATING.md](TRANSLATING.md) —— 把 UI 带到你的语言:一个语言包加上一行注册表,而且**部分翻译也是欢迎的首次 PR** +* 📄 [CONTRIBUTING.md](CONTRIBUTING.md) —— 环境搭建、开发约定与 PR 流程(请将 PR 提交到 `dev` 分支) ## 👩🏻‍💻 高级用法 -如果你在通过代理上网,可以考虑在你的代理配置里,增加下面的规则(请根据你使用的客户端进行修改),这样就可以实现同时查询真实 IP 和代理后的 IP: +
+同时查询真实 IP 与代理 IP 的代理规则 + +如果你在通过代理上网,可以考虑在你的代理配置里增加下面的规则(请根据你使用的客户端进行修改)。这样就可以同时查询你的真实 IP 和使用代理时的 IP: ```ini # IP Testing @@ -148,6 +169,8 @@ DOMAIN,ptest-7.ipcheck.ing,Proxy7 DOMAIN,ptest-8.ipcheck.ing,Proxy8 ``` +
+ ## 💖 赞助者 作为一个开源项目,我非常感谢以下赞助者对我的支持: @@ -162,6 +185,10 @@ DOMAIN,ptest-8.ipcheck.ing,Proxy8 GitBook -v.ps +v.ps Cloudflare Project Alexandria + +## 📄 开源协议 + +[MIT](LICENSE) © Jason Ng diff --git a/README_ZH_TW.md b/README_ZH_TW.md index 4aad93f82..fe87da928 100644 --- a/README_ZH_TW.md +++ b/README_ZH_TW.md @@ -1,4 +1,7 @@ -# 🧰 IP 工具箱 +# 🧰 MyIP - 更好的 IP 工具箱 + +> [!NOTE] +> 這是由社群維護的翻譯版本;英文版 README 為唯一權威來源,本頁內容可能落後於英文版。
@@ -20,9 +23,11 @@ [English](README.md) | [简体中文](README_ZH.md) | [繁體中文](README_ZH_TW.md) | [Русский](README_RU.md) | [Français](README_FR.md) | [Português (BR)](README_PT-BR.md) +一個開源的多合一 IP 工具箱:多來源 IP 查詢、連通性測試、WebRTC 與 DNS 洩漏偵測、網速測試、MTR、審查封鎖檢查、Whois 等——一條 Docker 指令即可自行架設。 + 👉 在這裡體驗:[https://ipcheck.ing](https://ipcheck.ing) -你可以直接使用我已經架設好的服務,也可以自行架設。 +歡迎把展示站加入書籤,也可以自行部署一套。 [![Deploy with Docker](https://raw.githubusercontent.com/jason5ng32/MyIP/main/public/github/Docker.svg)](https://hub.docker.com/r/jason5ng32/myip) @@ -30,89 +35,88 @@ ## 👀 主要功能 -* 🛜 **看自己的 IP**:從多個 IPv4 和 IPv6 來源偵測並顯示本機的 IP -* 🔍 **查任意 IP 資訊**:可以透過小工具查詢任意 IP 的資訊 -* 🕵️ **看 IP 資訊**:顯示所有 IP 的相關資訊,包括國家、地區、ASN、地理位置等 -* 🛰️ **ASN 歷史與上游拓撲**:查看 IP 前綴的歷史 AS 宣告記錄,以及該 ASN 到 Tier 1 骨幹網路的上游路徑圖 -* 🚦 **可用性偵測**:偵測一些網站的可用性:Google, Github, Youtube, 網易, 百度等 -* 📡 **服務可用性**:展示一些知名服務(Claude、OpenAI、GitHub、Cloudflare 等)的即時可用狀態,資料來自它們的官方狀態頁,可查看各子服務狀態與最近的事故 -* 🚥 **WebRTC 偵測**:查看使用 WebRTC 連線時使用的 IP -* 🛑 **DNS 洩漏測試**:查看 DNS 出口資訊,以便得知在 VPN/代理的情況下,是否存在 DNS 洩漏隱私的風險 -* 🚀 **網速測試**:利用邊緣網路進行網速測試 -* 🚏 **分流測試**:配合代理軟體的規則設定,測試規則設定是否正常 -* ⏱️ **全球延遲測試**:從分佈在全球的多個伺服器進行延遲測試,了解你與全球網路的連線速度 -* 🚉 **MTR 測試**:從分佈在全球的多個伺服器進行 MTR 測試,了解你與全球的連線路徑 -* 🔦 **DNS 解析**:從多個管道對網域名稱進行 DNS 解析,取得即時的解析結果,可用於污染判斷 -* 🚧 **封鎖測試**:檢查特定的網站在部分國家是否被封鎖 -* 📓 **Whois 查詢**:對網域名稱或 IP 進行 whois 資訊查詢 -* 📀 **MAC 位址查詢**:查詢實體位址的歸屬資訊 -* 🖥️ **瀏覽器指紋**:多種方式查看瀏覽器指紋 -* 📋 **網路安全檢查清單**:一共有 258 個項目、完整全面的網路安全檢查清單 - -## 💪 同時還支援 - -* 🌗 **深色模式**:根據系統設定自動切換深色/日間模式,也可以手動切換 -* 📲 **支援 PWA**:可以新增為手機應用程式以及電腦裡的桌面應用程式,方便使用 -* ⌨️ **支援快捷鍵**:可以隨時輸入 `?` 查看快捷鍵選單 -* 🌍 根據可用性偵測結果,回傳目前是否可以存取全世界網路的提示 -* 🔤 支援多種語言 +### 🪪 你的 IP 與身分 -## 📕 如何使用 +* 🛜 **IP 卡片**:從多個獨立來源並列偵測你的 IPv4 與 IPv6——包括國家、地區、城市、ASN、組織,以及該 IP 所在地的當地時區。 +* 🔍 **IP 查詢**:查詢任何一個你感興趣的 IP 位址的同樣詳細資訊。 +* 🧾 **IP 歷史記錄**:在本機記錄你曾被偵測到的 IP,可依類型與國家篩選——只儲存在你的瀏覽器裡。 +* 🖥️ **瀏覽器指紋**:以多種方式計算你的瀏覽器指紋,並顯示是哪些特徵讓你可被識別。 -### 在 Node 環境部署 +### 🕵️ 洩漏與隱私 -確保你系統裡已經有 Node.js 環境。 +* 🚥 **WebRTC 洩漏測試**:揭示 WebRTC 連線過程中暴露的 IP 位址——包括你的瀏覽器隱私強化設定是否已開啟。 +* 🛑 **DNS 洩漏測試**:顯示是哪些 DNS 端點在解析你的查詢,以評估使用 VPN 或代理時 DNS 洩漏的風險。 +* 📋 **安全檢查清單**:一份涵蓋 12 個領域、共 258 個項目的個人網路安全檢查清單,進度儲存在你的瀏覽器裡。 -複製程式碼: +### 📡 網路測試 -```bash -git clone https://github.com/jason5ng32/MyIP.git -``` +* 🚦 **網路連通性**:測試最多 60 個你自選網站的可達性,多輪測試取最低延遲——並提供精選匯入清單,從各國組合包到 AI、社群、串流、遊戲、開發者等應有盡有。根據測試結果,提示你目前是否能順暢存取全球網路。 +* 🚀 **網速測試**:對邊緣網路測量你的下載、上傳與延遲。 +* ⏱️ **全球延遲測試**:從遍布全球的探測節點 ping 你的目標——可從所有可用的 Globalping 探測節點中依洲別挑選國家。 +* 🚉 **MTR 測試**:從分布全球的探測節點執行 MTR,查看封包實際行經的路徑。 +* 🚧 **封鎖測試**:顯示一個網站在全球哪些地方被封鎖——以及封鎖的手段。 +* 🚏 **分流測試**:驗證你的代理軟體規則設定是否如你預期般運作。 -安裝與編譯。本專案使用 pnpm,如果你還沒有,請先安裝(npm 隨 Node 一起提供,這條指令一定能用): +### 🔦 查詢與基礎設施 -```bash -npm install -g pnpm -pnpm install && pnpm run build -``` +* 📟 **DNS 解析**:同時透過多個解析器解析網域,並依國家分組——輕鬆看出是否存在劫持或污染。 +* 📓 **Whois 查詢**:對網域名稱與 IP 位址進行 Whois 查詢。 +* 🗄️ **MAC 位址查詢**:識別實體位址背後的廠商與詳細資訊。 +* 🛰️ **ASN 資訊與上游拓撲**:顯示 AS 詳細資訊、IP 前綴的歷史宣告記錄,以及該 ASN 到 Tier 1 骨幹網路的上游路徑。 +* 📶 **服務可用性**:知名服務(Claude、OpenAI、GitHub、Cloudflare 等)的即時可用狀態,資料來自它們的官方狀態頁,並附最近的事故。 -執行: +### ✨ 平台功能 -```bash -pnpm start -``` +* 📤 **診斷報告**:把你的測試結果轉成可分享的診斷報告——附自動過期的唯讀連結、AI 可直接使用的 Markdown,或 JSON。 +* ⌨️ **命令列 API**:在終端機裡用一條 `curl` 指令取得你的 IP。 +* 🌍 **地球線上**:一個即時播報全球網路斷網事件的面板。 +* 🌗 **深色模式**:自動跟隨系統設定,也可手動切換。 +* 📲 **PWA**:可安裝為手機上的應用程式,以及電腦上的 Chrome 應用程式。 +* ⚡ **鍵盤快速鍵**:每個功能都有對應快速鍵——按下 `?` 查看完整清單。 +* 🔤 **多語言**:UI 內建 6 種語言,新增你的語言只需一個語言包。 -程式會執行在 18966 連接埠。 +## 📕 如何使用 ### 使用 Docker -點選頂部的部署到 Docker 按鈕,即可完成部署,又或者,直接輸入下面的指令: +一條指令即可啟動: ```bash docker run -d -p 18966:18966 --name myip --restart always jason5ng32/myip:latest ``` -## 📖 官方說明文件 +也可以點選本頁頂部的「Deploy with Docker」按鈕。 -完整說明文件在 MyIP 文件中心:**[docs.ipcheck.ing](https://docs.ipcheck.ing)**(右上角可切換中文) +### 在 Node 環境部署 -* [開發者指南](https://docs.ipcheck.ing/developer/zh) —— 部署、設定、架構說明與參與貢獻 -* [知識庫](https://docs.ipcheck.ing/knowledge-base/zh) —— 每個工具的使用說明、網路問題疑難排解指南、網路概念入門 +確保你已安裝 Node.js,然後複製程式碼: -## 🤝 參與貢獻 +```bash +git clone https://github.com/jason5ng32/MyIP.git +``` -歡迎參與貢獻!我們維護著一批對新手友善的任務,每條都寫明了具體檔案、驗收標準,並有測試引導你完成: +安裝與建置。本專案使用 pnpm——如果你還沒有,請先安裝(npm 隨 Node 一起提供,這條指令一定能用): -* 🏷️ [Good first issues](https://github.com/jason5ng32/MyIP/labels/good%20first%20issue) —— 新增你所在國家的 DNS 解析服務、新增精選網站清單、把 README 翻譯成你的語言、潤飾翻譯等 -* 🌐 [TRANSLATING.md](TRANSLATING.md) —— 把 UI 帶到你的語言:一個語言包加上一行註冊表,以及 **部分翻譯也是歡迎的首次 PR** -* 📄 [CONTRIBUTING.md](CONTRIBUTING.md) —— 環境架設、開發約定與 PR 流程(請將 PR 提交到 `dev` 分支) +```bash +npm install -g pnpm +pnpm install && pnpm run build +``` + +執行: + +```bash +pnpm start +``` + +程式會執行在 18966 連接埠。 ## ⚙️ 設定 -開始之前,有兩項設定最重要: +> [!IMPORTANT] +> **必須設定 MaxMind GeoLite2 憑證。** 它為 IP 地理位置與 ASN 查詢提供資料——未設定時,MaxMind 來源會回傳 503。憑證是免費的:→ [MaxMind 設定指南](https://docs.ipcheck.ing/developer/getting-started/maxmind-setup) -* **MaxMind GeoLite2(必須)** —— 免費憑證,為 IP 地理位置與 ASN 查詢提供資料。不設定時 MaxMind 資料來源會回傳 503。→ [MaxMind 設定指南](https://docs.ipcheck.ing/developer/getting-started/zh/maxmind-setup) -* **`ALLOWED_DOMAINS`(使用真實網域時必須)** —— 後端 API 的網域白名單。不設定時,來自非 localhost 網域的請求都會收到 403。→ [反向代理與網域](https://docs.ipcheck.ing/developer/getting-started/zh/reverse-proxy-and-domains) +> [!WARNING] +> **使用真實網域時必須設定 `ALLOWED_DOMAINS`。** 它是後端 API 的主機名稱允許清單——未設定時,來自非 localhost 網域的每個請求都會收到 403。→ [反向代理與網域](https://docs.ipcheck.ing/developer/getting-started/reverse-proxy-and-domains) ```bash docker run -d -p 18966:18966 \ @@ -124,12 +128,29 @@ docker run -d -p 18966:18966 \ jason5ng32/myip:latest ``` -其餘全部為選用設定 —— 第三方 API Key、安全與流量限制、日誌、Sentry、CURL API 網域等,詳見[環境變數參考](https://docs.ipcheck.ing/developer/reference/zh/environment-variables)。 +其餘一切——選用的 API Key、安全與流量限制、日誌、Sentry、curl API 網域——都記錄在[環境變數參考](https://docs.ipcheck.ing/developer/reference/environment-variables)中。 +## 📖 官方說明文件 + +完整指南在 MyIP 文件中心:**[docs.ipcheck.ing](https://docs.ipcheck.ing)** + +* [開發者指南](https://docs.ipcheck.ing/developer) —— 部署、設定、架構說明與參與貢獻 +* [知識庫](https://docs.ipcheck.ing/knowledge-base) —— 每個工具的使用說明、逐步的網路問題診斷,以及網路概念入門 + +## 🤝 參與貢獻 + +歡迎參與貢獻!我們維護著一批對新手友善的任務,每條都寫明了具體檔案路徑與驗收標準,並有測試引導你完成: + +* 🏷️ [Good first issues](https://github.com/jason5ng32/MyIP/labels/good%20first%20issue) —— 新增你所在國家的 DNS 解析服務、新增精選網站清單、把 README 翻譯成你的語言、潤飾翻譯等 +* 🌐 [TRANSLATING.md](TRANSLATING.md) —— 把 UI 帶到你的語言:一個語言包加上一行註冊表,而且 **部分翻譯也是歡迎的首次 PR** +* 📄 [CONTRIBUTING.md](CONTRIBUTING.md) —— 環境架設、開發約定與 PR 流程(請將 PR 提交到 `dev` 分支) ## 👩🏻‍💻 進階用法 -如果你在透過代理上網,可以考慮在你的代理設定裡,增加下面的規則(請根據你使用的用戶端進行修改),這樣就可以同時查詢真實 IP 和代理後的 IP: +
+同時查詢真實 IP 與代理 IP 的代理規則 + +如果你在透過代理上網,可以考慮在你的代理設定裡加入下面的規則(請根據你使用的用戶端進行修改)。這樣設定後,就可以同時查詢真實 IP 和使用代理時的 IP: ```ini # IP Testing @@ -148,6 +169,8 @@ DOMAIN,ptest-7.ipcheck.ing,Proxy7 DOMAIN,ptest-8.ipcheck.ing,Proxy8 ``` +
+ ## 💖 贊助者 作為一個開源專案,我非常感謝以下贊助者對我的支持: @@ -162,6 +185,10 @@ DOMAIN,ptest-8.ipcheck.ing,Proxy8 GitBook -v.ps +v.ps Cloudflare Project Alexandria + +## 📄 授權條款 + +[MIT](LICENSE) © Jason Ng From 00b21a73b076bcfda13eca5565a6d3c8580475d9 Mon Sep 17 00:00:00 2001 From: jason5ng32 Date: Wed, 26 Aug 2026 09:30:12 +0800 Subject: [PATCH 13/13] Feat(i18n): promote Brazilian Portuguese to full locale status - flip pt-BR to status:'full' in the locale registry - add pt-BR boot-screen quips and slow hint to index.html, and list it in the JSON-LD inLanguage - fill the productivity import-list name that landed after the pt-BR pack - swap TRANSLATING.md's new-language walkthrough example to es-MX now that pt-BR is a real full locale Co-Authored-By: Claude Fable 5 --- TRANSLATING.md | 6 +++--- common/locale-registry.js | 2 +- frontend/locales/pt-BR.json | 2 +- index.html | 13 ++++++++++++- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/TRANSLATING.md b/TRANSLATING.md index ed6d38523..dd8a0e74c 100644 --- a/TRANSLATING.md +++ b/TRANSLATING.md @@ -18,7 +18,7 @@ live in [CONTRIBUTING.md](CONTRIBUTING.md). ## The smallest useful PR ```bash -pnpm i18n-new pt-BR # your language's code — see "Naming the code" below +pnpm i18n-new es-MX # your language's code — see "Naming the code" below ``` That writes the two files a language needs and tells you what to do next: @@ -61,7 +61,7 @@ page. The gate rejects a `""` in either. When you're ready to do one, scaffold it the same way you scaffolded the main pack: ```bash -pnpm i18n-new pt-BR --privacy --checklist # either flag, or both +pnpm i18n-new es-MX --privacy --checklist # either flag, or both ``` Both need the language registered already (the plain `pnpm i18n-new ` run). The @@ -76,7 +76,7 @@ it, or delete it again. `common/locale-registry.js`: ```js -{ code: 'pt-BR', nativeName: 'Português (Brasil)', flag: 'br', apiTag: 'pt-BR', htmlLang: 'pt-BR', status: 'beta' }, +{ code: 'es-MX', nativeName: 'Español (México)', flag: 'mx', apiTag: 'es', htmlLang: 'es-MX', status: 'beta' }, ``` | Column | What to put in it | diff --git a/common/locale-registry.js b/common/locale-registry.js index a7f5cbe6e..634e8f503 100644 --- a/common/locale-registry.js +++ b/common/locale-registry.js @@ -15,7 +15,7 @@ export const LOCALES = [ { code: 'zh-TW', nativeName: '繁體中文', flag: 'tw', apiTag: 'zh-CN', htmlLang: 'zh-TW', status: 'full' }, // Upstream APIs do not support zh-TW, so apiTag aliases to zh-CN { code: 'fr', nativeName: 'Français', flag: 'fr', apiTag: 'fr', htmlLang: 'fr', status: 'full' }, { code: 'ru', nativeName: 'Русский', flag: 'ru', apiTag: 'ru', htmlLang: 'ru', status: 'full' }, - { code: 'pt-BR', nativeName: 'Português (Brasil)', flag: 'br', apiTag: 'pt-BR', htmlLang: 'pt-BR', status: 'beta' }, + { code: 'pt-BR', nativeName: 'Português (Brasil)', flag: 'br', apiTag: 'pt-BR', htmlLang: 'pt-BR', status: 'full' }, ]; // Registry order — also the order the language picker renders. diff --git a/frontend/locales/pt-BR.json b/frontend/locales/pt-BR.json index e2b786fbe..e5173c793 100644 --- a/frontend/locales/pt-BR.json +++ b/frontend/locales/pt-BR.json @@ -1240,7 +1240,7 @@ "brazil": "Essenciais do Brasil", "ai": "Serviços de IA", "social": "Redes sociais e mensagens", - "productivity": "", + "productivity": "Trabalho e produtividade", "streaming": "Streaming", "gaming": "Jogos", "developer": "Desenvolvimento", diff --git a/index.html b/index.html index aea5762e2..b22703d46 100644 --- a/index.html +++ b/index.html @@ -56,7 +56,7 @@ "name": "IPCheck.ing", "url": "__SITE_URL__/", "description": "Open-source IP toolbox: lookup, connectivity tests, WebRTC and DNS leak detection, speed test, MTR, Whois, and browser fingerprint.", - "inLanguage": ["en", "zh-CN", "zh-TW", "fr", "ru"], + "inLanguage": ["en", "zh-CN", "zh-TW", "fr", "ru", "pt-BR"], "publisher": { "@type": "Person", "name": "Jason Ng" } } @@ -381,6 +381,16 @@ 'Спрашиваем у DNS, где вы на самом деле…', 'Почти готово, честно…', ], + 'pt-BR': [ + 'Instalando os drivers da placa de rede…', + 'Alinhando o conector RJ45…', + 'Conectando a fibra ao roteador…', + 'Soprando a poeira da porta Ethernet…', + 'Reiniciando o modem (tentativa nº 1)…', + 'Triplo aperto de mão com seu provedor…', + 'Perguntando ao DNS onde você realmente está…', + 'Quase lá, prometemos…', + ], }; // Slow-network hint (revealed after 12s by the head script). Stored as @@ -392,6 +402,7 @@ 'zh-TW': '等太久了?試試 IPCheck.ing Lite,或重新整理頁面。', fr: 'C’est un peu long ? Essayez IPCheck.ing Lite, ou actualisez la page.', ru: 'Слишком долго? Попробуйте IPCheck.ing Lite или обновите страницу.', + 'pt-BR': 'Esperando demais? Experimente o IPCheck.ing Lite ou atualize a página.', }; // Hand-copy of matchLocale() in common/locale-registry.js — index.html