Konsequent fühle ich mich glücklich Makro für Google

12

Ich erstelle ein kleines Skript mit Autohotkey, um schnell zum ersten Google-Ergebnis eines Suchbegriffs zu gelangen. Mein Problem ist, die einzige Methode, die ich dafür gefunden habe, obwohl die URL ein wenig inkonsistent wirkt.

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

Dies funktioniert nur, wenn der erste Treffer als sehr gut eingestuft wird. Ansonsten zeigt Google die normalen 10 Ergebnisse. Die Schaltfläche "Ich fühle mich glücklich" auf den Titelseiten führt Sie jedoch immer zum ersten Ergebnis.

Versuchen Sie diese 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" auf der Titelseite und dann "I'm Feeling Lucky" zu drücken, funktioniert allerdings.

Irgendeine Idee, wie ich es dazu bringen kann, konsistent in URL-Form zu arbeiten?

Bearbeiten: Okay, scheint, dass dies in einer einzelnen URL nicht möglich ist. Ich werde eine Problemumgehung für greasemonkey-script als korrekt markieren, wenn sie veröffentlicht wird.

Baumhai
quelle
Diese fehlschlagen: 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
Ich denke, die sichere Suchfunktion behindert die Funktion.
Ivan Chau
Ich werde versuchen zu sehen, wie das HTML-Formular in Firefox mit aktiviertem Noscript eingerichtet ist.
Nur Jake
Dieser Artikel könnte Sie auch interessieren. Demnach funktioniert es mit 2 Schlüsselwörtern, aber nicht mit 3. Und auch dann irgendwie nicht immer; (Ich denke, es btnIfunktioniert mit bis zu 2 Schlüsselwörtern UND wenn Google nicht entscheidet, dass Sie möglicherweise etwas falsch eingegeben haben (wie Did you mean: geeks alive). Andernfalls ein bisschen von JavaScript wird verwendet, um Sie weiterzuleiten.
Rik
@JustJake, die glückliche Taste enthält ein Nicht-Standard - Attribut: jsaction="sf.lck".
Synetech

Antworten:

2

Problemumgehung für Greasemonkey-Skript erstellt:

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

Dieses Skript leitet Sie immer zu Googles Auswahl "Ich fühle mich glücklich" weiter, vorausgesetzt, Sie navigieren zu www.google.com/?lucky=searchterm_goes_here.

Ich verwende es in FireFox, indem ich ein Schlüsselwort für ein Lesezeichen habe, das an geht www.google.com/?lucky=%s.

Baumhai
quelle
1

Wenn Sie Javascript deaktiviert haben, verwendet Google anscheinend sowohl ein Cookie als auch den HTTP- ReferrerHeader, um zu https://www.google.comverfolgen, ob Sie tatsächlich von der Google-Startseite gekommen sind und auf die Schaltfläche "Ich fühle mich glücklich" geklickt haben. Ich glaube nicht, dass Sie Google davon überzeugen können, Ihnen das glückliche Ergebnis nur mit einer URL zu überreichen.

Nur Jake
quelle
1

Die beste Lösung, die ich mir ausgedacht habe, ist: Chrome> Einstellungen> Suchmaschinen verwalten ... Hinzufügen:

  • Suchmaschine: Ich fühle mich glücklich
  • Schlüsselwort: \ (durch Ihre bevorzugte Verknüpfung ersetzen)
  • URL: {google: baseURL} Suche? Q =% s & btnI

Fügen Sie dann gemäß diesem Thread das folgende Greasemonkey / Tampermonkey-Skript hinzu, um die Seite mit Google als Referrer neu zu laden.

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

Setzen Sie das Skript auf "run at body" und fügen Sie nach Belieben zusätzliche Google TLDs hinzu (ich konnte Regex in Tampermonkey nicht zum Laufen bringen).

Wird Reis
quelle
Dies funktioniert bei einfachen, aber leider nicht bei komplexeren Abfragen. Ein Skript, das Javascript verwendet, um auf das Top-Ergebnis zu klicken, ist besser.
Kevin
0

Einige der ansonsten eleganten Lösungen auf dieser Seite funktionieren nicht mehr. Deshalb füge ich hier meine Lösung hinzu, die im Dezember 2018 für Tampermonkey Chrome funktioniert.

@match vs. @include wurde für tampermonkey geändert (@match kann keine Abfragebegriffe enthalten), was zu erheblichen Frustrationen beim Debuggen geführt hat, falls Google die URLs ändert.

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