• Не работают ссылки (роуты?) после переноса сайта на CodeIgniter 3.1.9, куда ещё посмотреть?

    @KingstonKMS
    NGINX не понимает htaccess файл.
    Либо конвертируйте его в nginx правила, либо оставляйте только apache
    Ответ написан
    1 комментарий
  • Как найти все индексы вхождения подстроки?

    AngReload
    @AngReload
    Кратко о себе
    У этого метода есть второй параметр — с какого индекса вести поиск. Так что можно сделать функцию:
    function getListIdx(str, substr) {
      let listIdx = []
      let lastIndex = -1
      while ((lastIndex = str.indexOf(substr, lastIndex + 1)) !== -1) {
        listIdx.push(lastIndex)
      }
      return listIdx
    }
    getListIdx('abc bca abcabc cba', 'abc') // [ 0, 8, 11 ]
    Ответ написан
    Комментировать
  • Определение протокола через $_SERVER?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $protocol = (!empty($_SERVER['HTTPS']) && 'off' !== strtolower($_SERVER['HTTPS'])?"https://":"http://");
    echo $protocol. $_SERVER["SERVER_NAME"];
    Ответ написан
    3 комментария
  • Как оператор сотовой связи понимает, что сим-карта выдаёт интернет на смартфон или на роутер/USB-модем?

    @yaror
    10 лет в мобильном телекоме
    Уже немного обсуждалось здесь:
    Работа роутера?

    Ещё раз повторюсь, немного творчески переработав ответ.
    Детекцию раздачи трафика можно условно разделить на несколько рубежей.

    1. Рубеж первый
    Каждое устройство в сотовой сети в момент регистрации сообщает сети свой IMEI - код устройства, по которому можно однозначно определить модель Вашего устройства.

    Да, нужна база IMEI с device capabilities - описанием того, что это за устройство и что оно умеет. Но она у мобильного оператора уже есть: Вам, когда Вы впервые вставляли сим-карту в новый телефон, прилетали SMS-кой настройки интернета? Настройки у разных производителей немного разные, поэтому надо знать модель абонентского аппарата.

    Получается, что как только ты вставляешь сим-карту в Wi-Fi-роутер, оператор сразу понимает, что это роутер, а значит, он будет раздавать интернет через Wi-Fi.
    Реализация этой технологии оператору обходится совершенно бесплатно.

    2. Второй рубеж: анализ TTL.
    Надо понимать, что на первом рубеже будут отловлены только собственно роутеры, а включенная в настройках телефона точка доступа Wi-Fi оператору не видна.
    Но есть уловка: устройство, раздающее интернет по Wi-Fi, по умолчанию будет уменьшать поле TTL на всех проходящих через него ip-пакетах.
    Зная типичные начальные значения TTL для мобильных платформ, можно реагировать на все прочие значения как сигнал, что здесь где-то притаился Wi-Fi.
    Для реализации этого, оператору уже потребуются дополнительные расходы.
    Понятно, что ставить отдельное устройство для отлова любителей Wi-Fi никто не будет, поэтому обычно этим занимается операторский DPI - комплекс, занимающийся классификацией и "раскраской" абонентского трафика, благодаря которому и становятся возможны, скажем, отдельные условия тарификации социальных сетей.
    Кстати, удивительно, но, во-первых, не все DPI это умеют (Эриксон, вам же стыдно, да?). Во-вторых, те, что умеют, умеют это за отдельные деньги в виде подлежащей покупке лицензии.

    3. Рубеж третий: эвристика
    Тема интересная и увлекательная.
    Да, абонент может поменять IMEI прямо в настройках телефона.
    Да, абонент может перепрошить телефон, чтобы тот не трогал TTL.
    Но, как только хитрых абонентов становится много, оператору становится выгодно вкладываться в расширенный анализ трафика на том же DPI.
    Итак, что можно сделать?
    Ну, сходу:

    3.1. Вы выходите в интернет прямо с телефона через встроенный браузер? Поздравляем, Вы только что в поле User-Agent протокола HTTP рассказали оператору, какая у вас мобильная платформа, и какой версии!
    Как так, с одного устройства оператор видит разные User-Agent, указывающие то на Android, то на Apple? Ребята, да у вас там Wi-Fi!

    3.2. TCP/IP fingerptinting. Разные мобильные платформы (те же Android/Apple) используют разные начальные значения полей в ip-пакетах. Да взять хоть тот же TCP Window size! Анализируя их, можно угадать как минимум производителя платформы. А комбинируя это с тем же анализом по IMEI...
    Ребята, а как так: само устройство у вас от Apple, а значения полей в ip-пакетах характерны для Windows Phone?
    Или почему ваш трафик похож то на Android, то на Blackberry?

    Понятно, что эвристический анализ реализован тем более не на каждом DPI, и за тем более отдельные деньги за лицензию. Да и производительность подобный анализ просаживает очень здорово...
    Однако, технические средства уже есть и, как только они начнут окупаться финансово, оператору становится выгодно их внедрять.
    Ответ написан
    6 комментариев