Como destacar persistentemente os links de pesquisa do Google visitados com scripts desativados no Firefox?

2

Eu gosto do Google com o JavaScript desativado. Eu costumava fazer isso adicionando o operador gbv=1 às minhas strings de pesquisa, mas agora o Google adicionou um script que recarrega à força a página de resultados de pesquisa com o parâmetro alterado para gbv=2 , que habilita o JS.

Como resultado, comecei a bloquear scripts no Google (usando a extensão uBlock Origin). Infelizmente, isso desativa uma funcionalidade importante: todos os links que eu visito são marcados apenas temporariamente como visitados na página de resultados. Se eu recarregar a página de resultados, ou (cenário mais realista) encontrar alguns dos mesmos resultados mais tarde, ao fazer uma nova busca por termos ligeiramente diferentes, os resultados que eu já vi são tão azuis quanto os que eu nunca vi.

Isso parece ser devido ao modo como o Google redireciona seus resultados de pesquisa. Por exemplo, hoje fiz uma pesquisa por "css ponto e vírgula" e a URL do segundo resultado foi exibida como

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

O link atual, no entanto, era

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

Parece que o conteúdo do campo ved na string de consulta é gerado novamente toda vez que a página de resultados é recarregada. Presumivelmente, é por isso que os links visitados não estão mais destacados - porque, tecnicamente, eu não os visitei antes.

Um número de extensões e user scripts foram criados para lidar com esse problema, mas todos os que eu encontrei são projetados para funcionar com JavaScript ativado (a maioria deles parece envolver a desativação de um evento onmousedown que não ocorre / não pode ocorrer quando o JS está desabilitado).

Como posso fazer com que o Google me mostre quais links eu já visitei?

    
por practik 07.01.2017 / 03:43

1 resposta

1

Tudo bem, eu não sei se é correto responder a sua própria pergunta, mas aqui está o que eu fiz:

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;
    }
}

Edite quatro dias depois: Após o teste, adicionei os parênteses (ao redor e depois da função) que eram necessários para que funcionasse de verdade.

Também expandi a definição de refs para que o script funcione em mais tipos de resultados de pesquisa: sub-listas de resultados de um único domínio, páginas armazenadas em cache do Google e resultados de pesquisa de imagens.

E adicionamos uma linha para decodificar os caracteres de escape que a função estava produzindo.

(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;
    }
})();
    
por 07.01.2017 / 09:22