JavaScript Google AdSense вызывает загрузку нескольких страниц?

Обновление

Хорошо - теперь я знаю, откуда происходит загрузка нескольких страниц! (Однако загадка еще не разгадана) .

Кажется, что сразу после делается запрос к странице, содержащей рекламу AdSense, Google делает запрос точно такой же URL (один или несколько раз)

например вот как выглядят журналы (обратите внимание на запросы от Mediapartners-Google):

2011-07-20 09:50:20 xxx.xxx.xxx.xxx GET /requestedURL/ 80 - xxx.xxx.xxx.xxx Mozilla/5.0+(Browserstring removed) 200 0 0 1140
2011-07-20 09:50:20 xxx.xxx.xxx.xxx GET /requestedURL/ 80 - 66.249.72.52 Mediapartners-Google 200 0 64 218
2011-07-20 09:50:22 xxx.xxx.xxx.xxx GET /requestedURL/ 80 - 66.249.72.52 Mediapartners-Google 200 0 0 171

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

Итак, теперь вопрос о награде становится следующим:

  • Почему Google делает эти запросы такими быстро после запроса страницы? (Я знаю, что им нужно оценить страницу на предмет содержания, но сразу, после, и несколько раз воспринимает меня как оскорбление.)
  • Что я могу сделать, чтобы это остановить?

И ради интереса:

  • Кто-нибудь еще видел что-то подобное в своих журналах? (или это что-то странное с моей учетной записью AdSense)

Хорошо, я заранее извиняюсь за длину! ...

Этот вопрос адресован этому , относительно Код Google AdSense Javascript вызывает ошибки . (формы Невозможно отправить сообщение на googleads.g.doubleclick.net. У получателя есть источник something.com )

Я не буду дублировать всю информацию там, но вывод вроде бы что в AdSense JS есть ошибки. (пожалуйста, прочтите вопрос, если у вас есть время). Я знал об этой проблеме в течение некоторого времени, но решил жить с ошибками JS, а не извлекать AdSense с сайта.

Однако , Недавно я заметил, что в моем приложении ASP.NET MVC2 действия контроллера казалось, что вызывается дважды на запрос страницы (иногда даже 3 раза). Как ни странно, это происходило только на рабочем сервере. Поразмыслив, я сообщил, что одно различие между средой разработки и производственной средой заключалось в том, что скрипт JavaScript AdSense был активен только в рабочей среде.

Чтобы проверить это, я удалил весь код AdSense с одной из рабочих страниц, и вот только вот, проблема с загрузкой нескольких страниц исчезла!

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

Одна из известных ситуаций, когда страницы могут быть вызваны несколько раз за запрос, - это когда есть тегов изображений с пустыми атрибутами src или ссылки на внешние ресурсы с пустыми атрибутами src. Важно отметить, что в ответе на AdSense JS Bug , получившем наибольшее количество голосов, отмечается, что:

«Аргумент targetOrigin в этом вызове this.la установлен на http://googleads.g.doubleclick.net . Однако новый iframe был написано с его src, установленным на about: blank. "

Это выглядит устрашающе похожим на проблему с пустым src .... Это кажется слишком частым совпадением, и в настоящее время я ' м мнения, что в этом проблема. [РЕДАКТИРОВАТЬ: Это отвлекающий маневр]

Однако я понятия не имею, что нам нужно делать дальше. Эти множественные вызовы действий вызывают реальные проблемы (мне приходится использовать блокировку кода, сериализованные транзакции и всевозможные противные хаки, чтобы ограничить неблагоприятные эффекты). Конечно, я мог полностью выкопать не то дерево - меня озадачило, что я не могу найти никаких других ссылок на это, учитывая повсеместность AdSense и характер проблемы (но опять же выводы AdSense JS Bug вопрос тоже вызывает удивление). Я бы хотел, чтобы это оказалось моей глупой ошибкой, поэтому мне нужна проверка на вменяемость.

Я хотел бы спросить сообщество:

  • Кто-нибудь еще сталкивался с этой проблемой? Или может ли кто-нибудь, кто использует AdSense, повторить и подтвердить ее? [См. Примечание ниже]
  • Если проблема заключается в том, что кажется, что я могу сделать?(кроме использования AdSense, конечно)
  • Если нет, то что может быть причиной этого?

Резюмируем: - Мои действия выполняются 2 (иногда 3) раза на запрос страницы.

  • ЭТО ПРОИСХОДИТ ТОЛЬКО ПРИ НАЛИЧИИ РЕКЛАМЫ GOOGLE ADSENSE
  • Я удалил весь JS AdSense и ввел ошибку в свой собственный JS: действия вызываются только один раз ...
  • Аналогичная проблема может возникнуть, когда на странице присутствуют пустые свойства src
  • В ответе на предыдущий вопрос говорится, что AdSense JS устанавливает src = "about: blank" на iFrame
  • Я пришел к выводу, что src = "about: blank" из кода AdSense является наиболее вероятным источником проблемы.
  • Если я отключу JavaScript в браузере, проблема уходит

Просто чтобы задокументировать вещи, которые я исключил:

  • Это происходит в браузерах: Chrome (12), Firefox (5) и IE (8).
  • Я отключил все плагины в браузерах (YSlow, Firebug и т. Д.)
  • Нет пустого src ( src = "" / src = "#" ) для изображений или других внешних ресурсов в html в моем коде
  • Ther e не являются пустыми ссылками на URL в css ( url ('') )
  • Это вряд ли проблема кода / конфигурации на стороне сервера, поскольку этого не происходит в Dev (и из-за нескольких отличий Между разработкой и производством отсутствует AdSence JS в Dev)

Примечание: Для всех, кто хочет воспроизвести это, следует отметить, что, как ни странно, когда происходит несколько вызовов действий, Fiddler показывает только один запрос, отправляемый на сервер. Я понятия не имею, почему это должно быть так, но ведение журнала сервера не лжет :) Возможно, кто-то, у кого есть предыдущий опыт решения этой проблемы, вызванной пустыми атрибутами src в тегах img, может сказать, видели ли они такое же поведение с Fiddler .


Запрошенная дополнительная информация

HTML (@Ivan)

Вот как я реализую AdSense (идентификаторы удалены)

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%if (!HttpContext.Current.IsDebuggingEnabled) { %> <%} else { %> <%} %>

Это вставляется RenderPartial в представление:

<% Html.RenderPartial("AdSense_XXXXXX"); %>

TCP Logging ( @Tomas)

Пока что я сделал захват wirehark:

  1. на клиенте при запросе страницы на production с проблемой
  2. на клиенте при запросе страницы на production без проблем (т.е. AdSense удален)

я не вижу существенной разницы между ними (хотя мои навыки работы с сетью невелики). Следует отметить, что они оба , похоже, имеют повторную передачу TCP HTTP-запроса сразу после первоначального запроса - я не знаю значения этого. Тем не менее, я могу подтвердить, что в случае 1 журналы сервера сообщили о двух выполнениях, а в случае 2 - только об одном выполнении.

Затем я попробую вести журнал TCP на стороне сервера в обоих случаях и опубликую здесь результаты.

12
задан 17 revs 23 May 2017 в 12:09
поделиться