Как заблокировать мусорные объявления в AdSense

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

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

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

  • «Сегодня По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_cleaner).
  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).
  3. Обязательно сохраняем — жмём кнопку «Update settings» внизу слева (под настройками).
  4. Сверху справа нажимаем «Google Auth», чтобы выехало поле для ввода пароля и кнопка запуска процесса авторизации. Спрятано так как нужно редко, чтоб не мешалось и лишний раз не нажалось случайно.
  5. Вводим пароль и нажимаем кнопку «Login to Google». Если в окне снизу ничего не появляется, то проверьте заголовки своего сервера: 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 оттуда. Положить их надо в папку tempdata под именем cookie.txt, там же создать файл pub_id.txt, в который сохранить Ваш идентификатор издателя в формате: «pub-1908597777777777» — pub- и 16 цифр. Лично проверял — работает.

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

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

Можно просто указать имя файла поисковика «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.

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

# 90 непроверенных медийных
*/7 * * * * username /usr/bin/php /var/yoursitepath/bad_ads_blocker/search_bad_ads.php '!!!{"num_of_pages":"1","num_of_ads_per_page":"90","rich_media":"checked","stopwords_check":"checked","whitelist":"checked","lat2cyr":"checked","ad_account":"checked","check_target_url":"checked","mark_reviewed":"checked","get_stats":"checked","no_save_clear":"checked","report_words":"checked","report_disg":"checked","arc":"arc5"}'

# 200 (4 страницы по 50) проверенных медийных
*/12 * * * * username /usr/bin/php /var/yoursitepath/bad_ads_blocker/search_bad_ads.php '!!!{"num_of_pages":"4","num_of_ads_per_page":"50","rich_media":"checked","stopwords_check":"checked","whitelist":"checked","lat2cyr":"checked","ad_account":"checked","check_target_url":"checked","mark_reviewed":"checked","get_stats":"checked","reviewed":"checked","no_save_clear":"checked","report_words":"checked","report_disg":"checked","arc":"arc5"}'

# 200 (4 страницы по 50) проверенных текстовых
*/13 * * * * username /usr/bin/php /var/yoursitepath/bad_ads_blocker/search_bad_ads.php '!!!{"num_of_pages":"4","num_of_ads_per_page":"50","text":"checked","stopwords_check":"checked","redirects_text":"checked","whitelist":"checked","lat2cyr":"checked","reviewed":"checked","ad_account":"checked","blogspot":"checked","disguised_text":"checked","check_target_url":"checked","get_stats":"checked","no_save_clear":"checked","report_words":"checked","report_disg":"checked","arc":"arc5"}'

# по списку слов для поиска (Searchwords называется). Остальные фильтры выключены. Всё что найдётся по этим словам автоматически блокируется.
*/14 * * * * username /usr/bin/php /var/yoursitepath/bad_ads_blocker/search_bad_ads.php '!!!{"num_of_pages":"1","num_of_ads_per_page":"50","text":"checked","searchwords_check":"checked","whitelist":"checked","get_stats":"checked","report_words":"checked","report_disg":"checked","arc":"arc5"}'

# 100 графических непроверенных (фактически проверяется только адрес, оптического распознавания нет)
*/15 * * * * username /usr/bin/php /var/yoursitepath/bad_ads_blocker/search_bad_ads.php '!!!{"num_of_pages":"1","num_of_ads_per_page":"100","image":"checked","stopwords_check":"checked","whitelist":"checked","lat2cyr":"checked","redirects_text":"checked","ad_account":"checked","blogspot":"checked","disguised_text":"checked","check_target_url":"checked","mark_reviewed":"checked","get_stats":"checked","report_words":"checked","report_disg":"checked","report_redir":"checked","no_save_clear":"checked","arc":"arc5"}'

#Запуск с теми настройками, что указаны в панели управления
*/4 * * * * username /usr/bin/php /var/yoursitepath/bad_ads_blocker/search_bad_ads.php

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Use ARC ( 

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

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

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

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

List of stop wordsbad ad text list — списки для отсева. Если найдётся вхождение хоть одной строчки из этих списков, то объявление блокируется. С указанием слова по которому оно было заблокировано. Удобно для отладки, если слов очень много. Для текстовых и медийных объявлений сделаны разные списки, так как есть ряд слов, необходимых для блокировки текстового шлака, который приводит к блокировкам хороших медийных. Начиная с версии 3.4 можно искать точное соответствие слову, а не просто вхождение. Для этого нужно добавить три восклицательных знака перед словом: «!!!Бетонный». Итак, по поисковому слову «член» будут заблокированы объявления «Ярмарка членистоногих…» и «Чтобы член стоял всю ночь», а если указать так: «!!!член», то «Ярмарка членистоногих…» заблокирована не будет, а «Чтобы член стоял всю ночь» и подобные не останутся в показываемых.

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

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

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

Google auth — авторизация в 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, насколько автору известно, удалить объявление невозможно.

Сверху указан рекламодатель. Можно будет разблокировать вручную, если что. И просто к сведению в чистых.

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

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

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

Схема поиска

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

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

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

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

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

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

В каких полях ищем слова из нашего списка? Заголовок 1, заголовок 2, текст объявления, отображаемый URL и, если стоит галка, целевой URL.

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

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

Сравнение производительности при проверке 100 объявлений разными методами (слева 1 страница на 100 объявлений, справа 10 страниц по 10 объявлений). Фактически проверилось меньше из-за невозможности распознать некоторые объявления (над этим я периодически работаю).

 

Здесь есть демонстрационный пример. Он урезан, малость устарел и нерабочий, но имитирует рабочий. Авторизация включена, пароль: hg.

В дополнение можете изучить статьи от авторов wpuse.ru здесь и от автора ploshadka.net здесь.

Скачать

AdSense Bad ads blocker — самая первая версия.

AdSense Bad ads Blocker v.1.1 — что-то поправлено.

AdSense Bad ads Blocker v1.2 — добавлена поддержка двухуровневной авторизации, сделана авторизация для защиты от внешних посетителей, сделана мобильная версия и доработаны разные мелочи.

AdSense Bad ads Blocker v1.3 — добавлена поддержка ведения журналов. Для отладки тем, у кого что-то не работает.

AdSense Bad ads Blocker v1.4.2 — доделан (не тестирован) вход через двухэтапную авторизацию. После ввода кода нажимаем кнопку «напомнить мне позже» автоматически и наконец-то входим.

AdSense Bad ads Blocker v1.5 — сделана поддержка php 5.3 — php 5.6. Доработан вход через двухэтапную авторизацию (в случае если она выключена, но вы заходите издалека и Google просит подтвердить, что это Вы), исправлены почти все места, где выводились предупреждения. Включена возможность блокировки по наличию домена «blogspot.com».

AdSense Bad ads Blocker v1.6 — снова исправлена авторизация, теперь вообще у всех должно работать, исправлена проблема с кодировкой файлов и выводимых в отчёт объявлений, закрыта дыра в безопасности (в плане удаления файлов) и прочие мелкие ошибки.

AdSense Bad ads Blocker v1.7 — добавлен механизм обнаружения латинских символов в русскоязычных объявлениях (помогает найти то, что маскируется методами мудорекламистов).

AdSense Bad ads Blocker v1.8.1 — исправлен механизм авторизации, добавлена возможность включать в проверку по списку слов целевой URL, изменена мобильная версия.

AdSense Bad ads Blocker v2.0 — сделана поддержка php7. Протестировано на php7.0.23 и php7.1.10.

AdSense Bad ads Blocker v2.1.2 — сделан механизм самозапуска заданного количества циклов поиска (самый верхний пункт в настройках). Данный механизм полезен для проверки уже просмотренных объявлений (можно хоть тысячами их проверять) и для сбора слов с заблокированных (ранее можно было только один проход сделать на заданное количество объявлений). Немного изменена внешность.

AdSense Bad ads Blocker v2.2 — добавлен поисковый фильтр: он позволяет находить замаскированные латинскими буквами слова по списку слов для поиска.

AdSense Bad ads Blocker v2.3 — исправлена ошибка нового фильтра версии 2.2 (спасибо vga1). Добавлена возможность переопределения параметров при запуске через планировщика (описание есть выше). Добавлена поддержка медийных объявлений.

AdSense Bad ads Blocker v2.4 — добавлен белый список (у него приоритет выше), теперь все списки можно выводить на одной странице (включаемо). Разделены списки слов для текстовых и медийных объявлений, ибо много блокируется не шлака словами нужными для отлова текстового шлака.

AdSense Bad ads Blocker_v2.5.2 — добавлена возможность выбирать объявления за определённое количество дней, малость доработано остальное.

AdSense Bad ads Blocker v2.6.1 — доработана авторизация для тех у кого Curl не может включить параметр CURLOPT_FOLLOWLOCATION, а так же для тех у кого не поддерживается отображение информации в iframe.

AdSense Bad ads Blocker v2.7 — сделана версия с раздельными экранами для настройки и поиска, добавлена функция разблокировки заблокированных аккаунтов AdWords (как Вы знаете, через штатные средства разблокировать можно только по одному, что доставляет много неудобств). Здесь же даже по одному разблокировать удобнее, чем в штатной, а ещё можно и все сразу (правда есть страховочное ограничение на 100 штук). Добавлена функция автоматической разблокировки аккаунтов по истечению заданного количества дней. Как обычно, доработаны некоторые механизмы, устранены ошибки. Доработан модуль поиска мешанины кириллицы и латиницы.

AdSense Bad ads Blocker v3.0 — сделана поддержка работы с новым ЦПО (включается галкой Use new ARC).

AdSense Bad ads Blocker v3.1 — исправлена проблема, возникающая у некоторых с кодировкой при сохранении списка слов.

AdSense Bad ads Blocker v3.2.1 — добавлена возможность вытаскивать объявления по определённым словам, сделана возможность полного переопределения настроек через cron.

AdSense Bad ads Blocker v3.3.2 — доработана система авторизации в панели управления (защита от посторонних), доработаны несколько фильтров. Существенно доработан фильтр поиска переадресаций для текстовых объявлений (теперь можно включать раздельно для текстовых и для медийных). Добавлена возможность смотреть доходы, которые отображаются на странице входа: сегодня, вчера, 7 дней и остальные. Чтоб обновиться: bad_ads_blocker_v3.3.2.update — отличается только отсутствием списков слов. Можно смело накатывать поверх — все Ваши данные сохранятся.

AdSense Bad ads Blocker v3.4.1 — добавлены: поиск по точному соответствию слова; список объявлений, по которым был заблокирован аккаунт (в списке аккаунтов рекламодателей /advertisers.php), подсчёт количества объявлений в отчёте.

AdSense Bad ads Blocker v3.5 — исправлен алгоритм распознавания мультимедийных (вслед за изменением алгоритма выдачи Google), добавлена отдельная программка для обхода сайтов по заданным адресам (помогало для восстановления показов объявлений) и всякие небольшие доработки.

AdSense Bad ads Blocker v3.6.1 — снова исправлен алгоритм распознавания мультимедийных (вслед за очередным изменением алгоритма выдачи Google), по просьбам трудящихся пользующихся добавлена возможность получать список заблокированных сайтов и менять его, то есть разблокировать и блокировать. Так же теперь прямо из отчёта можно блокировать URL рекламодателя или его домен.

AdSense Bad ads Blocker v3.7.2 — опять исправлен алгоритм распознавания мультимедийных, добавлена возможность автоматически (вручную тоже можно) отправлять жалобу на объявление. Немного исправлений ошибок и много различных доработок. Исправлена давняя логическая ошибка. Проверку по белому списку не выключалась (независимо от галочки). Начиная с этой версии php5.3 не поддерживается, ибо пришлось добавить в функцию json_encode флаг JSON_UNESCAPED_UNICODE (доступно с PHP 5.4.0).

AdSense Bad ads Blocker v3.8 — исправлен в очередной раз алгоритм блокирования/разблокирования объявлений и аккаунтов из отчётов. Добавлена возможность проверки графических объявлений (пока только отображаемый и целевой URL, без оптического распознавания). Ну и мелочь всякая. )

AdSense Bad ads Blocker v3.10 — исправлен алгоритм распознавания текстовых объявлений. Добавлена возможность отображения URL объявления в отчётах.

AdSense Bad ads Blocker v4.0 — добавлена поддержка Ad Exchange. Пока работают основные функции — просмотр и блокирование объявлений, второстепенные функции могут не работать. Только нужно Pub Id для AdX вручную вписать (при выборе AdX появляется соответствующее поле).

AdSense Bad ads Blocker v4.1 — улучшен механизм распознавания объявлений (головой подумал и свой косяк исправил); оптимизирован код; добавлена возможность заносить в белый список отдельные части объявления по одному нажатию; на главной странице появилась форма для блокировки URL списком, например, взятых с форума; удалён список «bad ad text list» и кнопка скачивания текстов из заблокированных объявлений (если вдруг очень надо, в предыдущих версиях сохранено, но там не обновлялись функции подключения, может и не работать); немножко подробнее стало оформление отчёта (добавлено несколько всплывающих подсказок при наведении на части объявлений). В новой версии отображение объявлений, заблокированных предыдущими может быть не совсем правильным из-за переписанного css-файла; добавлен вывод потребляемой памяти (на 100 текстовых объявлений примерно 10 Мб).

AdSense Bad ads Blocker v4.2.1 — исправлен механизм автоматического разблокирования старых аккаунтов AdWords, в папке «settings» теперь никаких php-файлов — обновлять стало проще. И много чего ещё не столь значительного.

AdSense Bad ads Blocker v4.2.2 — исправлены некоторые ошибки, например, появление «-32001 XSRF token validation» и сделаны некоторые незначительные доработки.

AdSense Bad ads Blocker v4.4 (19.10.2018) — добавлена поддержка ввода символов с картинки при авторизации (или услышанных цифр из звукового файла). Насколько успешно это будет работать? Пока не ясно.

Скачать можно на GitHub.

 

Чтобы обновить программу с сохранением всех Ваших настроек достаточно заменить всё, кроме папок tempdata и settings.

Другими словами, заменяем всё, кроме папок tempdata и settings, затем все .php-файлы в папке settings.

Ещё вариант обновления:

  1. Меняем имя папки с программой (например, bad_ads_blocker->bad_ads_blocker_old).
  2. Ставим новую версию в папку со старым названием (например, bad_ads_blocker).
  3. Переносим настройки (галки и цифры), а так же списки слов из старой версии в новую.
  4. Старую папку не удаляем, пока не убедимся, что новая версия исправно работает и полностью нас устраивает.

При таком варианте отчёты (списки заблокированных/чистых объявлений) остаются в старой версии (всё это в папке tempdata).

Спасибо ребятам, трудящимся над созданием блокируемого, что не прошли мимо:

 

Частые вопросы

Вопрос: подскажите, а как обновить версию блокировщика? Чтобы не затёрлись те слова/выражения, которые я уже добавлял ранее.

Ответ: все настройки в папке settings.
Левая колонка: settings.ini.
Списки: stopwords_text.txt, stopwords_media.txt, bad_ads_text.txt, whitelist.txt.


Вопрос: как обновить версию чтобы не приходилось снова авторизовываться?

Ответ: перенести в новую версию (сохранить имеющиеся) файлы cookie.txtpub_id.txt из папки tempdata.
Сохранить Ваш пароль на вход в панель управления: файл pass.


Вопрос: что означает надпись: -32001 XSRF token validation? Она появляется, когда разблокирую заблокированные объявления. В самом же аккаунте Adsense эти объявления не разблокируются, приходится это делать руками.

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


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

Ответ: да, и только. Верно.

 


Вопрос: хочу разблокировать объявление, жму кнопку, появляется надпись Ad from old ARC unblocked.
Что это значит? И должно ли объявление после этого оставаться в списке заблокированных на странице скрипта?

Ответ: from old ARC — значит объявление, которое было получено из старого ЦПО. unblocked — разблокировано. Да, должно. При блокировке/разблокировке данные внутри отчётов не перемещаются.

 


Вопрос: боязно как-то включать автоматическое блокирование аккаунтов. С дальнейшей ручной разблокировкой проблем не возникает?

Ответ: не возникает. Разблокировать можно будет как обычным методом в ЦПО, так и с помощью ПО на странице /advertisers.php. Ссылка есть справа и в левом столбце настроек внизу в Debug, login and other…

 

 

 

Уважаемые сайтовладельцы! У кого аудитория в какой-то степени состоит из тех кому инструмент будет полезен, прошу помочь распространить информацию. Можно поставить объявления в заглушку AdSense или просто на какое-то время поставить отдельное объявление к себе на сайт.
Рекламные материалы здесь.

Файл настроек settings.ini совместим с последующими, его можете брать от старой версии.

Зачем блокировать мусорные объявления?

Было замечено 3 группы объявлений:

  • ведут на обычные сайты
  • ведут пользователей мобильного интернета на страницы подписок, а не мобильного на поддельные как бы новостные сайты.
  • ведут на страницы заказа чудодейственных как бы лекарств.

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

Все это мошенничество.

Мобильные подписки (мобильные операторы (Мегафон, МТС, Теле2) в этой как бы ОПГ, именно они снимают деньги. Билайн пишет, что «снижает обороты» и делает неосознанные подписки невозможными, но писать-то все умеют, не проверял как дела на самом деле, надеюсь, что истина). Формально, наверное, никакой закон не запрещает снимать ежедневную плату за мобильные подписки, но всем очевидно, что деньги снимаются со счёта абонента просто так. И абоненту с этого никакой пользы, ведь он даже не знает об этом. А когда узнаёт, что платит за то, что он никогда не видел, приходит в негодование. Сам, например, звонил в Мегафон и требовал вернуть деньги, списанные за мобильные подписки. Без лишних вопросов возвращали, ведь понимают, что это метод воровства, который (пока ещё?) не запрещён законом вполне законная плата за оказанные услуги связи, почему бы не повысить лояльность, вернув какие-то полторы тысячи? Ведь клиент-то больше за всё время приносит. Кстати, за это спасибо Мегафону, полагаю, что формально имели право послать с возвратом денег.

Пишу «как бы ОПГ», так как полагаю, что наши законы эти случайные мобильные подписки не запрещают, следовательно аббревиатура «ОПГ» неуместна. Хотя, чёрт его знает, может закон запрещает эти случайные подписки, поэтому и деньги без лишних вопросов возвращают.

А вы знали, что, цитирую: «В августе 2016 года МегаФон совместно с банком Round запустил банковскую карту МегаФона. Ключевыми преимуществами карты являются начисление процентов на остаток, вознаграждание (cashback) у партнёров до 10%, переводы по России без комиссии и дополнительная защита денежных средств. Карты «МегаФона» эмитированы банком Round и отвечают всем требованиям безопасности, предъявляемым к банковским картам. Дополнительно к этому «МегаФон» всем пользователям карты подключает бесплатную услугу, которая блокирует неосознанные подписки, что увеличивает лояльность и удовлетворенность абонентов».

Что б***дь за неосознанные подписки в официальном отчёте?!

За 2-ой квартал 2017, Ежеквартальный отчёт ПАО «МегаФон» это архив zip с этой страницы. Копия архива от 30.10.2017. 

А кто-нибудь когда-нибудь от кого-нибудь слышал что-нибудь вроде: «Я тут мобильную подписку подключил всего-то за 50 рублей в день»?

Вот что поддержка мегафона пишет:

ОПСОС: Для того, чтобы установить запрет на услугу «Подписка» сроком на 3 месяца, ответьте <УСТЗАПРЕТ1> на номер 5151». Срок действия запрета «Партнерские подписки» — 3 месяца, в дальнейшем возможно повторное подключение данной услуги. Приятного дня!

Абонент: Но, почему только на 3 месяца, а не до отключения, как, например, те же самые мобильные подписки?

На поставленный вопрос не ответили, съехали, предложив «решение».

ОПСОС: Для избежания подключения различных услуг от контент-провайдеров рекомендуем подключить «Контентный счет» — отдельный лицевой счет для оплаты Контентных услуг. Если на этом счете будет 0 руб. всегда, то никакие платные развлекательные сервисы Вы подключить не сможете. Запрет будет дейстовать на постоянной основе. Желаете подключить услугу?

Абонент: Сейчас нет, однако, прошу подробно описать как это сделать самостоятельно.

ОПСОС: Подключение услуги возможно при обращении в Конт. Центр или Салон Связи МегаФон с паспортом.

Есть пример мошенников. Так выглядит страница при переходе из AdWords по рекламному объявлению (вниз листал, там чёрная пустота):

Screenshot_2017-11-08-23-22-18

Спустя минут 10 обновил страницу и вот что стало (тот же эффект при заходе под инкогнито, да при любом заходе, если не прямо с говнорекламы):

Screenshot_2017-11-09-01-06-07

Внизу тоже появилось много скрытых ранее подробностей:

Screenshot_2017-11-09-01-06-14

Переходы на обычные сайты — это мошенничество не такое злостное, пользователь денег не теряет, но это явный обман. Объявление о похоранах Билана или про шок-видео, которое ещё не удалили, а там магазин сапог.

Чудодейственные лекарства — это попытка продать людям всякое говно под видом чего-то хорошего.

Это всё к чему я? Заблокировать объявления от мудорекламистов — предотвратить мошенничество, которое могло бы произойти при переходе пользователя по такому объявлению.
Я против мошенничества! И не вижу ни одной благой цели в существовании подобных объявлений.

 

 

Заключение

Прошу писать ваши отзывы и пожелания, замечанию, критику (обоснованную и не очень). В общем, всё что думаете — пишите.

Если у кого что не работает, включайте галку «Enable logs», делайте одну попытку совершить то, что не получается и шлите файлы из папки tempdata/logs мне на почту badadsblocker на домене сайта. Если папка по-прежнему пуста, проверяйте работу Curl, и возможно, других необходимых модулей.

Как это создавалось и как работает в технических подробностях (не очень глубоких) — статья на Хабре.

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

Похожие записи

  • У кого чек длиннее  ?У кого чек длиннее ?
    Это мистер Jeremy Schoemaker 132 994,97 $, это его блог shoemoney.com, а это его чек на 132 994,97 $ которые он
  • Как разблокировать ZTE телефон, если забыт графический парольКак разблокировать ZTE телефон, если забыт графический пароль
    Производитель ZTE смартфонов, а также создатель операционной системы Android, позаботились о том, чтобы безопасность данных в вашем аппарате была на максимальном уровне. Но системы безопасности...
  • Как создать аккаунт Meizu flymeКак создать аккаунт Meizu flyme
    Приобретая смартфон китайского производителя Meizu, пользователю устройства необходимо создать meizu аккаунт flyme, на не только учётку в Google. Эу функцию компания из Поднебесной позаимствова...
  • Драйвера Xiaomi Redmi Note 4 для компьютераДрайвера Xiaomi Redmi Note 4 для компьютера
    Xiaomi Redmi Note 4 является одним из самых желанных смартфонов на рынке. Многие люди уже купили его, и радуются потрясающим возможностям. Если вы один из таких, тогда вам будет интересна наша ...

124 Comments

  1. Благодарю за проделанную работу! Конечно, хотелось бы описание для таких нубов как я, куда да как))) Но, думаю разберусь.

    • Георгий

      22.10.2017 at 00:44

      Описание сделаю, но только попозже, как время будет, а пока методом тыка. )

  2. Добрый день, я не пойму как запустить? где логин и пароль вводить?
    Захожу на страницу куда закачал программу, выдает такое окно

    И что дальше делать?

    • Георгий

      22.10.2017 at 00:45

      Исправил. В новой версии уже всё понятно.

  3. Игорь

    24.10.2017 at 19:42

    Неаторизуется — вернее ничего не происходит.
    П.С. На вашем примере — хоть сообшение какое то выводит

    • Георгий

      27.10.2017 at 00:55

      В версии 1.6 многое из этой области исправлено. Если не получится, отмечайте «enable logs» и присылайте файлы — буду смотреть.

  4. Есть ли возможность блокировать по части урл, например: «index.jhtml» ?

    • Георгий

      27.10.2017 at 17:55

      Пока нет, но можно добавить.

      • Да, было бы полезно, на англоязычных сайтах по части урл: «index.jhtml» можно найти какие то левые установщики софта, все под копирку.

  5. Дмитрий

    28.10.2017 at 10:31

    Георгий спасибо за работу, очень нужное дело (!) и реализация неплохая в качестве идей и опций, в принципе даже добавить нечего по блокировке , особенно понравилась идея брать «пример» за основу из уже заблоченных — было бы ОЧЕНЬ здорово чтобы Вы сделали сборочку под win , например на xampp portable подходящем по конфигу (их тьма).

    Большинству юзеров так было бы лучше (safe mode, curl и пр. ограничения на хостах).
    Да и для тестирования все таки покрутить ручками хотя бы первое время гораздо лучше — что да как.

    Еще раз спасибо…

    • Георгий

      28.10.2017 at 14:33

      Спасибо за отзыв!
      Под Win. А Denwer поможет? Сам не пробовал.
      Я так понимаю, что какая бы ОС не была, всё равно нужно, чтобы присутствовали необходимые модули.
      В общем, пока ничего не обещаю про разработку под Win.
      Ведь, возможно, лучше было бы всё это на JavaScript написать, это было бы более универсальное решение для Win. И пакетов дополнительных ставить не надо. А родной клиент AdSense на JS и написан.

  6. На xampp 1.7.7 при попытке логина выдает
    Fatal error: Call to a member function getElementsByTagName() on a non-object in C:\xampp\htdocs\blog\login_functions.php on line 9

    как поправить?

    ps задумка классная

    • Георгий

      28.10.2017 at 16:19

      Может расширения DOM нету?

    • Георгий

      29.10.2017 at 17:43

      Протестировал на xampp с php 7 — работает. А такую ошибку (в самом начальном этапе) выдаёт когда Curl есть, но почему-то возвращает пустую строку.

  7. да вроде есть

    DOM/XML enabled
    DOM/XML API Version 20031129
    libxml Version 2.7.7
    HTML Support enabled
    XPath Support enabled
    XPointer Support enabled
    Schema Support enabled
    RelaxNG Support enabled

    • Георгий

      28.10.2017 at 19:41

      Даж не знаю. Включите запись протокола и шлите файлы из папки logs на badadsblocker на домене сайта.

      • логи создаются но с нулевым размером,слать нечего, пробовал на разных версиях пыха вплоть до 7, и так и так крутил — софт то нужный. Что характерно остальной софт с зависимостью от Dom (парсеры) на локалке работает нормально…
        Жалко, но будем надеется Георгий подпилите и под win, в любом случае Вы молодец , сей софт в нынешних условиях имеет будущее, особенно под win (для большинства).

        • Георгий

          29.10.2017 at 12:03

          Наверное, как у меня. Curl есть, включен, вроде как всё хорошо, но выдаёт пустой ответ. Я пытался найти решение, но не смог. Если вдруг с этим что получится — пишите.

        • Георгий

          29.10.2017 at 12:36

          Изначально не под Win ориентировался, ведь почти у всех сайтовладельцев есть возможность на сайт отдельной папкой поставить. Правда, у кого-то ограничения хостеров всякие не позволят работать, уже писали. Сам на нескольких хостингах пробовал — работает.

          • Да понятно что штука то вообщем серверная, но лучше ведь чтобы работала на Win нежели нет.
            Сам бы на сервере пользовался но не могу из-за его ограничений по безопасности (сознательных вообщем то — не в Вашем скрипте разумеется дело — код то открытый). Еще один плюс «изподвинды» что Google тревожится не будет.

            А так Вам и видео можно было бы снять про развертыванеи на Win на том же xampp`e (тут и seo какое никакое тут и на пиво немножко кликов по видео).
            Ладно . будем ждать может что раскопаете из-за чего не работает ,я честно говоря тоже озадачен — первый раз у меня на локалке что-то не сработало, обычно наоборот…

  8. Василий

    28.10.2017 at 20:11

    Поддержка PHP 7.1 очень желательна. Многие перешли на него хотя бы потому, что скорость выполнения скриптов существенно увеличилась. А 5.6 это на сегодня моветон.. для тех, кто не заботится о скорости генерации и соответственно открытия страниц.

  9. А какой файл нужно запускать для работы по cron?

  10. Василий

    04.11.2017 at 19:07

    Опробовал скрипт. Очень интересный. Что лично я заметил:

    1) Если сработал блок, к примеру, по кириллическим словам в которых имеется латиница, То после раз блокировки при последующем сканировании оно вновь попадает в список блокировки. Может сделать какой-либо аналог белого списка — разблокировал конкретное объявление и оно более не попадает под блокировку.

    2) по опции «Check reviewed ads:» — при её включении будут проверяться, как я понял, ТОЛЬКО из списка ранее проверенных.
    Можно сделать чередование прям в интерфейсе настроек. Типа первый проход из списка новых, а второй проход ранее проверенные. И выбирать для каждого количество и глубину проверки. Т.к. в первом случае новых объявлений будет мало, а ранее проверенных традиционно много. Удобно по крону так проверять будет.
    Как то так, ибо мошенники, бывают, меняют контент объявления, которое ранее было проверено.

    С уважением.

    • Георгий

      04.11.2017 at 21:11

      1. Думал уже над этим, возможно руки дойдут.
      2. Не строго из ранее проверенных, а из тех, что были помечены как проверенные, ну и из остальных. Как в ЦПО. Если стоит галка показывать проверенные, то в список попадают все: и проверенные, и те что ещё не проверены, но по показам поднялись.
      Немного не так как Вы писали, но сделал запуск через cron с разными параметрами.

  11. Игорь

    14.11.2017 at 17:05

    Здравствуйте. Сделайте, пожалуйста, возможность запуска скрипта в Денвере на локальном сервере под ОС Windows. Пробовал ставить его на хостинг, но при запуске появляется 404 ошибка на сайте Вордпрес, проверял пути, все правильно. Не хочу ковырять файлы сайта, чтобы не сломать на нем что-то, т.к. сейчас он работает как надо.

    На локальном сервере пытаюсь авторизоваться – в окошке фрейма крутится шарик, затем он пропадает и отображается пустая страница.

    Пробовал в настройках скрипта ставить галку Frames do not work – открывается пустая страница, на которой ничего не происходит.

    • Георгий

      15.11.2017 at 20:43

      Приветствую!
      Почему под Denwer не работает – не знаю. Под windows на xampp тестировал. Попробуйте его поставить. Ещё были проблемы с xampp на x64. Не знаю почему и как решить.

      В WordPress ошибка была на шаблоне wordpress (на этот случай поправил, v3.2) или просто чёрным по-белому?

      • Игорь

        15.11.2017 at 21:57

        На хостинге отображалась 404 ошибка, оформленная под стиль сайта, как будто бы происходило обращение к несуществующей странице сайта. Тема на Вордпресс – sparkling, но она не из «коробки», её «допиливали» под меня, может в этом проблема?

        У меня Denwer установлен на Windows x64. Если я поставлю XAMPP, то, наверное, столкнусь с теми же проблемами, что были и у вас на x64.

        • Георгий

          16.11.2017 at 20:28

          Да, вот на такой случай я и внёс поправки. Только выложил исправленную, попробуйте, если ещё актуально.

          • Игорь

            18.11.2017 at 21:37

            Поставил новую версию на хостинг, теперь работает, спасибо.

  12. Тоже на денверез х64 не пошло. И с хостинга авторизироваться не могу(( может где-то отключается сама двуохуровневая идентификация? Но хотя пришло потом сообщение на телефон через пол часа, что заблокировали попытку попасть злоумышлеников из России. Откуда вообще IP России, если хостинг Нидерланды, а Денвер – Украина.

    • Георгий

      16.11.2017 at 20:27

      Да, Google не пускает, когда внезапно издалека. Сначала надо успокоить его — подтвердить, что это мы.

  13. А где поле для белого списка? А то галочка есть, а самого поля не нашел((

  14. Уже нашел белый список. Извините, просто сонный. Мега скрипт, спасибо большое! Его бы и покупать готовы были бы люди.

    • Игорь

      16.11.2017 at 13:12

      Где вам удалось запустить скрипт: на хостинге или локальном сервере (на каком)?

  15. На хостинге. На локалке только белое окошечко то, и ничего не появляется. Я думаю, что теоретически возможно что-то подправить в самом Денвере, но знаний у меня таких нет)

  16. У меня уже все четко работает на хостинге. Жаль, что его не было раньше, когда объяв было миллион. Но и сейчас в два клика за 30 секунд все почистил и спи спокойно.

  17. Андрей

    25.11.2017 at 00:10

    Начал пользоваться скриптом, через 1 день, подозрительная активность на акаунте, пишу в поддержку, сказали что из Азербайджана заходили…
    До этого такого не замечалось, думаю дело в скрипте.

    • Георгий

      26.11.2017 at 23:07

      Конечно, если у Вас сервер/хостинг в Азербайджане.

  18. придурок!

    25.11.2017 at 00:13

    Идиот я, сука меня после твоего скрипта из дома выкинули!

  19. Роман

    27.11.2017 at 15:17

    Автор, подскажите если в меня один аккаунт адсенс, а сайтов много, то мне нужно ставить скрипт на один сайт и реблама блокируется по целому аккаунту и не будет бредовой рекламы на всех сайтах? Или для каждого сайта нужно ставить отдельно скрипт?

  20. Георгий

    27.11.2017 at 23:01

    Роман, ПО чистит весь Ваш аккаунт независимо от кол-ва сайтов. И независимо от места установки.

    • Роман

      28.11.2017 at 15:14

      Понял, ставлю только в одном экземпляре, а то думал их нужно для каждого сайта отдельно. Спасибо.

  21. Игорь

    28.11.2017 at 22:29

    Здравствуйте, что означает надпись: -32001 XSRF token validation?

    Она появляется в списке Blocked for bad Word, когда разблокирую случайно заблокированные объявления. В самом же аккаунте Adsense эти объявления не разблокируются, приходится это делать руками.

    Когда надписи -32001 XSRF token validation не было, тогда объявления разблокировались через скрипт, а теперь для этого приходится заходить в свою учетную запись Adsense .

    Сейчас у меня стоит версия 3.3. Эта ошибка стала появляться еще в версии 3.2.1, но когда я обновился до 3.3 она пропала, теперь появилась снова. Скрипт стоит на хостинге.

    • Георгий

      29.11.2017 at 01:54

      Приветствую!

      Временная потеря связи с сервером, достаточно запустить единичный цикл поиска и дождаться его завершения для восстановления.

      • Игорь

        30.11.2017 at 22:26

        Только что нажал на Today earnings и в окне фрейма все значения по нулям, хотя ещё утром скрипт (версия 3.3 на хостинге) нормально отображал доходы. Захожу в аккаунт Adsense – все цифры на месте.

        • Георгий

          17.12.2017 at 20:46

          В версии 3.4 сделал сохранение в протокол этого. Если хотите, обновитесь, включите протоколы и шлите — посмотрю почему доходы не показывает.

      • Игорь

        30.11.2017 at 22:27

        С предыдущей ошибкой (-32001 XSRF token validation) разобрался, спасибо.

      • Игорь

        30.11.2017 at 22:37

        Обновился до версии 3.3.2 и скрипт все равно не показывает доходы.

        • Георгий

          01.12.2017 at 21:05

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

  22. Добрый день.
    Вылезает «Check __DIR__/settings/ directory write permissions» не смотря на установленные права 777 на settings и tempdata
    Что может быть?

    • Георгий

      01.12.2017 at 21:09

      Посмотрите пользователя, кому принадлежат файлы и папки ПО и смените, если отличаются от пользователя web-сервера.

  23. Спасибо за разработку и что поделились этим. Тоже порядком надоела такая реклама. Вручную удалять то ещё удовольствие. Как раз искал альтернативные варианты.

    По программе есть вопросы. Многие настройки не интуитивны. И даже после прочтения описания до конца не ясно. Пока я запускаю вручную.

    Если не ставить Number of cycles, сколько будет длиться проверка? Будут ли проверены все объявления?

    Я поставил 10. В результате у меня появились две кнопки:
    10 search cycles и 10 blocked cycles. Чем отличается поиск по одной опции от другой и от третей (кнопка start searching тоже осталась)?

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

    Приведу один из примеров:
    деру

    По нему у меня заблокировали вполне нормальное объявление:
    «Сервис и продажа оборудования Buderus. Сертифицированный партнер Будерус.»

    Пришлось вручную разблокировать. Хотелось бы чтобы блокировка была только конкретных слов «деру жену по 4 часа». Или как там в тех объявлениях.

    Было бы неплохо вывести статистику. А то совершенно не понятно, сколько проверено, отсеяно, утверждено и сколько осталось.

    По скорости скрипта и работе тоже не понятно. В первы раз запустил. Долго ждал, так и не удалил некоторые объявления. Запустил второй раз, удалил часть. Устал ждать, сам заблокировал. Не понятно проверяет ли он и блокирует ли на ходу или там застрял и сколько ему еще надо проверить. То ли, может какую шкалу прикрутить, например:
    Текущий сеанс. Проверил: … Заблокировал: … Осталось проверить: …
    И в место точек меняются в процессе показатели. Или шкала от одного до 100%. Или какая статистика по датам. Например. Проверены объявления с 1 января 2017 по 10 декабря 2017. Вообщем, чего-то на что можно ориентироваться. Этого не хватает.

    Но еще раз спасибо большое за программу!

    • Георгий

      17.12.2017 at 17:58

      10 search cycles — 10 запусков подряд поиска и проверки объявлений
      10 blocked cycles — 10 запусков подряд цикла сбора слов из заблокированных объявлений
      start searching — запуск одного цикла поиска и проверки объявлений

      Принял, подумаю.
      Сделаю: по точному вхождению слова, а не его отдельной части.
      Не будет: И в место точек меняются в процессе показатели. Или шкала от одного до 100%. Ибо зачастую заранее неизвестно сколько работы. Может 5 объявлений остаться, а может 73.

    • Георгий

      17.12.2017 at 20:42

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

      • Спасибо за все правки!

        Отчего-то перестал выводиться список заблокированных и чистых объявлений. Ещё до обновления на новую версию. Где искать причину, как поправить?

        Спасибо, что добавили статистику. Без неё вообще было не понятно, происходит проверка или нет. А так по показателю хотя бы видно, что он всё-таки работает.

        При обновлении скрипта обратил внимание, что можно этот процесс значительнее упростить. Можно было бы создать папку user_config, а туда положить всё что не нужно заменять. А в новой версии скрипта не класть эту папку совсем, как и не класть tempdata. (А если кто-то скачал для новой установки — эти папки ведь можно создать с помощью php). Тогда можно смело при обновлении просто перезаписывать все файлы, не думая какие папки не затирать.

        • Похоже это было из-за включенного adblock. Сейчас показывает.

  24. Дмитрий

    14.12.2017 at 19:42

    После работы программы не выяснено по каким причинам и после каких действий список стоп-слов заменяется на список рандомных ссылок. Есть ли догадки у автора?)

    • Георгий

      17.12.2017 at 17:52

      Автоматически чтоли?
      В любом случае без понятия как это.
      Этот список записывается только по нажатию кнопки сохранения, другие процессы туда не пишут вообще.

      • Дмитрий

        17.12.2017 at 21:22

        Да, причем без разницы на каком браузере открываешь страницу с запуском скрипта, да и как вообще браузер может влиять на изменение списка стоп-слов, возможно на сервере что-то не так) вообщем поищу сам тогда, пока каждый раз перезаписываю файл вручную

        • Георгий

          17.12.2017 at 23:05

          Да, чем смотрите значения не имеет. Не могли бы Вы мне архив без личных данных отправить на почту в статье указанную?
          Ну и можно чистую версию поставить рядом и посмотреть что там будет.

  25. Аноним

    21.12.2017 at 22:44

    Просто ставьте пароль на доступ и многие проблемы отпадут.

  26. Георгий

    07.01.2018 at 18:13

    Илья, на данный момент не горю желанием переделывать систему обновлений, ведь основная отладочная часть сделана, почти у всех всё работает, уже не будет такого большого количества новых версий в единицу времени.

  27. Сергей

    12.01.2018 at 23:09

    Спасибо за полезный инструмент. Как можно пройтись вашим фильтром по уже проверенным объявлениям (Проверенные. Объявления, которые вы проверили.), если я до установки вашего скрипта уже одобрил пару тысяч объявлений?

    • Георгий

      14.01.2018 at 02:50

      С помощью галки «Check reviewed ads» и либо выставления большого количества проверенных (те самые пару тысяч), либо (если сервер не успевает до ограничения по времени) через запуск циклов. Поставить по 20 штук, например, и 100 циклов.

  28. Игорь

    14.01.2018 at 21:11

    Здравствуйте, для чего нужна функция «Go Round»?

    • Георгий

      17.01.2018 at 19:06

      Приветствую!

      Это отдельная программа для обхода списка адресов. Помогало чтобы объявления начинали показываться после недавной смены политике Google в области показа объявлений только на проверенных страницах.

  29. Сергей

    17.01.2018 at 19:25

    Start searching

    504 Gateway Time-out
    nginx-reuseport/1.13.4

    Переставлял скрипт и почистил заблокированные адвордс акки не помогло.

    • Георгий

      18.01.2018 at 10:23

      Снижайте кол-во страниц и объявлений за раз. Поставьте одну страницу и, например, 10 объявлений. Если пойдёт нормально — увеличивайте по 10 объявлений.

  30. Сергей

    18.01.2018 at 15:14

    Number of pages: 1
    Ads per page: 10
    Не помогло (

    • Сергей

      18.01.2018 at 23:50

      Нашел причину, если стоит галочка на Check by Searchwords то получаю 504 Gateway Time-out

  31. Артем

    23.01.2018 at 19:14

    Георгий, приветствую. Добавьте, пожалуйста, фичи, если можно:
    1. Пройтись по всем заблокированным объявлениям на основе списков слов и разблокировать их.
    2. Разблокировать все заблокированные объявления.
    3. Во вкладке «URL-адреса рекламодателя» разблокировать все URL.

    P.S. Прога — классная!

    • Георгий

      24.01.2018 at 10:12

      Артём, доброго дня.
      1. То есть разблокировать выборочно те, где встречаются определённые слова (и ещё один список под это дело)?
      2. Ясно.
      3. Над этим сам уже думал, что будет полезно.

      По мере появления времени и желания начну с третьего пункта, первых два обещать пока не буду.

      • Артем

        31.01.2018 at 12:24

        1. Можно по тем же самым спискам, можно дополнительно отдельный сделать.
        По неопытности можно просто накосячить и удалить годные объявления. А ручками восстанавливать долго.

  32. Александр

    26.01.2018 at 17:53

    Здравствуйте! Спасибо за такой скрипт и вашу работу!
    Задам возможно тупой вопрос, но никак не могу понять, над окном Clear какая функция ссылки «Delete all ads in this group» — она очищает только объявления со страницы, ничего при этом не блокируя, а блокировка происходит при «Update list» и при выполнении по крону?

    • Георгий

      26.01.2018 at 20:46

      Приветствую!
      «Delete all ads in this group» — она очищает только объявления со страницы, ничего при этом не блокируя. Верно. Это просто очистка отчёта.
      Блокировка происходит при выполнении либо вручную либо по планировщику.

      «Update lists» — это просто кнопка для сохранения списков со словами.

  33. Сергей

    29.01.2018 at 15:07

    Пишут про ваш скрипт, может Гугл научится у вас https://searchengines.guru/showpost.php?p=15452336&postcount=72

  34. Александр

    11.02.2018 at 10:14

    Про подписки, все здесь находящиеся, явно хорошо знают, кто-то даже вляпывался в это.
    Добавлю, что ни один оператор не блокирует навсегда возможность подписаться (ни устным, ни письменным заявлением). Есть только бесплатная услуга, позволяющая на срок 1-3 месяца включить блокировку таких подписок. Предоставляется это все в форме услуги, что самое интересное. То есть, это услуга на временную блокировку других услуг (подписок).
    Билайн, к слову, бесплатно предлагает открыть специальный счет для подписок и не пополнять его, такой вот костыль-блокировка от них (нет денег — нет подписок).
    Хотя, практически все здесь программисты и все понимают как это работает со стороны операторов и манипуляции с блокировками на подписки кажутся совсем бредом.

  35. Сергей

    14.03.2018 at 22:35

    Здравствуйте. Уважаемый разработчик скажите если я запустил по cron (панель vesta) вот такой командой:
    wget http://сайт.ру/z/search_bad_ads.php

    то проверка будет проходить автоматически и по параметрам которые указаны в скрипте? Если нет то как именно мне это сделать? Так профукал и получил фильтр от яндекса за то что он нашел платные подписки. Заранее спасибо.

    • Георгий

      24.03.2018 at 00:34

      Сергей, приветствую. Извините, что долго — не видел.

      Так должно работать только если не задан пароль на вход в панель настроек.

      Рекомендую как-нибудь так:
      */10 * * * * www-data /usr/bin/php /var/www/www-data/bad_ads_blocker/search_bad_ads.php

      Пользователя и пути, конечно, свои прописывайте.

  36. Алексей

    02.04.2018 at 18:33

    Здравствуйте. Подскажите, пожалуйста, есть ли эффект от Go Round. И второй вопрос: эта функция у меня не работает (зацикливается на 2-ом url). Я грешил на foreach на php7.0, но на 5.4 так же по кругу гоняет второй url из списка. В чем может быть проблема?

    • Георгий

      06.04.2018 at 11:33

      Приветствую!
      На счёт эффекта сложно однозначно сказать. Мне показалось, что был.
      Почему зацикливается пока что мыслей нет.

  37. Артур

    05.04.2018 at 16:05

    Здравствуйте Георгий,

    Скажите пожалуйста планируете ли вы сделать для ВП в стиле плагина ?

    И.. можно ли у вас на платной основе закзать установку данного скрипта?

    Спасибо

    • Георгий

      06.04.2018 at 11:34

      Приветствую!
      Нет.
      Да, могу помочь.

      • Артур

        09.04.2018 at 00:08

        Как с вами связаться ? Напишите мне на почту пожалуйста.

  38. Константин

    10.04.2018 at 14:57

    Здравствуйте! Подскажите, как использовать search_bad_ads.php под кроном, речь о параметрах, можно ли подтянуть настройки веб интерфейса? Как поставить в крон я знаю ;)
    Может есть документация по этому скрипту?

    • Георгий

      12.04.2018 at 11:29

      Документация есть, в ней написано. Смотрите выше.

  39. Сергей

    24.04.2018 at 20:18

    Георгий, Яшка банит за блок ссылок, лучше сними у себя.

    • Георгий

      24.04.2018 at 22:39

      Сергей, спасибо, но нет. Кстати, уже. ))
      Даже если и так, то не стану из-за этой глупости снимать их (ибо это вполне нормальная реклама, под меню и прочее они не маскируются и с элементами навигации их спутать невозможно).
      У меня пара осталась нетронута, там были блоки ссылок.

      • Сергей

        25.04.2018 at 14:10

        Тоже решил не прогибатся под яндекс. У меня блоки ссылок приносят при текущем трафике больше, чем обычные блоки Adsense и РСЯ без фильтров яшы.

  40. Павел

    10.05.2018 at 10:50

    а почему скрипт проверяет только по 20-50 объявлений а не все сразу?
    никак не могу понять что не так с настройками

    • Георгий

      15.07.2018 at 17:50

      Так вслепую не могу ничего сказать. Подробнее опишите, какие настройки стоят?

    • Георгий

      15.07.2018 at 17:51

      Извините, что спустя два месяца, только увидел.

  41. Валерий

    02.06.2018 at 20:29

    Георгий, приветствую, это Валерий, я уже общался с Вами и здесь и на форуме. Маненько задонатил за прогу. Жил до этого момента припеваючи, не парясь за гугл. И вот перешел на пхп7 и сказка окончилась. Не могу законектиться к гуглу никак. Подскажите эту проблему решить невозможно?

    • Георгий

      15.07.2018 at 17:53

      Валерий, приветствую!
      Спасибо! :)
      Не думаю, всё решаемо. Пришлите протоколы работы — буду разбираться. Авторизация не работает? Или в каком смысле?

  42. Сергей

    13.07.2018 at 16:01

    Today earnings не работает

    • Георгий

      15.07.2018 at 17:53

      Да, было такое. В версии 3.10 исправлено (скоро выложу).

  43. Александр

    27.08.2018 at 21:31

    Здравствуйте.
    Спасибо за ваш софт и обновления.
    Насчет как раз обновлений, абсолютно как рекомендация к улучшению — не могли бы вы вести хронологию обновлений, писать рядом с версией и описанием того что входит в него, помимо всего этого дату обновления (в левом верхнем углу версия как то после пары обновлений была одна и та же). А вообще было бы классно и рассылку делать на почты, я бы и рекламу какую-нибудь ради такого потерпел.
    Также остро стоит вопрос с «смотреть видео» и все что с этим связано. Это какой то прикол, что он ни в какую не блокируется даже по слову «видео», я бы и рекламой М-видео пожертвовал, чтобы от этой заразы избавиться)

    • Георгий

      04.09.2018 at 23:40

      Александр, приветствую.

      Постараюсь не забыть добавлять и дату. В имеющихся дописывать не буду.
      С рассылкой заморачиваться не хочется, но идея хорошая, людям было бы удобно. Я подумаю над этим, спасибо.

      Про «смотреть видео» — не понял. У меня они все прекрасно блокируются. Что текстовые, что медийные. Подробнее, пожалуйста, что и как делали для блокировки.

      • Александр

        07.09.2018 at 23:09

        «Про «смотреть видео» — не понял»
        Поигрался с настройками и вроде стало блокироваться)

  44. v4.1 Mark reviewed as reviewed не работает, не отмечает просмотренные

    • Георгий

      04.09.2018 at 23:37

      Прошу прощения, только увидел. В каком ЦПО?
      И в версии 4.2 случайно не исправилось это? )

      • нет, в последней версии по прежнему не работает.
        ЗЫ Включите подписку на комментарии по имейл

        • Георгий

          29.09.2018 at 16:58

          Прошу прощения, что снова долго.
          Шлите протоколы по описанной схеме — буду разбираться.

  45. Сергей, здарова! ты ведешь себя как шлюха.Сделать скрипт для людей и брать за это деньги)) аххаа! ты отличный еврей с компексами неполноценности и мне кажется твоя мать шлюха)

  46. Дмитрий

    17.09.2018 at 13:12

    Добрый день,

    а сделайте, пожалуйста, минимальную авторизацию (логин, пароль md5), а потом доступ к функционалу. Хотелось бы положить скрипт на субдомен и не париться. Спасибо.

  47. Было бы замечательно увидеть более детальные описания ошибок — не совсем понятно куда копать?

    Попробовал запустить на VPS
    как с вкл. так и выкл. двухфакторкой (телефон в акк добавлен)
    Captcha is. Try to add phone number to your Google account.

    На локальном XAMPP
    Error: empty first answer. It could be DNS fail…

    Тут как-то совсем непонятно, что делать.

    • Георгий

      09.10.2018 at 17:36

      Ну эти ошибки больше для меня, чем для пользователя, подробнее описывать не вижу смысла, так как это всё равно не поможет пользователю.
      Error: empty first answer. It could be DNS fail… — значит curl не работает правильно. На Win x64 такое бывало.
      Пришлите мне, пожалуйста, протоколы работы с VPS. Быть может найду время и добавлю обработку «Captcha is», чтобы можно было ввести символы с картинки. У самого такого не возникает и нет возможности толково отладить это дело.

      А на локальном Open SErver попробуйте.

      • Георгий, спасибо за ответ — понятно что проект «для себя», но раз уж вы его «прорекламировали» на хабре, ожидания были высокие . XAMPP действительно работает на Win x64, но раньше с курлом проблем вроде не было. Попробую разобраться когда будет время. Если найду что интересное, отпишу вам в гитхаб проекта.

        • Георгий

          18.10.2018 at 01:50

          Не-не, не проект «для себя», а сообщения об ошибках. Проект — людям, информация краткая об ошибках — мне. Пока для себя было мне вообще не нужны были эти ошибки и протоколы. Ибо с ошибками борюсь я и я понимаю когда какая ошибка возникает, а углублять в технические подробности пользователей не считаю нужным без их просьбы на то. Если кому что интересно — могу рассказать отдельно. С некоторыми серверами под Win x64 есть проблемы с cURL. поковырял это дело немного, ничего толкового не нашёл и забил. Так что тут у меня по-прежнему только одно решение Open Server.
          Возможно, я как-то криво cURL использую, что именно моё ПО не работает у ряда пользователей с x64. Спасибо заранее, если удастся выяснить причину.

          Рад, что «реклама» на Хабре «зашла»! =)

  48. Дмитрий

    17.10.2018 at 00:10

    При попытке авторизоваться, вижу такое: Captcha is. Try to add phone number to your Google account.
    Что делать с тим не знаю (
    Прошу помощи.

    • Георгий

      18.10.2018 at 01:38

      Дмитрий, шлите протоколы, по ним буду писать решение такой проблемы. Уже неоднократно люди обращались.

  49. роман

    01.11.2018 at 17:44

    зачем рекламить не рабочий скрипт
    Captcha is. Try to add phone number to your Google account.

Добавить комментарий

Ваша почта не будет опубликована.