[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-8623":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":46,"readmeContent":47,"aiSummary":48,"trendingCount":15,"starSnapshotCount":15,"syncStatus":49,"lastSyncTime":50,"discoverSource":51},8623,"MyIP","jason5ng32\u002FMyIP","jason5ng32","The best IP Toolbox. Check your IP address & geolocation, test IP for WebRTC and DNS IP leaks, run an IP quality check, browser fingerprint check, website availability check, network speed test, global latency test, MTR test, Whois search, and more.","https:\u002F\u002Fipcheck.ing",null,"Vue",10655,1120,32,0,6,45,313,28,44.15,"MIT License",false,"main",true,[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"awesome","censorship","chatgpt","dns","ip","ipinfo","leaks","myip","network","pingchecker","proxy","security","security-tools","speedtest","vercel","webrtc","whatismyip","whatismyipaddress","whois","whois-lookup","2026-06-12 02:01:56","# 🧰 MyIP - A Better IP Toolbox\n\n\u003Cdiv align=\"center\">\n\n![IPCheck.ing Banner](https:\u002F\u002Fraw.githubusercontent.com\u002Fjason5ng32\u002FMyIP\u002Fmain\u002Fpublic\u002Fgithub\u002Fgh_banner.png)\n\n\u003Ca href=\"https:\u002F\u002Ftrendshift.io\u002Frepositories\u002F5332\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Ftrendshift.io\u002Fapi\u002Fbadge\u002Frepositories\u002F5332\" alt=\"jason5ng32%2FMyIP | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"\u002F>\u003C\u002Fa>\n\n[![Mentioned in Awesome Self Hosted](https:\u002F\u002Fawesome.re\u002Fmentioned-badge.svg)](https:\u002F\u002Fgithub.com\u002Fawesome-selfhosted\u002Fawesome-selfhosted)\n\n![GitHub Repo stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fjason5ng32\u002FMyIP)\n![GitHub forks](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002Fjason5ng32\u002Fmyip)\n![Docker Pulls](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Fjason5ng32\u002Fmyip)\n\n[![Website](https:\u002F\u002Fimg.shields.io\u002Fwebsite?url=https%3A%2F%2Fipcheck.ing&up_message=online&label=IPCheck.ing 'IPCheck.ing')](https:\u002F\u002Fipcheck.ing)\n![PWA](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPWA-Supported-blue)\n\n![CodeQL](https:\u002F\u002Fgithub.com\u002Fjason5ng32\u002FMyIP\u002Factions\u002Fworkflows\u002Fgithub-code-scanning\u002Fcodeql\u002Fbadge.svg?branch=main)\n![Docker Build and Push](https:\u002F\u002Fgithub.com\u002Fjason5ng32\u002FMyIP\u002Factions\u002Fworkflows\u002Fdocker-image.yml\u002Fbadge.svg?branch=main)\n\n🇺🇸 [English](README.md) | 🇨🇳 [简体中文](README_ZH.md) | 🇫🇷 [Français](README_FR.md) | 🇹🇷 [Türkçe](README_TR.md)\n\n👉 Demo: [https:\u002F\u002Fipcheck.ing](https:\u002F\u002Fipcheck.ing)\n\nFeel free to bookmark the demo or deploy your own.\n\n[![Deploy with Docker](https:\u002F\u002Fraw.githubusercontent.com\u002Fjason5ng32\u002FMyIP\u002Fmain\u002Fpublic\u002Fgithub\u002FDocker.svg)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fjason5ng32\u002Fmyip)\n\n\u003C\u002Fdiv>\n\n## 👀 Main Features\n\n* 🛜 **View Your IPs**: Detects and displays your local IPs, sourcing from multiple IPv4 and IPv6 providers.\n* 🔍 **Search IP Information**: Provides a tool for querying information about any IP address. \n* 🕵️ **IP Information**: Presents detailed information for all IP addresses, including country, region, ASN, geographic location, and more.\n* 🚦 **Availability Check**: Tests the accessibility of various websites, such as Google, GitHub, YouTube, ChatGPT, and others.\n* 🚥 **WebRTC Detection**: Identifies the IP address used during WebRTC connections.\n* 🛑 **DNS Leak Test**: Shows DNS endpoint data to evaluate the risk of DNS leaks when using VPNs or proxies.\n* 🚀 **Speed Test**：Test your network speed with edge networks.\n* 🚏 **Proxy Rule Testing**: Test the rule settings of proxy software to ensure their correctness.\n* ⏱️ **Global Latency Test**: Performe lantency tests on servers located in different regions around the world.\n* 📡 **MTR Test**: Perform MTR tests on servers located in different regions around the world.\n* 🔦 **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.\n* 🚧 **Censorship Check**: Check if a website is blocked in some countries.\n* 📓 **Whois Search**: Perform whois information search for domain names or IP addresses\n* 📀 **MAC Lookup**: Query information of a physical address\n* 🖥️ **Browser Fingerprints**：Multiple ways to caculate your browser fingerprint\n* 📋 **Cybersecurity Checklist**：A comprehensive cybersecurity checklist with a total of 258 items\n\n## 💪 Also\n\n* 🌗 **Dark Mode**: Automatically toggles between dark and daylight modes based on system settings, with an option for manual switching.\n* 📱 **Minimalist Mode**: A mobile-optimized mode that shortens page length for quick access to essential information..\n* 📲 **PWA Supported**：Can be added as a desktop app on your phone as well as a Chrome app on your computer.\n* ⌨️ **Keyboard Shortcuts**: Supports keyboard shortcuts for all functions, press `?` to view the shortcut list.\n* 🌍 Based on availability test results, it indicates whether global internet access is currently feasible.\n* 🇺🇸 🇨🇳 🇫🇷 🇹🇷 English, Chinese, French, and Turkish support.\n\n## 📕 How to Use\n\n### Deploying in a Node Environment\n\nMake sure you have Node.js installed.\n\nClone the code:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fjason5ng32\u002FMyIP.git\n```\n\nInstall and build:\n\n```bash\nnpm install && npm run build\n```\n\nRun:\n\n```bash\nnpm start\n```\n\nThe program will run on port 18966.\n\n### Using Docker\n\nClick the 'Deploy to Docker' button at the top to complete the deployment. Or, use the following shell:\n\n```bash\ndocker run -d -p 18966:18966 --name myip --restart always jason5ng32\u002Fmyip:latest\n```\n\n## 📚 Environment Variable\n\nVariables marked **Yes** below must be set for the backend to function correctly. The MaxMind credentials in particular are required — read the setup notes in the next subsection before filling in the table.\n\n### MaxMind Databases (Required)\n\nMyIP relies on the free **GeoLite2** databases from MaxMind (City + ASN) for IP geolocation, ASN \u002F organization lookup, and the country-code badges that appear throughout the app (IP cards, WebRTC ICE candidates, and more). A working MaxMind setup is required for the backend to serve a complete experience.\n\nThe `.mmdb` files are **not checked into this repository** because MaxMind's GeoLite2 license does not allow redistribution. You need to provide them yourself. There are two paths:\n\n**Option A — Automatic (recommended, required for Docker)**\n\n1. Create a free account at [maxmind.com\u002Fen\u002Fgeolite2\u002Fsignup](https:\u002F\u002Fwww.maxmind.com\u002Fen\u002Fgeolite2\u002Fsignup).\n2. Generate a license key from your account's \"Manage License Keys\" page.\n3. Set these three environment variables:\n   ```bash\n   MAXMIND_ACCOUNT_ID=\"your-account-id\"\n   MAXMIND_LICENSE_KEY=\"your-license-key\"\n   MAXMIND_AUTO_UPDATE=\"true\"\n   ```\n4. Start the backend. Within about 60 seconds of the first startup, the updater will download both databases. They are then refreshed every 24 hours automatically.\n\n> ⚠️ **Docker deployers must use Option A.** A fresh container ships with an empty `common\u002Fmaxmind-db\u002F` directory — without the three variables above the backend starts, but the MaxMind-powered IP source and WebRTC country badges will not work, and you'll see `MaxMind API will return 503...` in the logs on every boot.\n\n**Option B — Manual (for air-gapped or non-Docker setups)**\n\nDownload `GeoLite2-City.mmdb` and `GeoLite2-ASN.mmdb` from your MaxMind account and drop them into `common\u002Fmaxmind-db\u002F` before starting the backend. With this approach `MAXMIND_AUTO_UPDATE` can stay `\"false\"`, but you'll need to refresh the files manually as MaxMind publishes new versions.\n\n### Environment variables list\n\n| Variable Name | Required | Default Value | Description |\n| --- | --- | --- | --- |\n| `MAXMIND_ACCOUNT_ID` | **Yes** | `\"\"` | MaxMind account ID, paired with `MAXMIND_LICENSE_KEY` to download GeoLite2 databases. See the MaxMind section above. |\n| `MAXMIND_LICENSE_KEY` | **Yes** | `\"\"` | MaxMind license key, paired with `MAXMIND_ACCOUNT_ID`. See the MaxMind section above. |\n| `MAXMIND_AUTO_UPDATE` | **Yes** | `\"false\"` | Set to `\"true\"` to auto-download GeoLite2 databases ~60s after startup and refresh every 24h. **Required for Docker.** Can stay `\"false\"` only if you've pre-seeded the `.mmdb` files manually. |\n| `VITE_GOOGLE_ANALYTICS_ID` | **Yes** | `\"\"` | Google Analytics ID, used to track user behavior |\n| `BACKEND_PORT` | No | `\"11966\"` | The running port of the backend part of the program |\n| `FRONTEND_PORT` | No | `\"18966\"` | The running port of the frontend part of the program |\n| `SECURITY_RATE_LIMIT` | No | `\"0\"` | Controls the number of requests an IP can make to the backend server every 60 minutes (set to 0 for no limit) |\n| `SECURITY_DELAY_AFTER` | No | `\"0\"` | Controls the first X requests from an IP every 20 minutes that are not subject to speed limits, and after X requests, the delay will increase |\n| `SECURITY_BLACKLIST_LOG_FILE_PATH` | No | `\"logs\u002Fblacklist-ip.log\"` | Path setting. Records the list of IPs that triggered the limit after SECURITY_RATE_LIMIT is enabled |\n| `LOG_LEVEL` | No | `\"info\"` | Minimum log level (`debug` \u002F `info` \u002F `warn` \u002F `error`). Lower-level messages are suppressed. |\n| `LOG_FORMAT` | No | pretty | Set to `\"json\"` to emit one JSON event per line (for log aggregators \u002F jq). Any other value (or unset) keeps the colored pretty output used in dev and pm2 log tails. |\n| `LOG_HTTP` | No | `\"false\"` | Set to `\"true\"` to enable per-request HTTP logging on `\u002Fapi\u002F*` (method, URL, status, response time). Off by default to keep pm2 logs lean. Handler-level 4xx\u002F5xx errors are always logged regardless of this flag. |\n| `ALLOWED_DOMAINS` | No | `\"\"` | Allowed domains for access, separated by commas, used to prevent misuse of the backend API |\n| `GOOGLE_MAP_API_KEY` | No | `\"\"` | API Key for Google Maps, used to display the location of the IP on a map |\n| `IPCHECKING_API_ENDPOINT` | No | `\"\"` | API endpoint for IPCheck.ing database, used to obtain accurate IP geolocation information |\n| `IPCHECKING_API_KEY` | No | `\"\"` | API Key for IPCheck.ing database, used to obtain accurate IP geolocation information |\n| `IPINFO_API_TOKEN` | No | `\"\"` | API Token for IPInfo.io, used to obtain IP geolocation information through IPInfo.io |\n| `IPAPIIS_API_KEY` | No | `\"\"` | API Key for IPAPI.is, used to obtain IP geolocation information through IPAPI.is |\n| `IP2LOCATION_API_KEY` | No | `\"\"` | API Key for IP2Location.io, used to obtain IP geolocation information through IP2Location.io |\n| `CLOUDFLARE_API` | No | `\"\"` | API Key for Cloudflare, used to obtain AS system information through Cloudflare |\n| `MAC_LOOKUP_API_KEY` | No | `\"\"` | API Key for MAC Lookup, used to obtain MAC address information |\n| `VITE_CURL_IPV4_DOMAIN` | No | `\"\"` | Provides the IPv4 domain for the CURL API to users |\n| `VITE_CURL_IPV6_DOMAIN` | No | `\"\"` | Provides the IPv6 domain for the CURL API to users |\n| `VITE_CURL_IPV64_DOMAIN` | No | `\"\"` | Provides the dual-stack domain for the CURL API to users |\n\nNote that if any of the CURL series environment variables are missing, the CURL API will not be enabled.\n\n### Using Environment Variables in a Node Environment\n\nCreate environment variables:\n\n```bash\ncp .env.example .env\n```\n\nModify `.env`, and for example, add the following:\n\n```bash\nBACKEND_PORT=11966\nFRONTEND_PORT=18966\nMAXMIND_ACCOUNT_ID=\"YOUR_ACCOUNT_ID\"\nMAXMIND_LICENSE_KEY=\"YOUR_LICENSE_KEY\"\nMAXMIND_AUTO_UPDATE=\"true\"\nGOOGLE_MAP_API_KEY=\"YOUR_KEY_HERE\"\nALLOWED_DOMAINS=\"example.com\"\n```\n\nThen restart the backend service.\n\n### Using Environment Variables in Docker\n\nYou can add environment variables when running Docker, for example:\n\n```bash\ndocker run -d -p 18966:18966 \\\n  -e MAXMIND_ACCOUNT_ID=\"YOUR_ACCOUNT_ID\" \\\n  -e MAXMIND_LICENSE_KEY=\"YOUR_LICENSE_KEY\" \\\n  -e MAXMIND_AUTO_UPDATE=\"true\" \\\n  -e GOOGLE_MAP_API_KEY=\"YOUR_KEY_HERE\" \\\n  -e ALLOWED_DOMAINS=\"example.com\" \\\n  --name myip \\\n  jason5ng32\u002Fmyip:latest\n\n```\n\n## 👩🏻‍💻 Advanced Usage\n\nIf 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:\n\n```ini\n# IP Testing\nIP-CIDR,1.0.0.2\u002F32,Proxy,no-resolve\nIP-CIDR6,2606:4700:4700::1111\u002F128,Proxy,no-resolve\nDOMAIN,4.ipcheck.ing,DIRECT\nDOMAIN,6.ipcheck.ing,DIRECT\n# Rule Testing\nDOMAIN,ptest-1.ipcheck.ing,Proxy1\nDOMAIN,ptest-2.ipcheck.ing,Proxy2\nDOMAIN,ptest-3.ipcheck.ing,Proxy3\nDOMAIN,ptest-4.ipcheck.ing,Proxy4\nDOMAIN,ptest-5.ipcheck.ing,Proxy5\nDOMAIN,ptest-6.ipcheck.ing,Proxy6\nDOMAIN,ptest-7.ipcheck.ing,Proxy7\nDOMAIN,ptest-8.ipcheck.ing,Proxy8\n```\n\n## 😶‍🌫️ Additional Notes\n\nWhen version 2.0 was released, I said that 70% of the code for this program was not written by me, but by AI. After about 90 interactions, plus some minor manual adjustments, the entire codebase was completed.\n\nOf course, the architecture and UI still required my own design.\n\nWith the release of version 3.0 and subsequent versions, the proportion of code written with the help of AI has gradually decreased, now estimated to be between 40% and 50%. On the contrary, in this process, I went from having no knowledge of JavaScript and Vue to being able to understand most of the JS code, and I can now write some on my own.\n\nThanks to AI, it has given me, an unemployed product manager, a rapid opportunity to learn programming.\n\n## 🌟 Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=jason5ng32\u002FMyIP&type=Date)](https:\u002F\u002Fstar-history.com\u002F#jason5ng32\u002FMyIP&Date)\n\n## 💖 Sponsors\n\nAs a open source project, I'm very grateful to the following sponsors for their support:\n\n\u003Ca href=\"https:\u002F\u002Fwww.digitalocean.com\u002F?refcode=fd2634a3981b&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge\">\u003Cimg src=\"https:\u002F\u002Fopensource.nyc3.cdn.digitaloceanspaces.com\u002Fattribution\u002Fassets\u002FSVG\u002FDO_Logo_horizontal_blue.svg\" height=\"40px\" title=\"DigitalOcean\" \u002F>\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Fwww.cloudflare.com\u002Flp\u002Fproject-alexandria\u002F\">\u003Cimg src=\"https:\u002F\u002Fcf-assets.www.cloudflare.com\u002Fzkvhlag99gkb\u002F69RwBidpiEHCDZ9rFVVk7T\u002F092507edbed698420b89658e5a6d5105\u002FCF_logo_stacked_blktype.png\" alt=\"Cloudflare Project Alexandria\" title=\"Cloudflare Project Alexandria\" height=\"60px\" \u002F>\u003C\u002Fa>\n","MyIP 是一个全面的IP工具箱，旨在帮助用户轻松检查其IP地址、地理位置、DNS泄露情况等。它提供了包括查看您的IP、搜索IP信息、检测WebRTC连接、进行速度测试和ping测试、MTR测试、网站可用性检查以及Whois查询等多种功能。该工具基于Vue开发，界面友好且易于使用。适用于需要快速诊断网络状况或验证隐私设置是否有效的场景，如个人用户确保在线安全与隐私，或是开发者调试网络应用时使用。",2,"2026-06-11 03:18:57","top_language"]