Google Direct Links for Pages and Images

direct links to web pages and images from Google result.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

You will need to install an extension such as Tampermonkey to install this script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @namespace          https://greasyfork.org/en/users/794317-colar
// @name               Google Direct Links for Pages and Images
// @name:fr            Google Liens Directs vers Pages et Images
// @name:zh-CN         Google 直链搜索结果网页及图片
// @name:zh-TW         Google 直鏈搜尋結果網頁及圖片
// @description        direct links to web pages and images from Google result.
// @description:fr     liens directs vers les pages web et les images des résultats Google.
// @description:zh-CN  令 Google 直接链接至搜索结果网页以及图片,跳过重定向及图片预览。
// @description:zh-TW  令 Google 直接鏈接至搜尋結果網頁以及圖片,跳過重定向及圖片預覽。
// @homepageURL        https://greasyfork.org/scripts/429493
// @license            GNU GPL-3
// @author             Colar & VA
// @version            1.1.20210716
// @grant              GM.getValue
// @grant              GM.setValue
// @grant              GM_getValue
// @grant              GM_setValue
// @grant              unsafeWindow
// @include            /^https?://(?:www|encrypted|ipv[46])\.google\.[^/]+/(?:$|[#?]|search|webhp|imgres)/
// @match              https://news.google.com/*
// @match              https://cse.google.com/cse/*
// @run-at             document-start
// @icon               data:image/png;base64,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
// ==/UserScript==

document.addEventListener('DOMContentLoaded', function () {
  var style = document.createElement('style');
  style.textContent = 'a.x_source_link {' + [
    'line-height: 1.0', // increment the number for a taller thumbnail info-bar
    'text-decoration: none !important',
    'color: inherit !important',
    'display: block !important'
  ].join(';') + '}';
  document.head.appendChild(style);
}, true);

var M = (typeof GM !== 'undefined') ? GM : {
  getValue: function (name, alt) {
    var value = GM_getValue(name, alt);
    return { then: function (callback) { callback(value); } };
  },
  setValue: function (name, value) {
    GM_setValue(name, value);
    return { then: function (callback) { callback(); } };
  }
};

function getOption() {
  var opt_noopen = false;
  // For example: open https://ipv4.google.com/#x-option:open-inplace
  switch (location.hash) {
    // Open links in the current tab.
    case '#x-option:open-inplace': opt_noopen = true; break;
    // Do not ...
    case '#x-option:no-open-inplace': opt_noopen = false; break;
    default: return M.getValue('opt_noopen', opt_noopen);
  }
  M.setValue('opt_noopen', opt_noopen);
  return { then: function (callback) { callback(opt_noopen); } };
}

function unsafeEval(func, opt) {
  let body = 'return (' + func + ').apply(this, arguments)';
  unsafeWindow.Function(body).call(unsafeWindow, opt);
}

getOption().then(function run(opt_noopen) {
unsafeEval(function (opt_noopen) {

var debug = false;
var count = 0;

var options = {noopen: opt_noopen};
debug && console.log('Options:', options);

// web pages: url?url=
// images: imgres?imgurl=
// custom search engine: url?q=
// malware: interstitial?url=
var re = /\b(url|imgres)\?.*?\b(?:url|imgurl|q)=(https?\b[^&#]+)/i;
var restore = function (link, url) {
  var oldUrl = link.getAttribute('href') || '';
  var newUrl = url || oldUrl;
  var matches = newUrl.match(re);
  if (matches) {
    debug && console.log('restoring', link._x_id, newUrl);
    link.setAttribute('href', decodeURIComponent(matches[2]));
    enhanceLink(link);
    if (matches[1] === 'imgres') {
      if (link.querySelector('img[src^="data:"]')) {
        link._x_href = newUrl;
      }
      enhanceThumbnail(link, newUrl);
    }
  } else if (url != null) {
    link.setAttribute('href', newUrl);
  }
};

var purifyLink = function (a) {
  if (/\brwt\(/.test(a.getAttribute('onmousedown'))) {
    a.removeAttribute('onmousedown');
  }
  if (a.parentElement &&
      /\bclick\b/.test(a.parentElement.getAttribute('jsaction') || '')) {
    a.addEventListener('click', function (e) {
      e.stopImmediatePropagation();
      e.stopPropagation();
    }, true);
  }
};

var enhanceLink = function (a) {
  purifyLink(a);
  a.setAttribute('rel', 'noreferrer');
  a.setAttribute('referrerpolicy', 'no-referrer');
  if (options.noopen) {
    a.setAttribute('target', '_self');
    a.addEventListener('click', function (event) {
      event.stopImmediatePropagation();
      event.stopPropagation();
    }, true);
  }
};

var enhanceThumbnail = function (link, url) {
  // make thumbnail info-bar clickable
  var infos = [].slice.call(link.querySelectorAll('img~div'));
  if (infos.length > 0) {
    var pageUrl = decodeURIComponent(url.match(/[?&]imgrefurl=([^&#]+)/)[1]);
    infos.forEach(function (info) {
      var pagelink = document.createElement('a');
      enhanceLink(pagelink);
      pagelink.href = pageUrl;
      pagelink.className = 'x_source_link';
      pagelink.textContent = info.textContent;
      info.textContent = '';
      info.appendChild(pagelink);
    });
  }
};

var fakeLink = document.createElement('a');
var normalizeUrl = function (url) {
  fakeLink.href = url;
  return fakeLink.href;
};

var setter = function (v) {
  v = String(v); // in case an object is passed by clever Google
  debug && console.log('State:', document.readyState);
  debug && console.log('set', this._x_id, this.getAttribute('href'), v);
  restore(this, v);
};
var getter = function () {
  debug && console.log('get', this._x_id, this.getAttribute('href'));
  return normalizeUrl(this._x_href || this.getAttribute('href'));
};
var blocker = function (event) {
  event.stopPropagation();
  restore(this);
  debug && console.log('block', this._x_id, this.getAttribute('href'));
};

var handler = function (a) {
  if (a._x_id) {
    restore(a);
    return;
  }
  a._x_id = ++count;
  debug && a.setAttribute('x-id', a._x_id);
  if (Object.defineProperty) {
    debug && console.log('define property', a._x_id);
    Object.defineProperty(a, 'href', {get: getter, set: setter});
  } else if (a.__defineSetter__) {
    debug && console.log('define getter', a._x_id);
    a.__defineSetter__('href', setter);
    a.__defineGetter__('href', getter);
  } else {
    debug && console.log('define listener', a._x_id);
    a.onmouseenter = a.onmousemove = a.onmouseup = a.onmousedown =
      a.ondbclick = a.onclick = a.oncontextmenu = blocker;
  }
  if (/^_(?:blank|self)$/.test(a.getAttribute('target')) ||
      /\brwt\(/.test(a.getAttribute('onmousedown')) ||
      /\bmouse/.test(a.getAttribute('jsaction')) ||
      /\bclick\b/.test(a.parentElement.getAttribute('jsaction'))) {
    enhanceLink(a);
  }
  restore(a);
};

var checkNewNodes = function (mutations) {
  debug && console.log('State:', document.readyState);
  if (mutations.target) {
    checkAttribute(mutations);
  } else {
    mutations.forEach && mutations.forEach(checkAttribute);
  }
};
var checkAttribute = function (mutation) {
  var target = mutation.target;
  if (target && target.nodeName.toUpperCase() === 'A') {
    if ((mutation.attributeName || mutation.attrName) === 'href') {
      debug && console.log('restore attribute', target._x_id, target.getAttribute('href'));
    }
    handler(target);
  } else if (target instanceof Element) {
    [].slice.call(target.querySelectorAll('a')).forEach(handler);
  }
};

var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;

if (MutationObserver) {
  debug && console.log('MutationObserver: true');
  new MutationObserver(checkNewNodes).observe(document.documentElement, {
    childList: true,
    attributes: true,
    attributeFilter: ['href'],
    subtree: true
  });
} else {
  debug && console.log('MutationEvent: true');
  document.addEventListener('DOMAttrModified', checkAttribute, false);
  document.addEventListener('DOMNodeInserted', checkNewNodes, false);
}

}, opt_noopen);
});