Consistent I'm Feeling Lucky macro for Google

12

4

I'm making a little script with Autohotkey to quickly go to the first Google result of a search term. My problem is, the only method I've found for doing this though the URL is acting a little inconsistent.

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

This only works when the first hit is deemed to be a very good match. Otherwise Google shows the normal 10 results. However, the actual "I'm Feeling Lucky" button on their front pages always takes you to the first result.

Try these 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" on the front-page and then hitting "I'm Feeling Lucky" does work though.

Any idea how I can get it to consistently work in URL form?

Edit: Okay, seems this might not be doable in a single URL. I'll mark a greasemonkey-script workaround as correct if posted.

arboreal shark

Posted 2013-12-31T01:44:48.443

Reputation: 181

Is there any update on this? I'm trying to create an AutoIt script that goes straight to the first result. Now, I must resort to going to google.com first and press the I'm lucky button. The only condition is that I'd prefer not to use an extension/plugin. I'm using Chrome. – Daan – 2014-10-04T19:36:17.287

These fail: 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 – 2013-12-31T03:59:38.780

I guess the safe search functionality hinders the feature. – Ivan Chau – 2013-12-31T04:19:54.210

I'm going to try seeing how the HTML form is set up in Firefox with Noscript enabled. – Just Jake – 2014-01-07T11:17:25.150

This article might also interest you. According to it, it works with 2 keywords, but not 3. And even then somehow, not always ;( I think btnI works with up to 2 keywords AND if Google does not decide you might have typed something wrong (like Did you mean: geeks alive). Otherwise a bit of javascript is used to redirect you. – Rik – 2014-01-07T12:22:32.697

@JustJake, the lucky button contains a non-standard attribute: jsaction="sf.lck". – Synetech – 2014-01-08T01:13:48.820

The form uses btnI=submit, though any value is sufficient, so long as btnI is not null. @BlueBerry, where did you get btnI=745? Also, Rik(’s article) is correct, using new dijon works from the URL and you are correct that new york dijon works from the homepage. Very odd that they would make such inconsistent behavior. – Synetech – 2014-01-08T01:16:59.550

Just a random reminder: The result for "I'm feeling lucky" does not necessarily match the top result for the same query. – nitro2k01 – 2014-01-14T17:55:56.213

Answers

2

Made a workaround Greasemonkey script:

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

This script will always forward you to Google's "I Feel Lucky" choice provided you navigate to www.google.com/?lucky=searchterm_goes_here.

I'm using it in FireFox by having a keyword to a bookmark going to www.google.com/?lucky=%s.

arboreal shark

Posted 2013-12-31T01:44:48.443

Reputation: 181

1

The best solution I've come up with is: Chrome > Preferences > Manage Search Engines... add:

  • Search Engine: I'm Feeling Lucky
  • Keyword: \ (replace with your preferred shortcut)
  • URL: {google:baseURL}search?q=%s&btnI

Then as per this thread, add the following Greasemonkey / Tampermonkey script to reload the page with Google as the 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;

Setting the script to "run at body" and adding any additional Google TLDs as you see fit (I couldn't get regex working in Tampermonkey).

Will Rice

Posted 2013-12-31T01:44:48.443

Reputation: 11

This works for simple queries but not more complex ones unfortunately. A script that uses javascript to click the top result would be better. – Kevin – 2018-12-03T06:15:17.827

1

When you have Javascript disabled, it seems that Google uses both a cookie and the HTTP Referrer header being set to https://www.google.com to track if you actually came from the Google home page and clicked the "I'm Feeling Lucky" button. I don't think you'll be able to convince Google to hand you the lucky result with just a URL.

Just Jake

Posted 2013-12-31T01:44:48.443

Reputation: 688

0

Some of the otherwise-elegant solutions on this page no longer work, so I'm adding my solution here, which is working for me on tampermonkey chrome in Dec of 2018.

@match vs. @include has changed for tampermonkey (@match can't include query terms) which caused quite a bit of debugging frustration with this in case google changes their 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()

Kevin

Posted 2013-12-31T01:44:48.443

Reputation: 101