Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
d920ddb
fix(header): keep the standalone header inside a 320px viewport
vsolano9 Aug 24, 2026
a82a612
Merge pull request #446 from vsolano9/fix/445-standalone-header-320
jason5ng32 Aug 24, 2026
70f9b84
Improvements
jason5ng32 Aug 24, 2026
abe608f
Improvements
jason5ng32 Aug 24, 2026
0208d23
Feat(i18n): add Traditional Chinese beta locale
dofy Aug 24, 2026
0828f0b
Feat(i18n): complete Traditional Chinese main locale
dofy Aug 24, 2026
7a3989f
Feat(i18n): complete Traditional Chinese locale packs
dofy Aug 24, 2026
13f226f
Merge pull request #453 from dofy/seven/zh-tw-translation
jason5ng32 Aug 24, 2026
050be6e
Fix(checklist): repair the corrupted KeePass plugins link
jason5ng32 Aug 24, 2026
eb16afb
Feat(i18n): promote Traditional Chinese to full
jason5ng32 Aug 24, 2026
7b3594e
docs: add the Traditional Chinese README
jason5ng32 Aug 24, 2026
2cc732a
Improvements
jason5ng32 Aug 24, 2026
017e2b8
Feat(connectivity): add India import list
iamprashanthchowdary Aug 24, 2026
107f6f8
chore(remove) : digilocker it was under cdn
iamprashanthchowdary Aug 24, 2026
855a6f8
feat(connectivity): update India import list with new services as per…
iamprashanthchowdary Aug 24, 2026
c480efa
feat(i18n): add India to Traditional Chinese locale
iamprashanthchowdary Aug 24, 2026
9b49bae
Improvements
jason5ng32 Aug 25, 2026
13ce7cb
Merge pull request #448 from iamprashanthchowdary/feat/india-connecti…
jason5ng32 Aug 25, 2026
cd5b25f
Fix(connectivity): correct the Justdial spelling
jason5ng32 Aug 25, 2026
9c0e36a
Improvements
jason5ng32 Aug 25, 2026
56f4413
Merge pull request #454 from jason5ng32/dev
jason5ng32 Aug 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ Summary of the change, and the issue it fixes if any (e.g. `Closes #123`).
- [ ] Targets `dev`; one concern per PR
- [ ] `pnpm check` is green locally (tests + build)
- [ ] Logic changes ship with a spec in `tests/`
- [ ] User-visible copy lands in all four locales (`en` / `zh` / `fr` / `ru`)
- [ ] User-visible copy lands in all five `full` locales (`en` / `zh` / `zh-TW` / `fr` / `ru`)
- [ ] I've read [CONTRIBUTING.md](../CONTRIBUTING.md) and the relevant `AGENTS.md`
12 changes: 6 additions & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ Details and rationale live in the AGENTS.md files; the headlines:
- **JavaScript only** — no TypeScript, no `lang="ts"`.
- **New functions use `const` arrow syntax** (`const fn = async () => {}`).
- **Every new file opens with a header comment** stating its purpose.
- **The `full` locales land together** — user-visible copy ships in `en` / `zh` / `fr` /
`ru` in the same PR (`frontend/locales/`; tests enforce it). `beta` locales are exempt —
they fall back to English.
- **The `full` locales land together** — user-visible copy ships in `en` / `zh` / `zh-TW` /
`fr` / `ru` in the same PR (`frontend/locales/`; tests enforce it). `beta` locales are
exempt — they fall back to English.
- **Backend logging goes through the shared pino logger** (`common/logger.js`) —
no `console.*` in `api/` or `common/`.

Expand All @@ -80,16 +80,16 @@ runnable directly as `pnpm fetch-favicons`). Only if auto-fetch can't find a usa
PNG do you hand-source one (on macOS, `sips` handles ICO→PNG). Remember to commit
the PNGs with your change — CI stays offline and only checks they exist.

**README translations** — beyond the four READMEs we maintain (`en` / `zh` / `fr` /
**README translations** — beyond the five READMEs we maintain (`en` / `zh` / `zh-TW` / `fr` /
`ru`), community-maintained translations in any language are welcome. Create
`README_<LANG>.md` from the English [README.md](README.md) (the canonical source),
open it with a one-line "community-maintained translation — English is canonical"
note in your language, and add your language to the switcher row near the top of the
existing READMEs. Keep code blocks, URLs, and badges unchanged. Check open issues
for requested languages before starting.

**UI translations** — improvements to the existing `en` / `zh` / `fr` / `ru` packs are
welcome, and so is a whole new language. Adding one is two files: a locale pack under
**UI translations** — improvements to the existing `en` / `zh` / `zh-TW` / `fr` / `ru` packs
are welcome, and so is a whole new language. Adding one is two files: a locale pack under
`frontend/locales/` and a line in `common/locale-registry.js`. **A partial pack is a
welcome first PR** — anything you don't translate falls back to English, and the language
ships as `beta` until it's complete. Full walkthrough: **[TRANSLATING.md](TRANSLATING.md)**.
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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_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)

