Coerentemente mi sento fortunato macro per Google


12

Sto realizzando un piccolo script con Autohotkey per passare rapidamente al primo risultato di Google di un termine di ricerca. Il mio problema è che l'unico metodo che ho trovato per farlo, sebbene l'URL si comporti in modo un po 'incoerente.

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

Funziona solo quando il primo colpo è considerato una partita molto buona. Altrimenti Google mostra i normali 10 risultati. Tuttavia, il pulsante "Mi sento fortunato" nelle prime pagine ti porta sempre al primo risultato.

Prova questi link:

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" in prima pagina e poi colpire "I'm Feeling Lucky" funziona comunque.

Hai idea di come posso farlo funzionare in modo coerente in forma di URL?

Modifica: Okay, sembra che ciò non sia fattibile in un singolo URL. Contrassegnerò una soluzione alternativa a script greasemonkey come corretta se pubblicata.


Questi falliscono: 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

Immagino che la funzionalità di ricerca sicura ostacoli la funzione.
Ivan Chau il

Proverò a vedere come è impostato il modulo HTML in Firefox con Noscript abilitato.
Solo Jake, il

Questo articolo potrebbe anche interessarti. Secondo esso, funziona con 2 parole chiave, ma non 3. E anche in qualche modo, non sempre; (Penso che btnIfunzioni con un massimo di 2 parole chiave E se Google non decide che potresti aver digitato qualcosa di sbagliato (come Did you mean: geeks alive). Altrimenti un po ' di javascript viene utilizzato per reindirizzare l'utente.
Rik

@JustJake, il pulsante fortunato contiene un attributo non standard: jsaction="sf.lck".
Synetech,

Risposte:


2

Creato uno 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();

Questo script ti invierà sempre alla scelta "I Feel Lucky" di Google a condizione che tu acceda a www.google.com/?lucky=searchterm_goes_here.

Lo sto usando in FireFox usando una parola chiave per un segnalibro www.google.com/?lucky=%s.


1

Quando JavaScript è disabilitato, sembra che Google utilizzi sia un cookie sia l' Referrerintestazione HTTP impostata https://www.google.comper tracciare se sei effettivamente arrivato dalla home page di Google e hai fatto clic sul pulsante "Mi sento fortunato". Non credo che sarai in grado di convincere Google a consegnarti il ​​risultato fortunato con solo un URL.


1

La migliore soluzione che ho trovato è: Chrome> Preferenze> Gestisci motori di ricerca ... aggiungi:

  • Motore di ricerca: mi sento fortunato
  • Parola chiave: \ (sostituisci con il tuo collegamento preferito)
  • URL: {google: baseURL} cerca? Q =% s & btnI

Quindi, come da questa discussione , aggiungi il seguente script Greasemonkey / Tampermonkey per ricaricare la pagina con Google come referrer.

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

Impostando lo script su "run at body" e aggiungendo altri TLD di Google come ritieni opportuno (non riuscivo a far funzionare regex in Tampermonkey).


Funziona con query semplici ma purtroppo non più complesse. Uno script che utilizza JavaScript per fare clic sul risultato migliore sarebbe meglio.
Kevin,

0

Alcune delle soluzioni altrimenti eleganti in questa pagina non funzionano più, quindi sto aggiungendo la mia soluzione qui, che sta funzionando per me su tampermonkey chrome nel dicembre del 2018.

@match vs. @include è cambiato per tampermonkey (@match non può includere termini di query) che ha causato un po 'di frustrazione nel debug nel caso in cui Google cambi i propri 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()
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.