Macro consistente de I'm Feeling Lucky para Google

12

Estoy haciendo un pequeño script con Autohotkey para ir rápidamente al primer resultado de Google de un término de búsqueda. Mi problema es que el único método que he encontrado para hacer esto, aunque la URL está actuando un poco inconsistente.

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

Esto solo funciona cuando se considera que el primer golpe es un muy buen partido. De lo contrario, Google muestra los 10 resultados normales. Sin embargo, el botón "Me siento afortunado" en sus portadas siempre lo lleva al primer resultado.

Prueba estos enlaces:

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" en la primera plana y luego presionar "I'm Feeling Lucky" funciona.

¿Alguna idea de cómo puedo hacer que funcione constantemente en forma de URL?

Editar: Bien, parece que esto podría no ser factible en una sola URL. Marcaré una solución alternativa de greasemonkey-script como correcta si se publica.

tiburón arbóreo
fuente
Estos fallan: 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
Supongo que la funcionalidad de búsqueda segura dificulta la función.
Ivan Chau
Intentaré ver cómo se configura el formulario HTML en Firefox con Noscript habilitado.
Solo Jake el
Este artículo también puede interesarte. De acuerdo con esto, funciona con 2 palabras clave, pero no 3. E incluso de alguna manera, no siempre; (creo que btnIfunciona con hasta 2 palabras clave Y si Google no decide que podría haber escrito algo incorrecto (como Did you mean: geeks alive). De lo contrario, un poco de javascript se utiliza para redirigirlo.
Rik
@JustJake, el botón suerte contiene un atributo no estándar: jsaction="sf.lck".
Synetech

Respuestas:

2

Hizo una solución alternativa al script de 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();

Este script siempre lo reenviará a la opción "I Feel Lucky" de Google siempre que navegue www.google.com/?lucky=searchterm_goes_here.

Lo estoy usando en Firefox al tener una palabra clave para un marcador www.google.com/?lucky=%s.

tiburón arbóreo
fuente
1

Cuando tiene Javascript deshabilitado, parece que Google usa tanto una cookie como el Referrerencabezado HTTP configurado https://www.google.compara rastrear si realmente vino de la página de inicio de Google y hizo clic en el botón "Me siento afortunado". No creo que pueda convencer a Google de que le entregue el resultado afortunado con solo una URL.

Solo jake
fuente
1

La mejor solución que he encontrado es: Chrome> Preferencias> Administrar motores de búsqueda ... agregar:

  • Motor de búsqueda: me siento afortunado
  • Palabra clave: \ (reemplace con su acceso directo preferido)
  • URL: {google: baseURL} buscar? Q =% s & btnI

Luego, según este hilo , agregue la siguiente secuencia de comandos Greasemonkey / Tampermonkey para volver a cargar la página con Google como referencia.

// ==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;

Configurando el script para "ejecutar en el cuerpo" y agregando cualquier TLD de Google adicional como mejor le parezca (no pude hacer que la expresión regular funcione en Tampermonkey).

Will Rice
fuente
Esto funciona para consultas simples pero desafortunadamente no más complejas. Sería mejor un script que usa JavaScript para hacer clic en el resultado superior.
Kevin
0

Algunas de las soluciones elegantes de esta página ya no funcionan, así que agrego mi solución aquí, que funciona para mí en Tampermonkey Chrome en diciembre de 2018.

@match vs. @include ha cambiado para tampermonkey (@match no puede incluir términos de consulta), lo que causó un poco de frustración de depuración con esto en caso de que Google cambie sus URL.

// ==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
fuente