Как отключить перенаправление ссылки на результат поиска Google (при щелчке правой кнопкой мыши) в Chrome?

22

При входе в Google результаты поиска Google перенаправляются (для целей отслеживания и т. Д.). Это раздражает, так как нелегко скопировать / вставить URL, не посещая сайт. Если бы не было перенаправления, я бы просто щелкнул правой кнопкой мыши ссылку в результатах поиска и выбрал «Скопировать адрес ссылки». Теперь он изменен некоторым кодом JavaScript Google, который отслеживает щелчок правой кнопкой мыши.

Как это можно отключить в Chrome? Я думаю, что раньше было расширение Chrome для него, но, похоже, больше не работает.

Rabarberski
источник
Какова цель вашего щелчка правой кнопкой мыши?
Бениамин
4
@ Beniamin: как сказано в моем вопросе: «скопировать [вставить] URL». Я просто хочу получить URL (например, для вставки в отчет и т. Д.)
Рабарберски,
4
К вашему сведению: просто выделение текста курсором и нажатие ctrl-c - не всегда вариант, потому что Google объединяет длинные URL-адреса
Rabarberski
Хорошо. Но если щелкнуть правой кнопкой мыши ссылку, она изменится на ссылку отслеживания Google. Таким образом, вы не получите эту ссылку, если не откроете страницу, Google перенаправит вас на нужную страницу, и вы получите то, что хотите.
Бениамин
2
Вопрос именно в том, как этого избежать. (раньше было какое-то расширение chrome (больше не работает) и какой-то скрипт greasemonkey для firefox, но в прошлый раз, когда я проверял, у меня были некоторые проблемы с этим. Так, говоря: «Вы не получите эту ссылку, если не откроете страницу» не имеет смысла).
Рабарберски

Ответы:

7

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

Вот:

// ==UserScript==
// @name           Delete onmousedown
// @namespace      google
// @include        http://www.google.*/*
// ==/UserScript==
var runOnce = function(){
    var items = document.querySelectorAll('li.g h3.r a');
    for(var i = 0, len = items.length; i< len; i++){
        items[i].removeAttribute('onmousedown');
    }
}
document.body.appendChild(document.createElement("script")).innerHTML = "("+runOnce+")()";

Сохраните его как файл, который заканчивается на .user.js, и поместите его в Google Chrome, и дайте мне знать, если это помогло.

PS. Английский не мой разговорный язык, поэтому извините за недопонимание вас.

Изменить: я добавил дополнительную логику, чтобы она работала с Google Instant. Скажи мне, если это работает для тебя.

Изменить: Я откатился до версии "без" поддержки Google Instant.

Беньямин
источник
Спасибо за попытку. Я попробовал нечто подобное, однако, когда я перетаскиваю файл скрипта поверх Chrome, он открывается в браузере, показывая исходный код вместо установки скрипта.
Рабарберски
Попробуйте Ctrl + O, чтобы открыть файл. И вы уверены, что назвали это что-то вроде: google.user.js?
Бениамин
И я прочитал, что окно Chrome должно быть развернуто.
Бениамин
Или установите в Chrome какое-нибудь расширение в стиле greasemonkey. Это поможет вам установить скрипты, и скрипты greasemonkey должны работать. Например: chrome.google.com/webstore/detail/...
Беньямин
1
@Rabarberski, тогда вам придется прекратить использовать Google Instant.
Synetech
5

Попробуйте использовать расширение «Undirect» Chrome .

Он удаляет это отслеживание и перенаправление из результатов поиска Google. Поддерживает использование Google по HTTP и HTTPS.

fkpwolf
источник
3

Если вы используете Firefox , вам повезло, так как к вам относится следующий ответ. Если вы используете Chrome, вам гораздо меньше повезло, см. Нижнюю часть этого ответа.

Greasemonkey запускает пользовательские сценарии после загрузки DOM , поэтому вам не нужно реализовывать прослушиватель "DOM ready".

Также вы на Firefox, так что вы можете использовать некоторые современные конфеты: for...of, let.

Вот результирующий скрипт Greasemonkey:

// ==UserScript==
// @name        Remove Google redirects
// @namespace   google
// @description Remove redirects from Google Search result links.
// @include     https://www.google.*/*
// @version     1
// @grant       none
// ==/UserScript==

for (let element of document.querySelectorAll('#res .r > a')) {
    element.removeAttribute('onmousedown');
}

Благодаря letотсутствию локальных объявлений, поэтому вам не нужно заключать вышеуказанный код в IIFE .


Для несчастных пользователей Chrome (Tampermonkey):

Ссылки не найдены во время выполнения скрипта, хотя document.readyState === 'complete'... в результате вы должны реализовать некоторый цикл с таймером.

Таким образом, вы в конечном итоге:

// ==UserScript==
// @name        Remove Google redirects
// @namespace   google
// @description Remove redirects from Google Search result links.
// @include     https://www.google.*/*
// @version     1
// @grant       none
// ==/UserScript==

(function removeGoogleRedirects() {

    var links = document.querySelectorAll('#res .r > a');

    if (links.length === 0) {
        setTimeout(removeGoogleRedirects, 100);
        return;
    }

    for (var link of links) {
        link.removeAttribute('onmousedown');
    }

})();

Обновление за октябрь 2018 года.
Из-за изменения разметки на странице Google его h3.rнеобходимо изменить на div.r.
Я пошел дальше и заменил h3.r > aна #res .r > a(заменил «tag.class» просто на «.class», и добавил родителя в качестве безопасности, чтобы селектор не был слишком универсальным).

Гра двойной
источник
Взяв текст скрипта Firefox и добавив «javascript:» к его началу, а затем сделав из него букмарклет (ответ а-ля бобобо), я отлично сработал.
ojchase
0

Сценарий Бенджамина работает для меня, если я изменю селектор на: li.g div.vsc h3.r a

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

Google Tracking-B-Gone для Greasemonkey

Кай Карвер
источник
0

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

javascript: var items = document.getElementsByTagName('a');  for( var i = 0 ; i < items.length; i++ )  if( items[i].className=='l' )  items[i].onmousedown = null ;

Боже, эти люди - сатана, но я обновил сценарий, который дал Бениамин, работает на дату этого поста. Используйте этот трюк, чтобы облегчить, чтобы убедиться, что страница загружена перед удалением элементов их событий mousedown. Нужно использовать TamperMonkey, чтобы сделать эту работу.

// ==UserScript==
// @name           Delete onmousedown
// @namespace      google
// @version        0.1
// @description    Allows you to right click links on Google search results without having them mangled on you.
// @include          http://www.google.*/*
// ==/UserScript==
var tid = setInterval( function () {
    if ( document.readyState !== 'complete' ) return;

    var items = document.getElementsByTagName('a');

    var succeeded=false;
    for( var i = 0 ; i < items.length; i++ )
    {
      if( items[i].className=='l' )
      {
        if( items[i].onmousedown ) { succeeded=true; } // we stripped the urls
        items[i].onmousedown = null ;
      }
    }

    if( succeeded )  clearInterval( tid ); // stop invoking this routine when we succeeded.
}, 100 );
bobobobo
источник