Как Google Ads контент прячут
Для очередной презентации пришлось сделать очередной мем на meme-arsenal.com (на правах антирекламы)
Захожу, делаю, всё как обычно. Но вот на странице с получившейся картинкой она появляется буквально на долю секунды и пропадает! Может что-то по части JS отвалилось или что-то не смогло скачаться?
Иду в DevTools и вижу единственный лог-зацепку "switchToRussian".
![](images/06f25082-0271-49df-8e64-cc887b087446.png)
Вряд ли разработчики делают локализацию на стороне клиента и для каждого языка вставляют свой лог, решаю покопать глубже.
![](images/ecf3837b-82b0-42e3-a07f-c4a6c0bc629a.png)
Функция, в которой случайно оставили этот лог, просто проставляет флажок isRussian и втыкает Яндекс Метрику. Используется этот проставленный флажок только в одном месте:
![](images/d73551b4-a1d3-4ac9-91ac-04a86ca7b7ab.png)
Это транспайленный код Angular-приложения, который сложно понять, если раньше подобное не приходилось дебажить. На самом деле этот кусок кода получается из директивы ngIf, которая скрывает или показывает код по заданному условию. Условием показа в данном случае как раз является отсутствие флажка isRussian. Понятно, в России запретили мемы.
Почему-то я решил копнуть чуть поглубже и посмотреть, как они определяют то, что я из России. Способ довольно интересный и я даже проспойлерил его в заголовке. Сначала они просто смотрят на то, доступно ли взаимодействие с Google Ads.
![](images/01ae2f9d-485d-4aef-a54b-bdbd8b0a533f.png)
У меня оно было недоступно потому что Ad Block просто блокировал гугловые скрипты. Отключил его, но мем не появился. Копаю глубже, в функцию checkGoogle
![](images/791af470-4e68-4953-b1bb-324815b4493a.png)
И вот оно, "чудо враждебной техники"! Функция, которая 12 раз проверит, занялось ли место под гугловую рекламу, прогрузилась ли она.
На рекламных элементах гугла при полной загрузке проставляется атрибут data-ad-status="filled", а у меня там будет unfilled — в России реклама не прогрузится никогда.
Получается, что контент скрывали не столько от русских, сколько от людей, которым они не показывают рекламу. Как говорится, не доставайся же ты никому.
А вместо заключения хочу показать, что несмотря на такой хитрый способ, картинка всё равно создается и даже отдается в браузер: найти её можно открыв вкладку Network в Devtools (их можно открыть нажатием F12) и отфильтровав запросы по картинкам
![](images/e826a0ce-4475-4421-a112-f1d4e9df1233.png)
Кстати, никаких логических объяснений именно двенадцати проверок я не нашел, скорее всего, ребята получили это число экспериментальным путём.