Macro cohérente I'm Feeling Lucky pour Google

12

Je fais un petit script avec Autohotkey pour accéder rapidement au premier résultat Google d'un terme de recherche. Mon problème est que la seule méthode que j'ai trouvée pour le faire, bien que l'URL soit un peu incohérente.

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

Cela ne fonctionne que lorsque le premier coup est considéré comme un très bon match. Sinon, Google affiche les 10 résultats normaux. Cependant, le bouton "I'm Feeling Lucky" sur leurs premières pages vous amène toujours au premier résultat.

Essayez ces liens:

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" sur la première page, puis appuyer sur "I'm Feeling Lucky" fonctionne bien.

Une idée comment je peux le faire fonctionner de manière cohérente sous forme d'URL?

Modifier: D'accord, il semble que cela ne soit pas possible dans une seule URL. Je marquerai une solution de contournement du script greasemonkey comme correcte si elle est publiée.

requin arboricole
la source
Ceux - ci ne parviennent: 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
Je suppose que la fonctionnalité de recherche sécurisée entrave la fonctionnalité.
Ivan Chau
Je vais essayer de voir comment le formulaire HTML est configuré dans Firefox avec Noscript activé.
Just Jake
Cet article pourrait également vous intéresser. Selon lui, cela fonctionne avec 2 mots-clés, mais pas 3. Et même alors, pas toujours; (je pense que cela btnIfonctionne avec jusqu'à 2 mots - clés ET si Google ne décide pas que vous avez peut-être tapé quelque chose de mal (comme Did you mean: geeks alive). Sinon un peu de javascript est utilisé pour vous rediriger.
Rik
@JustJake, le bouton chanceux contient un attribut non standard: jsaction="sf.lck".
Synetech

Réponses:

2

Création d'un script de contournement 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();

Ce script vous transmettra toujours au choix "Je me sens chanceux" de Google à condition que vous y naviguiez www.google.com/?lucky=searchterm_goes_here.

Je l'utilise dans FireFox en ayant un mot-clé vers un signet www.google.com/?lucky=%s.

requin arboricole
la source
1

Lorsque Javascript est désactivé, il semble que Google utilise à la fois un cookie et l'en- Referrertête HTTP pour déterminer https://www.google.comsi vous venez réellement de la page d'accueil de Google et cliquez sur le bouton "J'ai de la chance". Je ne pense pas que vous serez en mesure de convaincre Google de vous remettre le résultat chanceux avec juste une URL.

Just Jake
la source
1

La meilleure solution que j'ai trouvée est: Chrome> Préférences> Gérer les moteurs de recherche ... ajoutez:

  • Moteur de recherche: j'ai de la chance
  • Mot-clé: \ (remplacez par votre raccourci préféré)
  • URL: {google: baseURL} recherche? Q =% s & btnI

Ensuite, conformément à ce fil , ajoutez le script Greasemonkey / Tampermonkey suivant pour recharger la page avec Google comme référent.

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

Définir le script sur "exécuter au corps" et ajouter des TLD Google supplémentaires comme bon vous semble (je n'ai pas pu faire fonctionner regex à Tampermonkey).

Will Rice
la source
Cela fonctionne pour les requêtes simples mais pas plus complexes malheureusement. Un script qui utilise javascript pour cliquer sur le résultat supérieur serait préférable.
Kevin
0

Certaines des solutions par ailleurs élégantes de cette page ne fonctionnent plus, alors j'ajoute ma solution ici, qui fonctionne pour moi sur tampermonkey chrome en décembre 2018.

@match vs @include a changé pour tampermonkey (@match ne peut pas inclure de termes de requête), ce qui a causé beaucoup de frustration de débogage avec cela au cas où Google changerait leurs 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
la source