Определить тип трафика на сайте, 3G или WI-FI?

Необходимо получить данные о типе трафика на сайты (wifi, 3g, 4g ...)
Простыми словами - с мобильного интернета юзер зашёл или подключился дома к wifi dsl.
Подскажите как это сделать точнее?

Если прогонять ip пользователя по базам типа RIPE, то мы узнаем только провайдера, у которого может быть не только моб интернет.
Пробовал собирать хедеры с яндекс браузера, там яша передаёт в них тип сети, но это малая доля трафа.
Возможно есть счетчики - поставил да посмотрел?
  • Вопрос задан
  • 1934 просмотра
Решения вопроса 1
@vylegzhanin
Есть список IP-адресов мобильных операторов (выдрано из мобильной партнерки).
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
vvpoloskin
@vvpoloskin
Инженер связи
Через js получить локальный IP-адрес пользовательского устройства (сценарии есть в интернете), если он из 100.64.0.0/12 - мобильный оператор, из других частных диапазонов - фиксированный. Не поможет, если абонент подключен через wifi, у которого аплинк 3G/LTE.

Если есть возможность выполнить http-запрос на клиентском устройстве, попробовать открыть личный кабинет четырёх операторов (типа lk.megafon.ru), если открывает без логина - вы нашли своего провайдера.
Ответ написан
@vadimek
Полуджун
UPDATE: добавил connection.type для определения типа соединения, помимо его скорости (effectiveType). connection.type не работает на десктопе.

Так:
let connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
let connectionSpeed = connection.effectiveType;
let connectionType = connection.type || "No mobile";

Но wifi не определяет почему-то, пробовал так
Ответ написан
Вопрос составлен не корректно, нужно узнать либо:
вход был мобильного устройства
или
с мобильного оператора подключено устройство

в первом случае определяем по user-agent,
определение как
!function(a){var b=/iPhone/i,c=/iPod/i,d=/iPad/i,e=/(?=.*\bAndroid\b)(?=.*\bMobile\b)/i,f=/Android/i,g=/(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i,h=/(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i,i=/IEMobile/i,j=/(?=.*\bWindows\b)(?=.*\bARM\b)/i,k=/BlackBerry/i,l=/BB10/i,m=/Opera Mini/i,n=/(CriOS|Chrome)(?=.*\bMobile\b)/i,o=/(?=.*\bFirefox\b)(?=.*\bMobile\b)/i,p=new RegExp("(?:Nexus 7|BNTV250|Kindle Fire|Silk|GT-P1000)","i"),q=function(a,b){return a.test(b)},r=function(a){var r=a||navigator.userAgent,s=r.split("[FBAN");return"undefined"!=typeof s[1]&&(r=s[0]),s=r.split("Twitter"),"undefined"!=typeof s[1]&&(r=s[0]),this.apple={phone:q(b,r),ipod:q(c,r),tablet:!q(b,r)&&q(d,r),device:q(b,r)||q(c,r)||q(d,r)},this.amazon={phone:q(g,r),tablet:!q(g,r)&&q(h,r),device:q(g,r)||q(h,r)},this.android={phone:q(g,r)||q(e,r),tablet:!q(g,r)&&!q(e,r)&&(q(h,r)||q(f,r)),device:q(g,r)||q(h,r)||q(e,r)||q(f,r)},this.windows={phone:q(i,r),tablet:q(j,r),device:q(i,r)||q(j,r)},this.other={blackberry:q(k,r),blackberry10:q(l,r),opera:q(m,r),firefox:q(o,r),chrome:q(n,r),device:q(k,r)||q(l,r)||q(m,r)||q(o,r)||q(n,r)},this.seven_inch=q(p,r),this.any=this.apple.device||this.android.device||this.windows.device||this.other.device||this.seven_inch,this.phone=this.apple.phone||this.android.phone||this.windows.phone,this.tablet=this.apple.tablet||this.android.tablet||this.windows.tablet,"undefined"==typeof window?this:void 0},s=function(){var a=new r;return a.Class=r,a};"undefined"!=typeof module&&module.exports&&"undefined"==typeof window?module.exports=r:"undefined"!=typeof module&&module.exports&&"undefined"!=typeof window?module.exports=s():"function"==typeof define&&define.amd?define("isMobile",[],a.isMobile=s()):a.isMobile=s()}(this);

if (isMobile.any) { alert('Мобильное устройство')}


во втором случае определяем по ip, для этого нужна база с ip-адресами, например https://www.maxmind.com/en/geoip2-city или похожая, на просторах Интернета полно.

Ну если Вам нужно определить с какой скоростью (3G или 4G) подключен Интернет, то тут только к оператору, либо тест какой-то устроить по скачке/закачке файла, аля speedtest.net

И вообще интересно, для чего решается данная задача именно в поставленном контенте?!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы