Скачать (переход вниз к списку версий).

Благодарить деньгами (переход вниз к форме материальной благодарности). Господа сайтовладельцы, так же в благодарность буду рад принять ссылки с Ваших ресурсов (на любую страницу).

Многие издатели не любят, что на их сайтах крутится говнореклама:

  • «Сегодня Поxоpоны Димы Билана»,
  • «Y МYЖА СТАЛЬНОЙ ХРЕH ПO 4 ЧACA»,
  • «Восстановить Суставы Легко Даже Если Вам Стукнуло 45 лет».

Мало того, что это ужасно выглядит, так ещё и зачастую ведёт совершенно не туда, куда заявлено в таком объявление, а это обман перешедшего посетителя. А порой ведёт на сайты-одностраничники, которые пытаются втюхать людям какое-то фуфло под видом чудодейственного средства для каменного стояка, избавления от гипертонии и прочий развод.

Средствами AdSense заблокировать этот шлак невозможно (поправьте, если ошибаюсь), сохранив показ текстовых объявлений.

Как же очистить свои сайты от некачественной рекламы?

Есть ПО на php, которое самостоятельно ищет объявления от говнорекламистов-мошенников, блокирует их и выводит отчёт о проделанной работе (в случае ошибочных блокировок или недоблокировок программу легко донастроить, а объявления заблокировать/разблокировать буквально одним нажатием).

Почему на php? У большинства сайтовладельцев есть возможность выделить отдельную папочку или поддомен для размещения маленькой программки на php. Исходный код открыт, чтобы Вы могли убедиться, что ПО не крадёт Ваш пароль и прочие личные данные. Ставится в любую папку, на любой сайт, просто распаковываете и обращаетесь по адресу где оно лежит. При необходимости изменить пользователя, которому принадлежат файлы. По умолчанию — root. Если оно почует, что на нужные каталоги нет прав, то непременно откажется работать, сообщив причину.

Краткое описание: настраиваем галки в соответствии с Вашими пожеланиями, кнопкой снизу сохраняем, список стоп-слов сохраняется отдельной кнопкой.

Процесс фильтрации запускается тремя способами.

  1. Вручную;
  2. Автоматически через заданный интервал в настройках на основе JavaScript (окно с программой должно быть открыто в Вашем Chrome или что Вам по душе). Можно поиграться здесь.
  3. Через планировщика, например cron.

Каждый запуск — это единичный цикл поиска.

Системные требования (как правило, это всё есть, но не всегда)

  • php5.3 php5.4 — php5.6, php7 (php7 — не катит, ибо много разногласий. В будущем поддержка запланирована, но пока без конкретных дат).
  • cURL.
  • Расширение DOM. Немного про установку DOM.
  • Пакет для работы с многобайтовыми кодировками mbstring.
  • Включенная поддержка json.
  • Для временной папки (по умолчанию tempdata) и папки настроек (по умолчанию settings) должны быть права на запись.
  • Сервер не должен передавать заголовок «x-frame-options: DENY» (иначе придётся запускать авторизацию и результаты поиска в новой вкладке). Если всё же не получается убрать этот заголовок, то ставьте галку «Frames do not work».
  • Отсутствующий или отключенный блокировщик рекламы (отчёт полностью состоит из рекламных объявлений, активный блокировщик их вырежет и в отчётах Вы увидите ничего).
  • Не Yandex Browser. Неоднократно поступали жалобы на неправильную работы именно в нём. «Великий» рупоисковик и здесь решил отличиться. Если его используете и в нём что-то идёт не так, то сначала попробуйте в чём-нибудь другом (FireFox, Chrome, Edge или ещё что), даже если раньше работало.

Обрабатывает объявления приложение довольно долго (10 объявлений секунд за 15, включая все действия связанные с этим: подключения, запросы, поиск текста и прочее), при этом заметного расхода ресурсов не увидел, ни по процессору ни по памяти. Смотрел через top во время работы. Поэтому приложение пытается переопределить максимальное время работы до 10 минут и немного расширить память (на всякий случай).

Описание (инструкция по применению)

Установка

  1. Скачиваем архив и загружаем к себе на сайт.
  2. Распаковываем. Например, в папку bad_ads_blocker (рекомендую выбрать другое имя, например ad_cleaner345, что-то нестандартное).
  3. Меняем пользователя файлов и папок на того, из под которого запускается Ваш web-сервер (apache, например). Данный шаг не для всех обязателен.
  4. Переходим по адресу mysite.com/bad_ads_blocker/ или пропишите ту папку как Вы её назвали (не надо конкретных php вводить).
  5. Если программа ругается на отсутствие прав на папки (Check blocker/settings/ directory write permissions), то заходим на хостинг/сервер и устанавливаем права на папки settings и tempdata, например, 775.

Можно запускать под Windows на xampp с php 7. Вероятно, и на php 5 под xampp будет работать (не проверял).
На Windows x64 может неправильно работать Curl.

Так же можно использовать Open Server.

Есть готовая виртуальная машина, сделанная пользователем SHipiloff69.

Подготовка

  1. Проставляем необходимые галочки, вводим числа (описание галочек и циферок чуть ниже).
  2. Внизу нажимаем «Debug and other…», там нужно ввести свою почту (логин от AdSense) заполняем поле «AdSense Pub Id (only for AdSense)»/«AdX Pub Id (only for AdX)». Это строка вида «pub-6606269287997703».
  3. Обязательно сохраняем — жмём кнопку «Update settings» внизу слева (под настройками).
  4. Сверху справа нажимаем «Google Auth», чтобы выехало поле для ввода пароля и кнопка запуска процесса авторизации ввода данных cookie. Спрятано так как нужно редко, чтоб не мешалось и лишний раз не нажалось случайно.
  5. Вводим пароль и нажимаем кнопку «Login to Google» Вводим данные cookie и сохраняем. Всё, авторизация сделана. Если в окне снизу ничего не появляется, то проверьте заголовки своего сервера: https://bertal.ru. Если там есть «X-Frame-Options: DENY», значит либо настраиваем чтобы не было Deny, либо включаем галку «Frames do not work».

Авторизация

Стандартный вариант с вводом пароля уже практически у всех не работает. Сразу переходите к запасному варианту.

Если почта введена неправильно, то система об этом сообщит.

Если пароль введён неправильно, то система об этом сообщит.

Если включена двухуровневая, то ПО запросит код по SMS и попросит Вас ввести данное сообщение. Если нет, то просто авторизуется.

Если Ваш сервер или сервер, где сайт, куда Вы ПО поставили территориально находятся рядом с Вами, то авторизация проходит без лишних хлопот.

Вполне возможен вариант, что ПО будет работать из другого города (например сервер хостера в Иркутске) или другой страны, тогда Google начнёт паниковать и пришлёт письмо с предупреждением. При этом войти не даст. Нужно это письмо открыть и подтвердить ему, что это мы пытались войти, после можно будет снова попробовать. И тогда Google пришлёт SMS с кодом подтверждения (даже если двухэтапная авторизация выключена). Вместо получения сообщения возможен голосовой роботизированный звонок, который продиктует код. Если при попытке авторизации звонит какой-то неизвестный номер и не из Вашей страны, то это Google хочет Вам код сказать.

Если в последнем случае телефон не привязан, то соответственно никакого SMS не придёт, а просто Google попросит набрать буквы с картинки (до версии 3.0 включительно не поддерживается обработка подобных запросов).

Когда ПО авторизуется можно начинать процесс фильтрации.

Авторизация (запасной вариант)

Этот метод подсказали на форуме.

Устанавливаем какое-нибудь расширение для экспорта cookie-файлов. Чем бы Вы ни пользовались, ищите расширений по словам export cookies. Смотрите, чтобы экспортируемый формат был совместим с «Netscape standard» или cURL. Или, бывает явно указывают, что стандарт совместим с Curl. Это всё нам подходит. Чтоб все cookie не тащить можно создать нового пользователя Chrome, там войти в свою учётную запись Google и вытащить cookie оттуда.

Теперь под полем для ввода пароля есть поле для ввода cookie и кнопка для сохранения. Это чтобы было удобнее в сравнении с тем, что было ранее (ниже перечёркнуто).

Кроме этого необходимо вручную указать pub-id в соответствующем поле по умолчанию скрытом под «Debug, login and other…»:
AdSense Pub Id (only for AdSense).

Включение и выключение JavaScript у Вас в Chrome, Firefox и прочих совершенно никак не сказывается на процессе авторизации. Авторизация проходит не на Вашем компьютере, а со стороны сервера, где ПО установлено.

Удобное расширение сохранения cookies для Google Chrome: cookies.txt. Ставите его, потом переходите на страницу с AdSense, нажимаете на значок расширения и оно в нужном формате выдаёт все нужные cookie, остаётся лишь скопировать их и начать пользоваться.

Положить их надо в папку tempdata под именем cookie.txt, там же создать файл pub_id.txt, в который сохранить Ваш идентификатор издателя в формате: «pub-1908597777777777» — pub- и 16 цифр. Лично проверял — работает.

Всё! На этом авторизация закончена! Более не надо нажимать кнопку «Login to Google»,  уже можно приступать к поиску и досмотру объявлений. При нажатии кнопки «Login to Google» Ваши труды (два файла cookie.txt и pub_id.txt) удаляются, чтобы «с чистого компа» был вход.

Запуск через планировщика

Для проверки планировщиком разных типов заданий рекомендую делать так:

# 90 непроверенных медийных
*/7 * * * * username /usr/bin/php /var/yoursitepath/bad_ads_blocker/cron1.php

# 200 (4 страницы по 50) проверенных медийных
*/12 * * * * username /usr/bin/php /var/yoursitepath/bad_ads_blocker/cron2.php

# 200 (4 страницы по 50) проверенных текстовых
*/13 * * * * username /usr/bin/php /var/yoursitepath/bad_ads_blocker/cron3.php

# по списку слов для поиска (Searchwords называется). Остальные фильтры выключены. Всё что найдётся по этим словам автоматически блокируется.
*/14 * * * * username /usr/bin/php /var/yoursitepath/bad_ads_blocker/cron4.php

# 100 графических непроверенных (фактически проверяется только адрес, оптического распознавания нет)
*/15 * * * * username /usr/bin/php /var/yoursitepath/bad_ads_blocker/cron5.php

# 50 объявлений по каждому слову из списка «Searchwords»
*/4 * * * * username /usr/bin/php /var/yoursitepath/bad_ads_blocker/cron6.php

Настройки меняются через панель управления по ссылкам в самом низу внутри «Debug, login and other…»:
Cron settings: 1 2 3 4 5 6 7.
Достаточно сохранить настройки — файлы сами создадутся.

По-умолчанию есть только файлы cron*.php c первого по шестой.
При сохранении 7-го и любого последующего варианта настроек соответствующий файл появится и его так же можно указать в планировщике.

Устаревшее:

Можно просто указать имя файла поисковика «search_bad_ads.php» (естественно с полным путём) и при каждом запуске он будет искать в соответствии с последними сохранёнными настройками.

Начиная с версии 2.3 можно переопределять настройки при запуске по cron.

Простой вариант: «search_bad_ads.php 1 50 5». Три необязательных параметра.
Первый отвечает за включение уже просмотренных, аналог галки «Check reviewed ads». Можно выставить в ноль, тогда мы принудительно выключим на данный запуск проверку уже просмотренных. Кстати, при переопределении проверки уже просмотренных этим методом отключается сохранение проверенных объявлений, а то за сутки их тысячи одинаковых насохраняется.
Второй — это количество объявлений на страницу, аналог «Ads per page».
Третий — это количество страниц, аналог «Number of pages».

Все параметры необязательные, но их последовательность нарушать нельзя. ПО в любом случае будет ожидать в первом вкл/выкл просмотренных, во втором и третьем, как выше написано.

Расширенный вариант:
'{"num_of_pages":"5","num_of_ads_per_page":"50","lat2cyr":"checked","reviewed":"checked"}'

Обязательно заключить в одинарные кавычки!
Можно указать единственный параметр: json-строку с настройками, которую можно получить, нажав кнопку «Show json-string», скрытую под «Debug and other…». Сначала все настройки берутся из файла, а потом всё что есть в строке — переопределяется (аналогично простановке галочек, если их не было, однако, всё что включено не будет выключено). Так что если Вам нужно переопределить лишь 3 параметра, то не нужно указывать все.

Есть вариант с переопределением всех параметров:

'!!!{"num_of_pages":"5","num_of_ads_per_page":"50","lat2cyr":"checked","reviewed":"checked"}'

В таком случае нужно указывать все значащие параметры.

Но, переопределение в cron работать не будет, если register_argc_argv установлен в disabled.

 

Периодичность запуска

Если у Вас все текстовые проверены, то для поиска непроверенных объявлений имеет смысл запускать в районе смены часов (например с 53 минут до 6 минут раз 5), так как в ЦПО (центр просмотра объявлений в панели издателя Google AdSense) непроверенные появляются именно в этот временной промежуток.

Описание настроек

Number of cycles — количество запусков с последовательной проверкой объявлений в соответствии с настройками ниже. То есть если ниже стоит 10 страниц по 10 объявлений, здесь мы тоже 10 поставим, то всего будет проверено 1000 объявлений. Через cron пока не работает. Эта функция актуальна для проверки уже просмотренных объявлений. Особенно для тех у кого нет возможности увеличить время исполнения.

Set name — появляется только при настройках для планировщика. Просто поле для Вашего удобства, на работу никак не влияет.

Number of pages — количество страниц, которые мы будем листать за каждый цикл поиска. Это аналог страниц в ЦПО.

Ads per page — количество объявлений на вышеуказанные страницы (в ЦПО зависит от размера экрана).

New ads in last — объявления за заданное количество последних дней. Работает с любыми значениями, для параноиков только 1, 3, 7, которые предлагает Google в ЦПО.

Ad types — выбираем какие типы будем просматривать (текстовые, медийные и графические). В графических проверяется только адрес, а список слов используется верхний (который Only for text and image ads).

Check by stopwords list — искать вхождение в текст и заголовки объявления любого слова из того списка в середине страницы.

Check by bad ad text list — искать вхождение в текст и заголовки объявления любого словосочетания из списка по ссылке (убран из-за отсутствия необходимости).

Check by Searchwords — использовать фильтр в ЦПО для поиска всех объявлений (в пределах заданных в Number of pages и Ads per page ограничений) по соответствующему списку (List of search words). При этом другие фильтры выключаются!!! Будьте внимательны!

Use Whitelist — использовать список хороших объявления (алгоритм чуть ниже).

Replace lat2cyr — для поиска мешанины кириллицы и латиницы по списку ключевых слов. Перед проверкой латинские символы и прочая хрень, похожая на русские буквы будет заменена на русские.

Check for redirects — проверять (с целью блокировки) наличие переадресации на домены отличные от указанного в целевом URL объявления. Так можно отсеивать шлак даже без списка слов, правда, далеко не весь. Данная функция может вызывать зависание процессов. Если у Вас эта проверка включена и процессы блокировщика зависают, то попробуйте выключить. Почему так происходит сообщить не могу. У самого работает исправно.

Check reviewed ads — аналог галки в ЦПО. Если стоит, то будем просматривать все, если нет, то только непросмотренные.

Block AdWords account — когда находим очередной шедевр мошенников-говнорекламистов, то можно заблокировать объявление вместе с учётной записью AdWords.

Block URL — автоблокировка адреса объявления, например, «cheater-site.com/free/video/watch.html».

Block domain — автоблокировка только домена объявления, например, «cheater-site.com».

Check «blogspot» — проверка наличия в целевом URL «blogspot.com». Какое-то время они активно использовали этот адрес.

Check disguised — проверка наличия замаскированных латинских символов под русские, чтобы находить подобное: «Maлaхoв yшeл co cкaндaлoм — Стaлa извeстнa пpичинa». Можете скопировать и посмотреть что это на самом деле здесь. Включается отдельно для текстовых и медийных объявлений.

Check too many spaces — для обнаружения «В И Д Е О С М О Т Р Е Т Ь».

Check target URL — проверка на наличие «плохих» слов в целевом URL (не путать с отображаемым). Отображаемый — то как мы видим ссылку, целевой — конечный адрес страницы. Так сделано в AdWords, так же сделано и здесь.

Check adv. name — проверять имя рекламодателя, если оно задано.

Check only predicted blocks — аналог галки в ЦПО. Прогнозируемая блокировка.

Check only «Prioritized for review» — проверять те, что Google считает нужно проверить в первую очередь. в ЦПО зовётся «Приоритетная проверка».

Do not block advs with name — не блокировать объявление, если оно от рекламодателя, у которого указано имя, а не только «adv-5817926002300350». Это, порой, полезно для защиты от ложных срабатываний, так как большая часть шлака имеет рекламодателей только в виде adv-4325243…

Mark reviewed as reviewed — помечать просмотренные просмотренными. Есть возможность грузить непроверенные объявления и не отмечать их как просмотренные. Обычно требуется для отладки списка слов для поиска. Если не отмечена, и не отмечена галка смотреть проверенные (Check reviewed), то будем каждый раз получать один и тот же список объявлений, что на первых местах.

Get ad stats — всем, наверное, интересно, сколько показов успел набрать высер якобы про Якубовича или якобы похороны Билана. Если отметить, то собирает статистику по всем заблокированным объявлениям, суммирует и выводит итоговое число в нижней строке объявления.

Block from «BlockedAds» — автоматически  блокировать домены собранные на сайте BlockedAds.ru. Не чаще чем каждые 20 минут с этого сайта будет подгружаться список и в случае если он будет отличен от загруженного в прошлый раз, то всё что есть в списке будет заблокировано (как и в остальных случаях в списке заблокированных доменов (Blocked advertiser URLs) будут указаны дата и время блокировки). Достаточно включить эту опцию в любой одной конфигурации для cron, которая запускается хотя бы раз в час. Если повключать более чем в одном месте, то это ничего не изменит.

Report ad blocked by — автоматически отправлять жалобу на объявления заблокированные по выбранным фильтрам ().

Следующие пункты спрятаны под кнопкой «Debug and other…».

Show json-string — кнопка, которая выводит json-строку для переопределения параметров при запуске через cron. Выводимые параметры зависят от текущих настроек, которые на экране.

Enable logs — включает сохранение ответов серверов Google. Нужно для поиска ошибок и отладки. Сохраняется в папке tempdata/logs. Если всё хорошо, то не включайте, а то диск заполните бесполезными данными.

Disable utf8_decode — отключает преобразование выводимых в отчёт объявлений. Если все объявления выводятся в виде пустых или каракулей (кракозябр), установите/снимите эту галку. Это зависит от расширения DOM, которое работает у кого как: у кого-то выдаёт русский текст в utf-8, а у кого-то в iso-какой-то кодировке. У автора на php5.6 выводится правильно без этой галки.

Show block/unblock buttons — в окошке с каждым объявлением есть 4 кнопочки: для блокировки и разблокировки самого объявления и аккаунта AdWords. Если галка не отмечена, то в заблокированных отображаются только кнопки разблокировки, а в чистых только кнопки блокировки.

Don’t save clear ads — буквально. Если у нас много объявлений, фильтры настроены хорошо и не хочется видеть лишний раз нормальные объявления, то ставим. И правая колонка «Clear» не будет пополняться.

Don’t save any ads — буквально. Когда всё идеально настроено или совсем некогда просматривать отчёты и заниматься их очисткой.

Frames do not work — отключение вывода информации в тэги iframe, переключение в новые вкладки (не распространяется на блокировку/разблокировку объявлений) видеть ответ Вы не будете, но ошибок с этим ещё не было.

Display ad URL — Показывать в отчётах текстом полный адрес, куда ведёт объявление.

Use ARC (new, old, AdX)

AdX Pub Id (only for AdX)

AdSense Pub Id (only for AdX) — появляется в случае выбора «New» или «Old»  в предыдущем пункте. Надо заполнить, в случае авторизации через сохранение cookie. Если вдруг будет работать авторизация через ввод пароля, то это заполнится само.

Unblock accs blocked

Unblock accs blocked (второе описание) — при поиске объявлений будет происходить автоматическая разблокировка AdWords аккаунтов, которые были заблокированы заданное количество дней назад. Чтобы не держать сотни заблокированных в своём списке AdSense, ведь они одноразовые и довольно быстро блокируются, следовательно никогда повторно использованы не будут (на практике зачастую не работает как надо, надоело разбираться и переписывать, всё равно эта штука у меня никогда не работала идеально).

Login (e-mail) — почта целиком, на которую у Вас AdSense зарегистрирован. В

Cron settings — ссылки на наборы настроек для запуска по планировщику.

Особенно важные галки при включении отмечаются двумя красными стрелками. На всякий случай.

Run every — это для автоматического запуска через JavaScript. В минутах. Там даже обратный отсчёт появляется. Можно поиграться здесь. Внешний вид немного устарел.

Всё описанное выше сохраняется нажатием кнопки «Update settings»!!!
Если нажать что-то другое то изменения не сохранятся; ajax и прочие подобные чудеса не используются.

List of stop wordsbad ad text list — списки для отсева. Если найдётся вхождение хоть одной строчки из этих списков, то объявление блокируется. С указанием слова по которому оно было заблокировано. Удобно для отладки, если слов очень много. Для текстовых и медийных объявлений сделаны разные списки, так как есть ряд слов, необходимых для блокировки текстового шлака, который приводит к блокировкам хороших медийных.

Начиная с версии 3.4 можно искать точное соответствие слову, а не просто вхождение. Для этого нужно добавить три восклицательных знака перед словом: «!!!Бетонный». Итак, по поисковому слову «член» будут заблокированы объявления «Ярмарка членистоногих…» и «Чтобы член стоял всю ночь», а если указать так: «!!!член», то «Ярмарка членистоногих…» заблокирована не будет, а «Чтобы член стоял всю ночь» и подобные не останутся в показываемых.

Начиная с версии 4.14 можно задавать условие для поиска только в домене объявления, добавляя в начале «domain:»,  например: «domain:.github.». При поиске в домене «www.» не учитывается. Так же есть возможность указать метку начала или конца строки. Соответственно: ^ и $. Например: «domain:.cf$» или «domain:^cheate».

List of search words — список по которому будут вытаскиваться объявления (аналогично вводу каждого слова из списка в текстовое поле для показа объявлений, содержащих только это слово).

Whitelist — список слов или фраз, которые встречаются только в хороших объявлениях. Если галка включена, то сначала идёт проверка по этому списку, и, если находится соответствие, то объявление считается хорошим, дальше не проверяется и в отчёт не вносится. Поиск идёт по каждой строке отдельно. Он ищет вхождение строки в текст объявления. Так же проверяет название (если оно есть) и аккаунт рекламодателя (строка вида adv-0000000000000000) и целевой URL. При добавлении объявления в белый список добавляются три строки: 2 заголовка и текст.

Список сохраняется соответствующей кнопкой под ним. Ко всем спискам в окне правки добавляется несколько пустых строк сверху и снизу. Это сделано для удобства добавления новых данных на чистые строки. В файлах этих пустых строк нет (при сохранении списка все пустые строки удаляются).

Google auth — авторизация в Google.

Через ввод пароля скорее всего не получится, ибо Google теперь хочет имитацию обозревателя с включенным JavaScript, а это сложно и мне лень.

Заполните свой pub-id и сохраните cookie от Google. Подробнее выше: Авторизация (запасной вариант).

Чтобы выехало поле для ввода пароля и кнопка запуска процесса авторизации жмём. E-mail должен быть указан и сохранён. Вводим пароль и запускаем. Ждём несколько секунд. Если всё хорошо, то либо войдём, либо получим SMS с кодом подтверждения. После входа можно приступать к поиску объявлений.

Результаты поиска выводятся в окошке под кнопкой «Start Searching», результаты удаления объявлений там же. А удаляются объявления значком корзинки. Справа от заголовков — удалить все в списке. На самом объявлении — удалить только это объявление.

Все настройки хранятся в файле в папке программы на сервере (в json-строке). Cookies используются только для входа в панель управления, если включена парольная защита. Чтоб при запуске через cron проблем не возникало.

Get blocked ads (in new tab) — это инструмент вытягивания строк из текущего списка заблокированных объявлений. Берёт настройки из того же источника, что и основной инструмент поиска. Если указано в настройках 2 страницы по 40 объявлений, то он соберёт первые 80 объявлений, оставит только уникальные строки. На слова не бъёт, оставляет строками. Разбивает строку текста объявления пополам если она длинная, выводит полученный список на экран и сохраняет в файл. В 3.какой-то версии был выкинут за ненадобностью, так как фактически он был нужен лишь для первоначального формирования списка слов.

Access here password — боитесь, переживаете? Может волнуетесь? Поставьте надёжный пароль и не переживайте — никто не доберётся до инструмента поиска и блокировки. Никаких имя-пароль. Просто пароль. Надёжно и просто. Если пароль слишком надёжный и второй раз его ввести не получилось, то всегда можно зайти на сервер, удалить во временной папке файл pass и задать чуть менее надёжный пароль.

Advertisers account list — это ссылка на страницу, где Вы можете посмотреть список всех заблокированных у Вас AdWords аккаунтов. Вытягивается прямо из AdSense, то есть тот же список Вы увидите если зайдёте в ЦПО во вкладку «Настройки» (немного нелогично названо, ведь там только список заблокированных аккаунтов). Начиная с версии 3.4 в этом списке можно видеть какие объявления привели к блокировке аккаунта. Если такой список имеется, то название аккаунта становится серым, справа напротив названия аккаунта будет часть первой строки, а при наведении всплывает подсказка с заголовками объявлений. Если использовать новый ЦПО, то мы можем видеть только какие аккаунты за что заблокированы только в новом ЦПО, так как одни и те же аккаунты в новом и старом ЦПО имеют для нас разные коды, например, один и тот же рекламодатель в старом ЦПО называется adv-5061300287672174, а в новом adv-5195842385062096. То есть если у Вас в данный момент используется старый ЦПО, то в списке заблокированных рекламодателей мы можем видеть за что были заблокированы аккаунты только при использовании старого ЦПО. Если же включена галка использования нового ЦПО, то мы можем увидеть за что были заблокированы рекламодатели при использовании нового ЦПО. Другими словами, вывод информации в списке рекламодателей зависит от того какой в данный момент используется ЦПО (пункт «Use ARC ( »). Есть возможность просматривать оба списка без изменения основных настроек (на странице списка рекламодателей есть ссылка).

Blocked advertiser URLs — это ссылка на страницу, где Вы можете посмотреть список всех заблокированных у Вас URL рекламодателей, там же разблокировать/заблокировать и в окошке справа можно блокировать списком, прям как в интерфейсе AdSense.

Setting separate version — версия панели управления, где настройки на одной странице, а отчёты о найденных объявлениях на другой. Меню сверху.

Так же ряд настроек (которые я посчитал не очевидными по своему смыслу) снабжён комментариями (на английском) прямо в панели управления в виде всплывающих подсказок при наведении курсора.

User agent используется тот, с которым Вы зашли в панель управления. Возможно, это было ошибкой и будет изменено, ведь через IE8 авторизация не сработала почему-то. Не стал разбираться.

Вывод объявлений (отчёт о проделанной работе)

В зависимости от результата проверки объявление попадает в соответствующий список. Всё что попало в отчёт (столбцы объявлений в нижней части) остаётся там пока мы это не удалим. Это просто копии объявлений снятые в указанный момент времени. Если мы удаляем одно или все объявления, то они удаляются только из отчёта. Из AdSense, насколько автору известно, удалить объявление невозможно.

Сверху слева указан рекламодатель (Название текстовое, если есть и adv-57533…). Можно будет разблокировать вручную, если что. И просто к сведению в незаблокированных.
Перед именем рекламодателя в проверенных может появляться такая последовательность: «!!!->». Это означает, что рекламодатель данного объявления имеет текстовое название, а не только id и в силу включенной опции «Do not block advs with name» объявление без проверки было помещено в раздел «Clear».

Так же в заблокированных выводится слово блокировки, справа сверху. Перед этим словом могут стоять некоторые обозначения: восклицательный знак, «S->» или «d:». Например: «Blocked by: d:.sh$» или «Blocked by: !член». Восклицательный знак означает, что объявление было заблокировано по точному соответствую слова из списка слову в объявлении, не по частичному вхождению. «d:» означает, что был поиск только по домену. В данном случае домен оканчивался на «.sh». «S->» означает, что объявление было найдено в рамках запуска с включенной опцией «Check by Searchwords».

Если одно другое перекрывает, просто наведите курсор или коснитесь (на мобильном) и всё станет видно.

Далее, в привычном нам виде: заголовок1, заголовок2 (если есть), текст и отображаемый URL (медийные могут выглядеть немного по-другому). Ссылка же на конечный URL через избавителя от поля referer.

В нижней панели слева направо: кнопки блокировки/разблокировки, суммарное кол-во просмотров (только для заблокированных, если включена опция), дата и время внесения объявления в данный список, кнопка удаления из списка текущего объявления.

В скобках после адреса указывается тип объявления (t — текстовое (общее обозначение в ранних версиях); t1 — старое текстовое объявление с одним заголовком; t81  — самое популярное текстовое объявление с двумя заголовками; t102 — небольшой прямоугольник со ссылкой,  заголовком и одной текстовой фразой; Mft — многоформатное, текстовое; Mf62 — небольшой прямоугольник  с одной текстовой фразой, может быть с картинкой; Mf — многоформатное; M1, M2, M103 и прочие на M — мультимедийные; M103 (иногда M91) — самое популярное мультимедийное: картинка сверху, снизу заголовок и текст; M26 — Google Play; M46 — объявления с картой; H52, H51 — HTML5, Img — изображение). Вплотную к типу объявления может быть добавлены приписка «_ch», что означает, что объявление было в проверенных, например, «t_ch» или «Mft_ch». Список не полный. Если тип объявления распознан не будет, то и соответствующего обозначения не будет. Эти цифры не взяты с потолка. Так объявления обозначаются в Google.

Mf62

t102

Заблокированные объявления из отчёта

Заблокированные объявления из отчёта

Слева от строк с текстом значок для добавления соответствующего текста в белый список. Так же справа есть кнопка для добавления в белый список объявления целиком (два заголовка и текст)
Справа от адреса появляются кнопки блокировки URL целиком и домена.
Сразу под адресом есть ссылка на жалобу на это объявление. Повторяет функционал в ЦПО, только не спрашивает подтверждение.

Схема поиска

ПО как бы заходит в ЦПО и просматриваем все объявления подряд (этот процесс конечен только в том случае, если установлена галка «помечать просмотренные» и снята «смотреть просмотренные», то есть в конце каждого этапа проверки объявления будут отмечаться просмотренными и в следующий раз будут загружаться новые).

В каждом цикле поиска используются параметры, записанные на диске. Если что-то исправили и не сохранили, то будут использованы старые параметры.

Можно было бы запускать поиск по каждому слову из списка и блокировать найденное, но у этого метода есть недостатки:

  1. Самый главный: Google ищет только ту словоформу, что указана, он не будет выдавать объявления только с точным соответствием; по запросу «Билан» он не покажет «Сегодня Поxоpоны Димы Билана».
  2. Если слов, скажем, 50 и более, то, вероятно, что это займёт слишком много времени и процесс будет вырублен на каком-то этапе из-за ограничения по времени. И придётся хранить информацию о последнем проверенном слове, запускать с него снова… в общем, трудности.

Преимущества текущей реализации:

  1. Просмотрели объявления, отметили; Google сам выдаст партию непросмотренных. Просто.
  2. Настраиваемое количество проверяемых за один запуск объявлений. А всякий шлак, если его не чистить, обычно на первых страницах ЦПО. Таким образом за несколько запусков большая часть говнообъявлений, если не вся будет заблокирована. К тому же Google всегда блокирует все остальные объявления, которые являются копией первого заблокированного. Биланов, например, десятками, если не сотнями запускают. После работы этого инструмента видел в ЦПО несколько страниц одинаковых заблокированных объявлений, хотя в отчёте их столько не было.

В каких полях ищем слова из нашего списка? Заголовок 1, заголовок 2, текст объявления, отображаемый URL и, если стоит галка, целевой URL, в имени рекламодателя (если отмечена галка), в домене, при записи в виде «domain:badsite».

Начиная с версии 4.15 в отчётах могут появляться пустые объявления. Это сделано, чтобы хотя бы по домену можно было проверить, даже если текст объявления получить невозможно.

Рекомендации

  • При возможности устанавливайте в отдельный каталог, обращайтесь через домен, который переопределите в hosts. Так к Вам будет очень сложно подобраться всяким злоумышленникам.
  • Убедитесь, что объявления отлавливаются. Было замечено, что галка «Disable utf8_decode» стояла, тексты отображались нормально, но объявления не отлавливались. Стали отлавливаться после снятия галки.
  • Не оставляйте название папки с ПО таким какое оно есть.
  • Не ставьте за раз просмотр более ста объявлений (произведение количества страниц и количества объявлений на страницу) Подбирайте оптимальные настройки в зависимости от Ваших ресурсов и ограничений. Если время исполнения переопределить не удаётся, то ставьте проверку меньшего количества объявлений, но чаще.
  • Если установить 1 страницу и 100 объявлений, то так процесс проходит немного быстрее, чем 10 страниц по 10 объявлений. Однако, второй метод требует меньше памяти (примерно в два раза). После списка две картинки сравнения результатов.
  • Не запускайте одновременно несколько процессов очистки из одной папки, так как это может привести к сбоям и, возможно, необходимости снова авторизоваться. Если хотите одновременно запускать два и более процессов, например, для чистки у себя, друга и соседа друга то просто ставьте две (или более) копии рядом. Они друг другу мешать не будут.
  • Если не работает сохранение настроек, а в ответ выдаёт какую-то ошибку сервера, то правьте файл .htaccess в папке настроек или просто снесите его, если не боитесь.
  • Выключайте (настраивайте исключения) AdBlock или расширение-аналог для блокировки рекламы, иначе Вы можете не видеть отчётов, ведь в отчётах те же рекламные объявления и расширения-блокировщики их от Вас скрывают.
  • Проверяйте список заблокированных аккаунтов AdWords, ибо кнопка разблокировки в отчётах далеко не всегда срабатывает, несмотря на то, что сообщает об успешной разблокировке.