2

Мне нравится Google с отключенным JavaScript. Раньше я делал это, добавляя оператор gbv=1 в мои строки поиска, но теперь Google добавил скрипт, который принудительно перезагружает страницу результатов поиска с параметром, измененным на gbv=2 , который включает JS.

В результате я начал блокировать скрипты в Google (используя расширение uBlock Origin). К сожалению, это отключает важную функцию: любые ссылки, которые я посещаю, только временно помечаются как посещенные на странице результатов. Если я перезагружаю страницу результатов или (в более реалистичном сценарии) сталкиваюсь с некоторыми из тех же результатов позже при выполнении нового поиска по несколько другим терминам, результаты, на которые я уже смотрел, такие же синие, как и те, которые я никогда не видел.

Похоже, это связано с тем, как Google перенаправляет результаты поиска. Например, сегодня я выполнил поиск "точка с запятой css", и URL второго результата отображался как

stackoverflow.com/questions/2406717/semicolon-in-css

Фактическая ссылка, однако, была

https://encrypted.google.com/url?q=http://stackoverflow.com/questions/2406717/semicolon-in-css&sa=U&ved=0ahUKEwiT0siQ567RAhWqj1QKHQWlDz8QFggbMAE&usg=AFQjCNFbK1Fld5AALqyb6B2c6Y0dFzvgIA

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

Для решения этой проблемы было создано несколько расширений и пользовательских скриптов , но все, что я обнаружил, предназначены для работы с включенным JavaScript (большинство из них, похоже, включают отключение события onmousedown, которое не / не может происходит, когда JS отключен).

Как я могу заставить Google показывать, какие ссылки я уже посетил?

1 ответ1

1

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

function revertURL() {
    var refs = document.querySelectorAll("h3.r > a");
    for (i = 0; i < refs.length; ++i) {
    var oldurl = refs[i].href;
    var n1 = oldurl.indexOf("q=");
    var n2 = oldurl.indexOf("sa=");
    var newurl = oldurl.slice(n1 + 2, n2 - 1);
    refs[i].href = newurl;
    }
}

Отредактируйте, четыре дня спустя: после тестирования я добавил скобки (вокруг и после функции), которые были необходимы, чтобы она работала по-настоящему.

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

И я добавил строку для декодирования экранированных символов, создаваемых функцией.

(function revertURL() {
    var refs = document.querySelectorAll("h3.r > a, a.fl, span._cD > a, table.images_table a");
    for (i = 0; i < refs.length; ++i) {
    var oldurl = refs[i].href;
    var n1 = oldurl.indexOf("q=");
    var n2 = oldurl.indexOf("sa=");
    var newurl = oldurl.slice(n1 + 2, n2 - 1);
    var newurl_dec = decodeURIComponent(newurl)
    refs[i].href = newurl_dec;
    }
})();

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .