Читатель TJ из Украины разбирается в нюансах.
Тихо, без лишнего шума, в клиент для Android встроили прокси. Актуально для пользователей Украины. Я хотел бы рассмотреть как он работает, так как уже более двух лет занимаюсь reverse engineering и сам живу на Украине.
Зачем это нужно?
На территории Украины был подписан указ и согласно ему провайдеры были вынуждены заблокировать доступ к «ВКонтакте». Основные и крупные провайдеры блокировку уже совершили. Но похоже сайт не захотел с этим смириться и в версии 4.10.0 встроил прокси. Рассмотрим вкратце, как это работает с технической стороны.
Техническая информация
При запуске приложения, идет обращение к API методу ВКонтакте с названием utils.getProxiesPreferences, обращение идет с входящими параметрами: id пользователя и массив logInfo. В массив logInfo входят параметры:
country
locale_country
locale_display_country
locale_display_language
locale_language
location_latitude
location_longitude
address_country_code
address_country_name.
Очевидно, что на их основании метод решает, что вернуть. И кстати из этих данных можно сделать вывод, что функция таки для Украины и прочих стран которые решаться на покушение. Метод API возвращает три значения: 1, 2, 3 с ключом "type". В приложении этим значениям дано имя: TYPE_NO_PROXY, TYPE_USE_PROXY, TYPE_NO_PROXY_WITH_MESSAGE соответственно. Первая константа означает, что прокси использовать не нужно, вторая — нужно. Третья — до конца не понятно, выводится сообщение и с забавным emoji. Вероятно чтобы сообщить, что с прокси что-то не так.
Нюансы работы
Выгрузка файлов, а точнее «аттачей» не работает. Так же могут наблюдаться проблемы с автоматическим включением прокси.
Так же важно отметить, что если отключить настройку отсылки местоположения, которая якобы для новостей, пункт с настройкой прокси пропадет.
Самая главная проблема
Если Вы только установили и запустили приложение в Украине и если провайдер включил блокировку — авторизироваться без VPN Вы не сможете. Хотя может быть, это сделано ради безопасности, дабы логин и пароль не проходили через прокси или просто недоработка. Но все равно очень странно.
И повторно стоит отметить, что автоматическое включение работает очень не стабильно. Пункт то пропадает, то появляется и настройка работает не с первого раза.
Итог
Все же функция довольно сырая. Вероятно её только тестируют, однако простым пользователям в Украине её уже начинают включать. Лично я предпочитаю VPN.
ой пиздишь
может редакция поправила?
Да, редакция поправила. Изначально писал "в".
Комментарий недоступен
Нож в спину.
на спину
Зачем в статье на тж тонна никак не объясненных технических деталей?
Показать превосходство над тупыми смертными, не знающими слов API, массив и входящие параметры.
Даже в мыслях подобного не было. Для меня
это обыденные слова.
Техническая сторона на то и техническая, чтобы объяснить как есть. Любое непонятное слово гуглится.
Какую ценность несёт упоминание имени метода API, имен переменных в loginfo, имен файлов, имен ключей?
Это пруф на то, что точно используется местоположение и точно определяет ВКонтакте включать прокси или нет. А если еще и знать элементарный английский (или использовать Google Translate) можно точно понять какие данные необходимы. Вопрос из разряда: какая ценность указания номинала на купюре.
Пруфы можно было не указывать/разместить в другом месте. А результаты анализа пересказать, вот мой беглый take on второй параграф:
"При логине приложение анализирует данные о географических координатах, языке, стране и т.д. и на основании этих данных принимает решение о том, нужно ли использовать прокси. Это говорит о том, что функция прокси введена скорее всего в ответ на блокировки в Украине. В некоторых случаях приложение возвращает печальную эмодзи, причем название соответствующего ключа свидетельствует о том, что, скорее всего, это происходит при неудачном подключении к прокси.
Подробная версия анализа с техническими деталями размещена вот тут - geektimes.ru/djjsjsjs"
Мб я ошибся по сути, но я и не претендую на то, что я все понял.
Читается проще, ненужной хуйни меньше, кому интересно, тот прочитает по ссылке. Не понимаю, зачем усложнять материал, если это усложнение не несёт никакого дополнительного смысла. Это как писать вместо 1+1 2^0 + 2^0.
Комментарий недоступен
Эдуард, статья хорошая, да и мы здесь в статью о Яндексе не будем вбивать поисковые запросы. Но, всё же, раз пишете не на Хабре, не поленитесь чуток загуглить за нас. И то, что Вы расписали в комментариях с RC, как раз прекрасно бы вписалось в статью. И не примите шутки за претензию. Так, пожелание.
Комментарий недоступен
Битый небитого
скрин вк из 2007?
Встроенный прокси-сервер возвращает стену )
Для Украины спорная полезность, еще и с такими настройками. Кто хотел остаться в сети, поставил себе впн-клиенты, благо в маркете полно их. Новых пользователей с таким геморром все равно не получишь. Да и старым нафиг не впало - сын, например, снес приложение ВК - все равно там почти никого нет.
На Украине, в Белоруссии, Элон и другие зашквары редакции.
Странно, у меня получилось включить эту настройку с помощью блокировки vk.com/ping.txt и настройкой редиректа с google.com на google.com.ua
Кстати да, тоже как вариант. Но проверка на редирект делается после запроса к API. Если API прислал TYPE_NO_PROXY, проверка на редирект делаться не должна. Очень странно.
Ну а как API ответит на запрос если он под блокировкой. И насколько я понял клиент получает IP прокси сервера через сервисы Google. Что бы всегда иметь способ доставки.
Да, используется Firebase.
А сорри, понял, да не логично получается, что после ответа он проверяет дальше.
Смешно что ВК что-то добавляет в приложение когда пригорит. Сама сеть и приложения находятся на уровне 2011 года, нихуя не поменялось, все такое же хуевое по UX
запустили приложение в Украине
Так как правильно то, "на" или "в"? Путаюсь каждый раз.
И то и то применимо в примерно равной степени.