Ебаут ливежорнал
Dec. 28th, 2011 11:03 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Интересную штуку заметил. Ну то есть как заметил - присутствует она уже сто тысяч миллионов лет.
Если выходить в ЖЖ не через телефон (т.е. через спутник, 3G модем, проводного/беспроводного провайдера или даже напрямую врубая шнурок в магистральный маршрутизатор) - оно работает нормально. Если выходить через телефон (т.е. с телефона напрямую, или любым из возможных способов используя его в качестве точки доступа) - в жежешке не грузятся CSS и JS. Отчего выглядит жежешка... ну вы и сами можете посмотреть, отключив в браузере то и другое самостоятельно.
Единственный вариант объяснения, который мне приходит в голову такой: GGSN (или SGSN, я их путаю) отдаёт, кроме всего прочего, информацию о абонентском терминале - это не баг а фича. Передаются, например, параметры экрана терминала и даже его модель, чтобы сервер мог выдать подходящую страничку. Вообще может отдаваться почти абсолютна вся информация, от местоположения терминала, до его MSISDN - всё зависит от настройки. И абонент этому помешать не может ровно никак, никакие маскировки браузеров и прочее тут не помогут.
Вот и получается, что жежешка подсовывает мне какую-то недоделанную мобильную версию, считая, что я читаю её на мобильнике. То, что мобильники уже давно имеют параметры круче, чем мой первый компьютер когда-то, не учитывается.
Энивей, косяк жеже. Остальные сайты либо вполне корректно обрабатывают информацию о терминале, либо смотрят на версию браузера, либо предлагают выбрать мобильную/десктопную версию вручную.
Вот такие дела.
Если выходить в ЖЖ не через телефон (т.е. через спутник, 3G модем, проводного/беспроводного провайдера или даже напрямую врубая шнурок в магистральный маршрутизатор) - оно работает нормально. Если выходить через телефон (т.е. с телефона напрямую, или любым из возможных способов используя его в качестве точки доступа) - в жежешке не грузятся CSS и JS. Отчего выглядит жежешка... ну вы и сами можете посмотреть, отключив в браузере то и другое самостоятельно.
Единственный вариант объяснения, который мне приходит в голову такой: GGSN (или SGSN, я их путаю) отдаёт, кроме всего прочего, информацию о абонентском терминале - это не баг а фича. Передаются, например, параметры экрана терминала и даже его модель, чтобы сервер мог выдать подходящую страничку. Вообще может отдаваться почти абсолютна вся информация, от местоположения терминала, до его MSISDN - всё зависит от настройки. И абонент этому помешать не может ровно никак, никакие маскировки браузеров и прочее тут не помогут.
Вот и получается, что жежешка подсовывает мне какую-то недоделанную мобильную версию, считая, что я читаю её на мобильнике. То, что мобильники уже давно имеют параметры круче, чем мой первый компьютер когда-то, не учитывается.
Энивей, косяк жеже. Остальные сайты либо вполне корректно обрабатывают информацию о терминале, либо смотрят на версию браузера, либо предлагают выбрать мобильную/десктопную версию вручную.
Вот такие дела.
no subject
Date: 2011-12-30 02:23 pm (UTC)1. опсос получает от клиента get-запрос на сервер
2. опсос делает серверу _свой_ get-запрос вида "умеешь ли по-мобильному"
3. опсос получает от сервера ответ
4. если получен ответ "да, умею по мобильному" - к запросу клиента пририсовывается "...и всё это - для мобилы!", если получен ответ "чё??" - запрос клиента передаётся as is, без изменений.
5. ответ сервера отдаётся клиенту
При этом:
- веб-сервер видит оба запроса (от опсоса и от клиента)
- если на первый запрос (опсоса) сервер ответил "чё??" - второй запрос идёт as is
- клиент видит ответ только на свой запрос, и если он не модифицирован - то и ответ, очевидно, не модифицирован.
А значит:
- если первый запрос есть, сервер обязан его увидеть (и передать тому "шкрипту", который генерирует странички - это "шкриптовое" дело, генерировать разные страницы для разных клиентов/запросов, сервер сам может отдавать только статику, а это неинтересно). Модифицировав dump - мы сохраним этот запрос
- если на первый запрос нет явного ответа "да, я умею по-мобильному" - во втором запросе, ответ на который мы видим, строки "...мне для мобилы" не будет, соответственно при тесте мы его и не увидим.
Правда, есть нюанс: первый запрос может быть не на dump.php, а на какой-то другой файл/скрипт (допустим, на "корень", то есть index.html). Тогда запрос будет, но dump.php его не увидит. Но тогда можно попробовать модифицировать index.html...
no subject
Date: 2011-12-30 02:44 pm (UTC)no subject
Date: 2011-12-30 08:15 pm (UTC)Но! Это ничего не значит - опсос может запрашивать index.* (который я трогать не хочу), или какой-то специально выделенный для этого адрес.
Если есть машина с "белым" ip - на неё можно быстренько водрузить простенькую прокси в режиме форвардинга портов, перенаправить её на www.livejournal.com, в hosts у себя прописать адрес прокси как адрес для www.livejournal.com, и посмотреть, что будет в логах прокси. "Белый" ip у меня есть только на рабочей машине (и то не уверен, что там всё не зафайрволлено снизу доверху), а на работе я окажусь уже только после каникул, так что проверю не скоро.
Но тема интересная, если и правда выяснится, что опсосы меняют заголовки проходящего мимо них http - это будет очень, эээ, любопытно :-)
no subject
Date: 2011-12-30 09:19 pm (UTC)Попробуй загрузить скрипт с телефона, либо я могу, но уже когда приду в себя.
no subject
Date: 2011-12-30 09:45 pm (UTC)Вышел браузером телефона (опера мини). Один запрос, из мобильностей - user-agent=опера_мини, и две строки вида x-operamini-xxxx=yyyy.
В-общем, опять ой. Нужен решающий эксперимент с белым ip и портмаппером :-)