Makro Saya Merasa Beruntung Konsisten untuk Google

12

Saya membuat skrip kecil dengan Autohotkey untuk dengan cepat pergi ke hasil Google pertama dari istilah pencarian. Masalah saya adalah, satu-satunya metode yang saya temukan untuk melakukan ini meskipun URL bertindak sedikit tidak konsisten.

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

Ini hanya berfungsi ketika hit pertama dianggap sebagai pertandingan yang sangat bagus. Kalau tidak, Google menunjukkan 10 hasil normal. Namun, tombol "I'm Feeling Lucky" yang sebenarnya di halaman depan selalu membawa Anda ke hasil pertama.

Coba tautan ini:

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" di halaman depan dan kemudian menekan "I'm Feeling Lucky" tidak bekerja.

Adakah yang tahu bagaimana saya bisa membuatnya berfungsi secara konsisten dalam bentuk URL?

Sunting: Oke, sepertinya ini mungkin tidak bisa dilakukan dalam satu URL. Saya akan menandai solusi script greasemonkey sebagai benar jika diposting.

hiu arboreal
sumber
Ini gagal: 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
Saya kira fungsi pencarian yang aman menghalangi fitur ini.
Ivan Chau
Saya akan mencoba melihat bagaimana formulir HTML diatur di Firefox dengan Noscript diaktifkan.
Just Jake
Artikel ini mungkin juga menarik bagi Anda. Menurutnya, ia bekerja dengan 2 kata kunci, tetapi tidak 3. Dan meskipun demikian, entah bagaimana, tidak selalu; (Saya pikir btnIbekerja dengan hingga 2 kata kunci DAN jika Google tidak memutuskan Anda mungkin telah mengetik sesuatu yang salah (seperti Did you mean: geeks alive). Kalau tidak, sedikit javascript digunakan untuk mengarahkan Anda
Rik
@JustJake, tombol beruntung berisi atribut non-standar: jsaction="sf.lck".
Synetech

Jawaban:

2

Membuat skrip Greasemonkey penyelesaian masalah:

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

Skrip ini akan selalu meneruskan Anda ke Google "I Feel Lucky" pilihan asalkan Anda menavigasi ke www.google.com/?lucky=searchterm_goes_here.

Saya menggunakannya di FireFox dengan memiliki kata kunci ke bookmark www.google.com/?lucky=%s.

hiu arboreal
sumber
1

Ketika Javascript Anda dinonaktifkan, tampaknya Google menggunakan cookie dan Referrerheader HTTP yang diatur https://www.google.comuntuk dilacak jika Anda benar-benar berasal dari halaman beranda Google dan mengklik tombol "I'm Feeling Lucky". Saya tidak berpikir Anda akan bisa meyakinkan Google untuk memberi Anda hasil yang beruntung hanya dengan URL.

Hanya Jake
sumber
1

Solusi terbaik yang saya buat adalah: Chrome> Preferensi> Kelola Mesin Pencari ... tambahkan:

  • Mesin Pencari: I'm Feeling Lucky
  • Kata kunci: \ (ganti dengan pintasan pilihan Anda)
  • URL: {google: baseURL} pencarian? Q =% s & btnI

Kemudian sesuai utas ini , tambahkan skrip Greasemonkey / Tampermonkey berikut untuk memuat ulang halaman dengan Google sebagai pengarah.

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

Menyetel skrip untuk "jalankan di tubuh" dan menambahkan TLD Google tambahan yang Anda inginkan (saya tidak bisa membuat regex bekerja di Tampermonkey).

Will Rice
sumber
Ini berfungsi untuk permintaan sederhana tetapi sayangnya tidak lebih kompleks. Sebuah skrip yang menggunakan javascript untuk mengklik hasil teratas akan lebih baik.
Kevin
0

Beberapa solusi lain yang elegan pada halaman ini tidak lagi berfungsi, jadi saya menambahkan solusi saya di sini, yang berfungsi untuk saya pada tampermonkey chrome pada bulan Desember 2018.

@match vs. @include telah berubah untuk tampermonkey (@match tidak dapat menyertakan istilah kueri) yang menyebabkan frustrasi debugging yang cukup besar dalam hal ini jika google mengubah URL mereka.

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