Macro consistente com sorte para o Google

12

Estou criando um pequeno script com a Autohotkey para acessar rapidamente o primeiro resultado do Google de um termo de pesquisa. Meu problema é que o único método que encontrei para fazer isso foi o fato de o URL estar agindo um pouco inconsistente.

http://www.google.com/search?q=searchterm&btnI=745

Isso funciona apenas quando o primeiro hit é considerado uma combinação muito boa. Caso contrário, o Google mostra os 10 resultados normais. No entanto, o botão "Estou com sorte" real nas primeiras páginas sempre leva você ao primeiro resultado.

Experimente estes links:

http://www.google.com/search?q=new%20york&btnI=745          <- works
http://www.google.com/search?q=new%20york%20dijon&btnI=745  <- doesn't work

"new york dijon" na primeira página e depois clicar em "I'm Feeling Lucky" funciona.

Alguma idéia de como posso fazê-lo funcionar consistentemente no formato de URL?

Edit: Ok, parece que isso pode não ser possível em um único URL. Marcarei uma solução alternativa para o script greasemonkey como correta, se publicada.

tubarão arborícola
fonte
Estes falhar: google.com/search?q=new%20york%20dijon&btnI=Im+Feeling+Lucky, google.com/search?btnI=1&q=new%20york%20dijon,google.com/search?btnI=I%27m+Feeling+Lucky&ie=UTF-8&oe=UTF-8&q=new%20york%20dijon
Ivan Chau
Eu acho que a funcionalidade de pesquisa segura dificulta o recurso.
precisa
Vou tentar ver como o formulário HTML é configurado no Firefox com o Noscript ativado.
Apenas Jake
Este artigo também pode lhe interessar. De acordo com ele, ele funciona com 2 palavras-chave, mas não 3. E mesmo assim, de alguma forma, nem sempre; (acho que btnIfunciona com até 2 palavras-chave E se o Google não decidir que você pode ter digitado algo errado (como Did you mean: geeks alive)). do javascript é usado para redirecioná-lo.
Rik
@JustJake, o botão sorte contém um atributo não-padrão: jsaction="sf.lck".
Synetech

Respostas:

2

Criou uma solução alternativa para o script Greasemonkey:

// ==UserScript==
// @name         Google IFL
// @match        https://*.google.com/*?lucky=*
// @match        http://*.google.com/*?lucky=*
// ==/UserScript==

document.getElementById("gsr").style.display = 'none'; // optional. shows blank screen before forwarding. just looks better imo.
document.getElementById("gbqfq").focus();
var pathname = document.URL;
var start = pathname.indexOf("?lucky=");
var searchterm = pathname.substring(start+7);
document.getElementById("gbqfq").value = decodeURI(searchterm);
var btnLucky = document.getElementsByName('btnI')[0];
btnLucky.click();

Esse script sempre encaminhará para a opção "Sinto-me com sorte" do Google, desde que você navegue para www.google.com/?lucky=searchterm_goes_here.

Estou usando-o no FireFox ao ter uma palavra-chave em um marcador www.google.com/?lucky=%s.

tubarão arborícola
fonte
1

Quando o Javascript está desativado, parece que o Google usa um cookie e o Referrercabeçalho HTTP definido https://www.google.compara rastrear se você realmente veio da página inicial do Google e clicou no botão "Estou com sorte". Acho que você não conseguirá convencer o Google a entregar o resultado da sorte com apenas um URL.

Just Jake
fonte
1

A melhor solução que encontrei é: Chrome> Preferências> Gerenciar mecanismos de pesquisa ... add:

  • Motor de busca: Estou com sorte
  • Palavra-chave: \ (substitua pelo seu atalho preferido)
  • URL: {google: baseURL} search? Q =% s & btnI

Em seguida, de acordo com este segmento , adicione o seguinte script Greasemonkey / Tampermonkey para recarregar a página com o Google como referenciador.

// ==UserScript==
// @name         I'm feeling lucky fix
// @version      0.0
// @description  Makes Google I'm feeling lucky work reliably from the address bar
// @author       Will Rice
// @match        http://*.google.co.uk/search?q=*&btnI
// @match        https://*.google.co.uk/search?q=*&btnI
// @match        http://*.google.com/search?q=*&btnI
// @match        https://*.google.com/search?q=*&btnI
// ==/UserScript==

document.getElementsByTagName("body")[0].style.display = "none";
window.location.href = location;

Definir o script para "executar no corpo" e adicionar outros TLDs do Google como achar melhor (não foi possível fazer o regex funcionar em Tampermonkey).

Will Rice
fonte
Isso funciona para consultas simples, mas infelizmente não para as mais complexas. Um script que usa javascript para clicar no resultado superior seria melhor.
Kevin
0

Algumas das soluções elegantes desta página não funcionam mais, por isso estou adicionando minha solução aqui, que está funcionando para mim no tampermonkey chrome em dezembro de 2018.

@match vs. @include mudou para tampermonkey (@match não pode incluir termos de consulta), o que causou um pouco de frustração na depuração com isso, caso o Google altere seus URLs.

// ==UserScript==
// @name         I'm feeling lucky fix
// @version      0.1
// @description  Makes Google I'm feeling lucky work reliably from the address bar
// @author       Kevin Watt
// @include      https://www.google.*/*btnI*
// ==/UserScript==
// // @match      https://*/*
if (location.href.indexOf('btnI')) document.querySelector('#search a').click()
Kevin
fonte