Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как Google маскирует настоящие URL-адреса ссылок на страницах результатов поиска?

Автор вопроса: HartleySanОтветов: 3

Следующее я тестировал в последних версиях Chrome и Firefox, а также в IE11, и результаты были такими же.

Если вы выполняете поиск в Google, а затем наводите указатель мыши на ссылку на странице результатов поиска, ссылка, отображаемая в нижнем левом углу окна браузера, не совпадает с фактическим href элемента a.
Во всех трех случаях В браузерах, в которых я тестировал это, если вы проверите ссылку в инспекторе элементов, вы можете легко увидеть реальную ссылку (которая ведет к www.google.com), а пока инспектор открыт, если вы снова наведете указатель мыши на ссылку, вы увидите увидеть реальную ссылку URL в левом нижнем углу окна браузера.

У меня есть два вопроса относительно этого поведения?

  1. Хотя, возможно, немного наивно спрашивать, почему Google это делает?
  2. Как Google это делает? Поскольку я видел такое поведение в Chrome, Firefox и IE11, я думаю, что это какое-то поведение, контролируемое JavaScript (в отличие от поведения, контролируемого браузером), но я никогда не слышал, чтобы такое было возможно в JavaScript. Если это возможно в JavaScript, как вы это делаете?

Спасибо.

  • Когда я навожу курсор на ссылку с открытым инспектором, я все еще вижу URL-адрес www.google.com в углу браузера. Barmar 20.11.2013
  • +1 для Бармара. Я вижу такое же поведение. Chandranshu 20.11.2013
  • Да, вы оба правы. Как я прокомментировал в ответе PoByPobel, мне сначала не пришло в голову, что щелчок правой кнопкой мыши по ссылке для открытия проверки вызывает событие onmousedown и запуск функции rwt. Спасибо за указание на это. HartleySan 20.11.2013

urljavascriptgoogle-searchhrefweb-inspector

Ответы

Ответ 1 · рейтинг 12 · PoByBolek

Посмотрите на начальную разметку:

<a onmousedown="return rwt(this,'','','','3','AFQjCNF8xnW_qOvuZURbtcZUvB6zhKtRQw','35cXyZwuoZY8hBY1VfDr8Q','0CEAQFjAC','','',event)"
      href="http://en.wikipedia.org/wiki/How_Do_You_Do_It%3F">
   <em>How Do You Do It</em>? - Wikipedia, the free encyclopedia
</a>

Первоначально атрибут href показывает "настоящий" URL. Но когда вы нажимаете на ссылку, функция rwt меняет значение атрибута на

http://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&ved=0CEAQFjAC&url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHow_Do_You_Do_It%253F&ei=8nSMUqXtLKfe4QSzwIDADQ&usg=AFQjCNF8xnW_qOvuZURbtcZUvB6zhKtRQw&sig2=35cXyZwuoZY8hBY1VfDr8Q&bvm=bv.56643336,d.bGE

Чтобы ответить на ваш вопрос: они используют атрибут onmousedown для изменения атрибута href ссылки при нажатии на нее. Бармар указывает, почему они это делают.

Ответ 2 · рейтинг 2 · Barmar

Ссылка на странице результатов указывает на страницу перенаправления на сервере Google. Они делают это, чтобы отслеживать, по каким ссылкам нажимают люди. Это более надежно, чем использование Javascript, поскольку не требует от пользователей включения Javascript.

Вы можете увидеть конечную цель ссылки в параметре url URL-адреса.

Ответ 3 · рейтинг 1 · HaNdTriX

Когда пользователь щелкает href, обработчик события onmousedown запускается до того, как сработает поведение по умолчанию. Этот временной интервал используется для изменения href тега привязки.

Посмотрите на эту упрощенную версию их кода:

<a
  href="https://www.google.com/"
  data-href='https://www.yahoo.com/'
  onmousedown="this.href = this.dataset.href"
>Link</a>

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы