一貫性のあるGoogleのラッキーマクロ


12

Autohotkeyを使用して、検索語の最初のGoogle結果にすばやく移動するための小さなスクリプトを作成しています。私の問題は、URLが少し矛盾しているにもかかわらず、これを行うために見つけた唯一の方法です。

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

これは、最初のヒットが非常に良好な一致と見なされる場合にのみ機能します。それ以外の場合、Googleは通常の10個の結果を表示します。ただし、フロントページの実際の[I'm Feeling Lucky]ボタンをクリックすると、常に最初の結果が表示されます。

これらのリンクを試してください:

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

トップページの「ニューヨークディジョン」に続いて「I'm Feeling Lucky」を押すと機能します。

URL形式で一貫して動作させる方法はありますか?

編集:さて、これは単一のURLでは実行できない可能性があります。投稿された場​​合、greasemonkeyスクリプトの回避策を正しいものとしてマークします。


これらは失敗:google.com/search?q=new%20york%20dijon&btnI=Im+Feeling+Luckygoogle.com/search?btnI=1&q=new%20york%20dijongoogle.com/search?btnI=I%27m+Feeling+Lucky&ie=UTF-8&oe=UTF-8&q=new%20york%20dijon
イワンチャウ

安全な検索機能が機能を妨げていると思います。
イヴァンチャウ

Noscriptが有効になっているFirefoxでHTMLフォームがどのように設定されているかを見てみましょう。
ちょうどジェイク14年

この記事にも興味があります。それによると、それは常に、何とかその後もない2つのキーワードで動作しますが、ありません。3.そして、(私が思うにbtnI2つのキーワードまでと作品をIFおよび Googleはあなたが何かを間違って(などを入力した可能性が決定するわけではありませんDid you mean: geeks alive)それ以外の場合はビット。あなたのリダイレクトにjavascriptの使用
リック14年

@JustJake、ラッキーボタンには非標準の属性が含まれていますjsaction="sf.lck"
Synetech 14年

回答:


2

回避策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();

に移動すると、このスクリプトは常に Googleの[I Feel Lucky]の選択肢に転送されますwww.google.com/?lucky=searchterm_goes_here

私はFireFoxでブックマークへのキーワードを使用してそれを使用していますwww.google.com/?lucky=%s


1

Javascriptを無効にすると、Google が実際にGoogleホームページからアクセスして「I'm Feeling Lucky」ボタンをクリックした場合に追跡するようReferrerに設定されたCookieとHTTP ヘッダーの両方を使用しているようhttps://www.google.comです。GoogleにURLだけで幸運な結果を渡すよう説得することはできないと思います。


1

私が思いついた最良の解決策は次のとおりです。Chrome> Preferences> Manage Search Engines ... add:

  • 検索エンジン: I'm Feeling Lucky
  • キーワード: \ (お好みのショートカットに置き換えます)
  • URL: {google:baseURL} search?q =%s&btnI

次に、このスレッドに従って、次のGreasemonkey / Tampermonkeyスクリプトを追加して、Googleをリファラーとしてページをリロードします。

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

スクリプトを「本文で実行」に設定し、必要に応じて追加のGoogle TLDを追加します(Tampermonkeyで正規表現を使用できませんでした)。


これは、単純なクエリでは機能しますが、残念ながら、より複雑なクエリでは機能しません。JavaScriptを使用して上位の結果をクリックするスクリプトの方が良いでしょう。
ケビン

0

このページのその他のエレガントなソリューションの一部は動作しなくなったため、2018年12月にtampermonkey chromeで動作しているソリューションをここに追加しています。

tampermonkeyの@matchと@includeが変更され(@matchにクエリ用語を含めることはできません)、Googleが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()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.