👉 Demo: [https://ipcheck.ing](https://ipcheck.ing)

Expand Down Expand Up @@ -55,7 +55,7 @@ Feel free to bookmark the demo or deploy your own.
* 📲 **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.
* 🇺🇸 🇨🇳 🇷🇺 🇫🇷 English, Chinese, Russian, French support.
* 🔤 Multiple languages supported.

## 📕 How to Use

Expand Down
4 changes: 2 additions & 2 deletions README_FR.md
Original file line number Diff line number Diff line change
Expand Up @@ -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_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)

👉 Démo: [https://ipcheck.ing](https://ipcheck.ing)

Expand Down Expand Up @@ -55,7 +55,7 @@ Notes: Vous pouvez utiliser ma démo gratuitement et vous pouvez également la d
* 📲 **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 l'anglais, du chinois, du russe et du français.
* 🔤 Prise en charge de plusieurs langues.

## 📕 Comment utiliser

Expand Down
4 changes: 2 additions & 2 deletions README_RU.md
Original file line number Diff line number Diff line change
Expand Up @@ -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_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)

👉 Демо: [https://ipcheck.ing](https://ipcheck.ing)

Expand Down Expand Up @@ -55,7 +55,7 @@
* 📲 **Поддержка PWA**: сайт можно установить как приложение на телефон или компьютер через Chrome.
* ⌨️ **Сочетания клавиш**: все функции поддерживают горячие клавиши; нажмите `?`, чтобы открыть их список.
* 🌍 По результатам проверки доступности определяется, возможен ли полноценный доступ к глобальному интернету.
* 🇺🇸 🇨🇳 🇷🇺 🇫🇷 Поддерживаются английский, китайский, русский и французский языки.
* 🔤 Поддерживаются многочисленные языки.

## 📕 Использование

Expand Down
4 changes: 2 additions & 2 deletions README_ZH.md
Original file line number Diff line number Diff line change
Expand Up @@ -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_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)

