Remove fake links 0.1.9 (2012-10-16)
Автор: Infocatcher
Описание: удаляет перенаправляющие ссылки на Google и Yandex.
Например, при нажатии мыши ссылки в результатах поиска в Yandex заменяются на http://clck.yandex.ru/redir/... , а в Google – на http://www.google.ru/url?...
Установить: remove_fake_links.user.js
Код скрипта:
// ==UserScript== // @name Remove fake links // @description Remove tracking redirects like http://www.google.com/url?... and http://clck.yandex.ru/redir/... // @author Infocatcher // @version 0.1.9 - 2012-10-16 // @run-at document-start // @namespace dev/null // @include http://www.google.*/search?* // @include https://www.google.*/search?* // @include http://www.google.*/webhp?* // @include https://www.google.*/webhp?* // @include http://www.google.*/#*q=* // @include https://www.google.*/#*q=* // @include http://www.google.*/imgres?* // @include https://www.google.*/imgres?* // @include http://groups.google.com/* // @include https://groups.google.com/* // @include http://yandex.*/yandsearch?* // @include https://yandex.*/yandsearch?* // @include http://market.yandex.ru/model.xml?* // @include https://market.yandex.ru/model.xml?* // @grant none // ==/UserScript== window.addEventListener("mousedown", function(e) { var exclude; // Uncomment following to leave "Warning - visiting this web site may harm your computer!" //exclude = /^https?:\/\/(?:www\.)google\.[\w.]+\/interstitial\?url=http\S+$/; for(var a = e.target; a && a.localName; a = a.parentNode) { if(a.localName.toLowerCase() == "a" && a.href) { if(a.hasAttribute("onmousedown")) { a.setAttribute("__deleted__onmousedown", a.getAttribute("onmousedown")); a.removeAttribute("onmousedown"); } if(a.hasAttribute("onclick")) { var onclick = a.getAttribute("onclick"); if(/(^|\W)location\.replace\(/.test(onclick)) { a.setAttribute("__deleted__onclick", onclick); a.removeAttribute("onclick"); } } if(exclude && exclude.test(a.href)) break; else if(/^https?:\/\/(?:\w+\.)?google\.[\w.]+\/.*=(https?:\/\/[^&?]*)/.test(a.href)) { var h = RegExp.$1; if(!/^https?:\/\/(?:\w+\.)?google\.[\w.]+\/(search|imgres)\?/.test(a.href)) a.href = decodeURIComponent(h); } else if(/^https?:\/\/clck\.yandex\.\w+\/redir\/.*?\*(https?:\/\/.*)$/.test(a.href)) a.href = RegExp.$1; break; } } }, true);
Разрабатываемая версия (будьте осторожны!)
Отредактировано Infocatcher (19-04-2013 22:45:55)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
потому что URL имеет вид google.*/webhp? вместо google.*/search?
Угу. Добавил
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Спасибо. А расширение Паланта я посмотрел - оно на той странице правильно срабатывает. Полез смотреть код, т.к. думал, что это дополнение - обёрнутый в джетпак юзерскрипт, а код там совсем не как у юзерскриптов, так что понять разницу в работе этого скрипта и джетпака от Паланта - мне не удалось.
Отредактировано _iD (07-09-2012 17:41:09)
Отсутствует
Есть еще
https://encrypted.google.com/*
(без всяких search? и webhp?)
И для него RegExp нужно переписать - недостаточно просто добавить @include
Кроме того, imho, может быть ситуация
http://google.*/
то есть без www.
И .test со странностями работает в отличие от .search
Отредактировано Почемучкин (16-12-2012 00:10:26)
Отсутствует
без всяких search?
Если отключить скрипты, будет https://encrypted.google.com/search?...
Добавил
Только там экспериментальная версия, обрабатывающая дополнительно "mouseover" и "focus" (то есть при наведении курсора в строке состояния будет показана уже очищенная ссылка, и можно открывать ссылки с клавиатуры).
И для него RegExp нужно переписать
Эээ... А что конкретно не так?
http://google.*/
то есть без www.
У меня всегда перенаправляет на www.
И .test со странностями работает в отличие от .search
Примеры?
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher, Это эти скрипты?
Отсутствует
amin01
Да, они самые.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
>> И .test со странностями работает в отличие от .search
> Примеры?
При проверке в цикле с помощью .test были глюки. Я не стал разбираться абсолютно до конца в чем дело было, вернувшись к проверенному .search, но похоже, что RegExp запоминал позицию и при следующем вызове .test мог что-то пропустить. С .search такого не случается никогда.
Отсутствует
Почемучкин
А не надо использовать для проверки регулярные выражения с флагом g.
var s = "0123456789"; var r = /\d/; var res = []; for(var i = 0; i < 10; ++i) if(r.test(s)) res.push(RegExp.lastMatch); alert(res.join("\n")); r = /\d/g; res = []; for(var i = 0; i < 10; ++i) if(r.test(s)) res.push(RegExp.lastMatch); alert(res.join("\n"));
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Ясно. Я кажется припоминаю, что хотел использовать одни и те же RegExp для проверки и для замены подстроки. С .test это глючило, да, кажется именно из-за флага /g
Отсутствует
Почемучкин
Ну, это скорее так и задумано, чем «глючило».
Можно вот так сделать:
var s = "0123456789"; var r = /\d/g; var res = []; for(var i = 0; i < 10; ++i) { r.lastIndex = 0; if(r.test(s)) res.push(RegExp.lastMatch); } alert(res.join("\n"));
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Здравствуйте.
Версия 0.2.0pre12 - 2015-01-19 в поиске на www.google.com также "очищает" кнопку логина в аккаунт:
и ссылки "перевести эту страницу":
И спасибо вам за скрипт.
(еще хотелка: нельзя ли добавить поддержку DuckDuckGo? Того что duckduckgo.com, а не duckduckgo.com/html/ (последний таким не балуется). Пример ссылки из результатов поиска:
https://duckduckgo.com/l/?kh=-1&uddg=http%3A%2F%2Fwww.test-search.com%2F)
Отсутствует
Infocatcher
Спасибо вам за скрипт. Но вот попался мне скрипт Straight Google, там вроде ссылок по более, и есть youtube.com. Может стоило бы учесть их.
Отсутствует
в поиске на www.google.com также "очищает" кнопку логина в аккаунт
...
и ссылки "перевести эту страницу"
Подправил: https://github.com/Infocatcher/UserScri … 9b5f1f55fd
(еще хотелка: нельзя ли добавить поддержку DuckDuckGo? Того что duckduckgo.com, а не duckduckgo.com/html/ (последний таким не балуется). Пример ссылки из результатов поиска:
https://duckduckgo.com/l/?kh=-1&uddg=http%3A%2F%2Fwww.test-search.com%2F)
Я посмотрю.
Но вот попался мне скрипт Straight Google, там вроде ссылок по более, и есть youtube.com. Может стоило бы учесть их.
Там много всего... лучше реальные примеры смотреть.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
(еще хотелка: нельзя ли добавить поддержку DuckDuckGo? Того что duckduckgo.com, а не duckduckgo.com/html/ (последний таким не балуется). Пример ссылки из результатов поиска:
https://duckduckgo.com/l/?kh=-1&uddg=http%3A%2F%2Fwww.test-search.com%2F)
Вроде, получилось, но пришлось порезать местный код, навешивающий редиректы: https://github.com/Infocatcher/UserScri … 7a91613ee2
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Поправьте, пожалуйста, работу версии, находящейся в разработке, с яндексом. Если адрес начинается с www, то скрипт не подключается (https://www.yandex.ru/)
Спасибо, подправил: https://github.com/Infocatcher/UserScri … 503a773872
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Подскажите пожалуйста, как можно скачать файл с гитхаба? Пробовал скачивать, переименовывать в .js и редактировать текстовым редактором (удалить лишнее в шапке и внизу). Так всё открывается с html-тегами. Три раза попробовал.. так и не увидел ни строки..
Отсутствует
Отсутствует
На 4pda ссылка для входа режется.
Подправил, спасибо: https://github.com/Infocatcher/UserScri … 6c755d1a89
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует