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.


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.


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.


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).


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()
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.