Skip to content

Commit a18f242

Browse files
committed
feat: ipapi.is as primary geo source (city/locality precision, graceful fallback), move WebRTC card after locale formatting for balanced layout
1 parent fc24abd commit a18f242

2 files changed

Lines changed: 21 additions & 6 deletions

File tree

src/detect/collectors.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,21 @@ export const collectLocaleFormattingInfo = () => {
385385
* 多源链式回退(均为免费无 key 的公益服务)
386386
*/
387387
const IP_GEO_ENDPOINTS = [
388+
{
389+
url: "https://api.ipapi.is/",
390+
normalize: (data) => {
391+
// 兼容扁平与嵌套 location 两种形状
392+
const loc = data?.location || data || {};
393+
return {
394+
ip: data?.ip || "",
395+
timezone: loc.timeZone || data?.timeZone || "N/A",
396+
country: loc.country || data?.country || "N/A",
397+
region: loc.region || data?.region || "",
398+
city: [loc.city, loc.locality].filter(Boolean).join(" / ") || data?.city || "",
399+
organization: data?.organization?.name || data?.organization || data?.org || "",
400+
};
401+
},
402+
},
388403
{
389404
url: "https://ipwhois.app/json/",
390405
normalize: (data) => {

src/detect/detect.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -262,25 +262,25 @@ <h4 class="mb-1" id="aiDiagnosisTitle" data-i18n="ai_diagnosis_title"></h4>
262262
</div>
263263
<div class="col-md-6">
264264
<div class="card mb-3">
265-
<div class="card-header bg-body-tertiary" id="webRtcTitle" data-i18n="webrtc_detection"></div>
265+
<div class="card-header bg-body-tertiary" id="browserFingerprintTitle" data-i18n="browser_fingerprint"></div>
266266
<div class="card-body">
267-
<div id="webRtcInfo" data-i18n="detecting"></div>
267+
<div id="fingerprintInfo" data-i18n="detecting"></div>
268268
</div>
269269
</div>
270270
</div>
271271
<div class="col-md-6">
272272
<div class="card mb-3">
273-
<div class="card-header bg-body-tertiary" id="browserFingerprintTitle" data-i18n="browser_fingerprint"></div>
273+
<div class="card-header bg-body-tertiary" id="localeFormattingTitle" data-i18n="locale_formatting_title"></div>
274274
<div class="card-body">
275-
<div id="fingerprintInfo" data-i18n="detecting"></div>
275+
<div id="localeFormattingInfo" data-i18n="detecting"></div>
276276
</div>
277277
</div>
278278
</div>
279279
<div class="col-md-6">
280280
<div class="card mb-3">
281-
<div class="card-header bg-body-tertiary" id="localeFormattingTitle" data-i18n="locale_formatting_title"></div>
281+
<div class="card-header bg-body-tertiary" id="webRtcTitle" data-i18n="webrtc_detection"></div>
282282
<div class="card-body">
283-
<div id="localeFormattingInfo" data-i18n="detecting"></div>
283+
<div id="webRtcInfo" data-i18n="detecting"></div>
284284
</div>
285285
</div>
286286
</div>

0 commit comments

Comments
 (0)