👉 在这里体验:[https://ipcheck.ing](https://ipcheck.ing)

Expand Down Expand Up @@ -55,7 +55,7 @@
* 📲 **支持 PWA**:可以添加为手机应用以及电脑里的桌面应用,方便使用
* ⌨️ **支持快捷键**:可以随时输入 `?` 查看快捷键菜单
* 🌍 根据可用性检测结果,返回目前是否可以访问全世界网络的提示
* 🇺🇸 🇨🇳 🇷🇺 🇫🇷 支持中文、英文、俄文、法文
* 🔤 支持多种语言

## 📕 如何使用

Expand Down
167 changes: 167 additions & 0 deletions README_ZH_TW.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
# 🧰 IP 工具箱

<div align="center">

![IPCheck.ing Banner](https://raw.githubusercontent.com/jason5ng32/MyIP/main/public/github/gh_banner.png)

<a href="https://trendshift.io/repositories/5332" target="_blank"><img src="https://trendshift.io/api/badge/repositories/5332" alt="jason5ng32%2FMyIP | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>

[![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)

👉 在這裡體驗:[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)

</div>

## 👀 主要功能

* 🛜 **看自己的 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**:可以新增為手機應用程式以及電腦裡的桌面應用程式,方便使用
* ⌨️ **支援快捷鍵**:可以隨時輸入 `?` 查看快捷鍵選單
* 🌍 根據可用性偵測結果,回傳目前是否可以存取全世界網路的提示
* 🔤 支援多種語言

## 📕 如何使用

### 在 Node 環境部署

確保你系統裡已經有 Node.js 環境。

複製程式碼:

```bash
git clone https://github.com/jason5ng32/MyIP.git
```

安裝與編譯。本專案使用 pnpm,如果你還沒有,請先安裝(npm 隨 Node 一起提供,這條指令一定能用):

```bash
npm install -g pnpm
pnpm install && pnpm run build
```

執行:

```bash
pnpm start
```

程式會執行在 18966 連接埠。

### 使用 Docker

點選頂部的部署到 Docker 按鈕,即可完成部署,又或者,直接輸入下面的指令:

```bash
docker run -d -p 18966:18966 --name myip --restart always jason5ng32/myip:latest
```

## 📖 官方說明文件

完整說明文件在 MyIP 文件中心:**[docs.ipcheck.ing](https://docs.ipcheck.ing)**(右上角可切換中文)

* [開發者指南](https://docs.ipcheck.ing/developer/zh) —— 部署、設定、架構說明與參與貢獻
* [知識庫](https://docs.ipcheck.ing/knowledge-base/zh) —— 每個工具的使用說明、網路問題疑難排解指南、網路概念入門

## 🤝 參與貢獻

歡迎參與貢獻!我們維護著一批對新手友善的任務,每條都寫明了具體檔案、驗收標準,並有測試引導你完成:

* 🏷️ [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` 分支)

## ⚙️ 設定

開始之前,有兩項設定最重要:

* **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)

```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
```

其餘全部為選用設定 —— 第三方 API Key、安全與流量限制、日誌、Sentry、CURL API 網域等,詳見[環境變數參考](https://docs.ipcheck.ing/developer/reference/zh/environment-variables)。


## 👩🏻‍💻 進階用法

如果你在透過代理上網,可以考慮在你的代理設定裡,增加下面的規則(請根據你使用的用戶端進行修改),這樣就可以同時查詢真實 IP 和代理後的 IP:

```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
```

## 💖 贊助者

作為一個開源專案,我非常感謝以下贊助者對我的支持:

<a href="https://www.digitalocean.com/?refcode=fd2634a3981b&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge"><img src="https://res.ipcheck.ing/img/digitalocean_logo.png" width="240px" title="DigitalOcean" /></a>

<a href="https://www.1password.com"><img src="https://res.ipcheck.ing/img/1password_logo.png" alt="1Password" title="1Password" width="240px" /></a>

<a href="https://www.greptile.com/"><img src="https://res.ipcheck.ing/img/greptile_logo.png" alt="Greptile" title="Greptile" width="240px" /></a>

<a href="https://www.sentry.io"><img src="https://res.ipcheck.ing/img/sentry_logo.png" alt="Sentry" title="Sentry" width="240px" /></a>

<a href="https://www.gitbook.com"><img src="https://res.ipcheck.ing/img/gitbook_logo.png" alt="GitBook" title="GitBook" width="240px" /></a>

<a href="https://v.ps/?utm_source=ipcheck.ing&utm_medium=referral&utm_campaign=github_readme&utm_content=zh"><img src="https://res.ipcheck.ing/img/vps_logo.png" alt="v.ps" title="v.ps" width="240px" /></a>

<a href="https://www.cloudflare.com/lp/project-alexandria/"><img src="https://res.ipcheck.ing/img/cloudflare_logo.png" alt="Cloudflare Project Alexandria" title="Cloudflare Project Alexandria" width="240px" /></a>
14 changes: 7 additions & 7 deletions TRANSLATING.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Translating MyIP

MyIP (demo website: [IPCheck.ing](https://ipcheck.ing)) ships its UI in English, 简体中文, Français and
Русский. Adding a fifth — or a sixth — is a two-file change, and **a partial translation is
a welcome first PR**. You do not need to translate everything, and you do not need to know
Vue.
MyIP (demo website: [IPCheck.ing](https://ipcheck.ing)) ships its UI in English, 简体中文, 繁體中文,
Français and Русский. Adding a sixth — or a seventh — is a two-file change, and **a partial
translation is a welcome first PR**. You do not need to translate everything, and you do not
need to know Vue.

Anything you leave untranslated falls back to English, so a pack with a hundred strings in
it is genuinely useful on day one and can grow over several PRs. Untranslated strings stay
Expand Down Expand Up @@ -44,7 +44,7 @@ can see at a glance which strings you actually wrote.
| `frontend/locales/<code>.json` | The main pack — every string in the app UI (~1,150 keys) | **Yes** — all keys, values may be `""` |
| `frontend/locales/privacy/<code>.json` | Privacy policy copy (~50 keys) | No — but whole or not at all |
| `frontend/locales/security-checklist/<code>.json` | The Cybersecurity Checklist dataset (~1,080 keys, 258 items) | No — but whole or not at all |
| `frontend/data/changelog.json` | Release history, one string per language per entry (161 entries) | No — beta languages are exempt |
| `frontend/data/changelog.json` | Release history, one string per language per entry (163 entries) | No — beta languages are exempt |

`en.json` is the reference for all of them: a translation may lag behind English, never
contradict it.
Expand Down Expand Up @@ -184,7 +184,7 @@ them would fail the gate on your behalf. Translate the new keys, or drop the fil

## Improving an existing language

Fixes and better phrasings for `en` / `zh` / `fr` / `ru` are just as welcome as new
Fixes and better phrasings for `en` / `zh` / `zh-TW` / `fr` / `ru` are just as welcome as new
languages — edit the JSON and open the PR. Two things to keep in mind:

- Prefer natural phrasing over literal translation; this is a networking tool, and the
Expand All @@ -201,7 +201,7 @@ maintainer decision, made when the language is actually complete:

- Main pack, privacy copy and security checklist all at 100% against `en` — not a single
`""` left (`pnpm i18n-status` shows this).
- Changelog history back-filled — all 161 entries in `frontend/data/changelog.json`.
- Changelog history back-filled — all 163 entries in `frontend/data/changelog.json`.
- Enough of a track record that copy changes will keep landing in it.

Once `status` flips to `'full'`, `tests/locale-packs.test.js` and `tests/changelog.test.js`
Expand Down
Loading
Loading