πŸ“ΠšΠ°ΠΊ бСсплатно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мСстополоТСниС посСтитСлСй вашСго сайта с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Javascript?

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²Π΅Π±-сайтов ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ для всСх посСтитСлСй β€” нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΡ‰ΡƒΡ‚ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ‚ΡƒΠ΄Π° ΠΏΠΎΠΏΠ°Π»ΠΈ.

Но Ρƒ людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΠ΅Ρ‰Π°ΡŽΡ‚ ваш Π²Π΅Π±-сайт, Ρ€Π°Π·Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ. Одни хотят Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΡƒΠΏΠΈΡ‚ΡŒ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ исслСдованиями. И Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π½Π°ΠΉΡ‚ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅ Π·Π½Π°ΡŽΡ‚, Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ здСсь.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС Π²Π΅Π±-сайта Π² зависимости ΠΎΡ‚ мСстополоТСния посСтитСля?

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках для людСй ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… стран.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мСстополоТСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‹ Π² мСстной Π²Π°Π»ΡŽΡ‚Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, вашим посСтитСлям Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ придСтся ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½Π½Ρ‹Π΅ курсы. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΎΠ½ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ свои ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ врСмя доставки Π² зависимости ΠΎΡ‚ мСстополоТСния посСтитСля.

Как насчСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ людям Ρ€Π΅ΠΊΠ»Π°ΠΌΡƒ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΡ… ΠΌΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ? Π­Ρ‚ΠΎ каТСтся ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ, ΠΈ ΠΎΠ½Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΉ с Π³Π΅ΠΎΡ‚Π°Ρ€Π³Π΅Ρ‚ΠΈΠ½Π³ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ количСство посСщСний ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ².

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрсонализированного ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΄Π°ΠΆ.

НСдавно ΠΌΡ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Π’Π΅Π±-сайт с бСсплатными Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ статистики COVID-19 Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π­Ρ‚ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ для посСтитСля, Π² зависимости ΠΎΡ‚ Π΅Π³ΠΎ мСстополоТСния.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒ ΠΈΡ…. ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π»ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ статистику ΠΏΠΎ вашСй странС?

Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ваш сайт мСстонахоТдСниС посСтитСля?

Π•ΡΡ‚ΡŒ нСсколько способов ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это:

  • API Π³Π΅ΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠΈ
  • API IP-Π³Π΅ΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠΈ
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ трассировки CloudFlare бСсплатно

ГСолокация

API Π³Π΅ΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠΈ позволяСт ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŽ Π²Π΅Π±-страницы Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ своим мСстополоТСниСм. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ отобраТаСтся подсказка с вопросом, Π½Π΅ хотят Π»ΠΈ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своим мСстополоТСниСм с вашим сайтом. Π’Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠ΄Π° Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹.

{
  "location": {
    "lat": 33.3632256,
    "lng": -117.0874871
  },
  "accuracy": 20
}

Π’ случаС ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π° Ρƒ вас Π½Π΅Ρ‚ возмоТности ΡƒΠ·Π½Π°Ρ‚ΡŒ мСстополоТСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

API-интСрфСйсы IP-Π³Π΅ΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠΈ

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ΡƒΠ·Π½Π°Ρ‚ΡŒ мСстополоТСниС посСтитСля β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ сСрвисы ΠΈΠ· списка API, пСрСчислСнных Π½Π° API-интСрфСйсы IP-Π³Π΅ΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠΈ .

ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° трассировки Cloudflare

Π― ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мСстополоТСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ бСсплатно!

CloudFlare обслуТиваСт страницы отслСТивания Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сайтС, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΌ Π½Π° ΠΈΡ… Π΄ΠΎΠΌΠ΅Π½Π΅, ΠΏΠΎ адрСсу /cdn-cgi/trace конСчная Ρ‚ΠΎΡ‡ΠΊΠ°.

ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запроса Π½Π° Π²Ρ‹Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

fl=xxxxx
h=www.cloudflare.com
ip=xxx.xxx.xxx.xxx
ts=1589224733.208
visit_scheme=https
uag=Mozilla/5.0 ...
colo=PRG
http=http/2
loc=SK
tls=TLSv1.3
sni=plaintext
warp=off

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ чистый Javascript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Cloudflare ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ IP-адрСс ΠΈ страну посСтитСля.


const countryCodeExpression = /loc=([\w]{2})/;
const userIPExpression = /ip=([\w\.]+)/;


function initCountry() {
    return new Promise((resolve, reject) => {
        var xhr = new XMLHttpRequest();
        xhr.timeout = 3000;
        xhr.onreadystatechange = function () {
            if (this.readyState == 4) {
                if (this.status == 200) {
                    countryCode = countryCodeExpression.exec(this.responseText)
                    ip = userIPExpression.exec(this.responseText)
                    if (countryCode === null || countryCode[1] === '' ||
                        ip === null || ip[1] === '') {
                        reject('IP/Country code detection failed');
                    }
                    let result = {
                        "countryCode": countryCode[1],
                        "IP": ip[1]
                    };
                    resolve(result)
                } else {
                    reject(xhr.status)
                }
            }
        }
        xhr.ontimeout = function () {
            reject('timeout')
        }
        xhr.open('GET', '', true);
        xhr.send();
    });
}

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ мСстонахоТдСния посСтитСля.


initCountry().then(result => console.log(JSON.stringify(result))).catch(e => console.log(e))


{"countryCode":"SK","IP":"xxx.xxx.xxx.xxx"}

Π­Ρ‚ΠΎ всС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ динамичСский ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π½Π° основС IP-адрСса посСтитСля ΠΈ Π³Π΅ΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠΈ.

Бпасибо Π·Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅!

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ записи

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *