Makro spójne „Czuję się szczęśliwy” dla Google

12

Robię mały skrypt za pomocą Autohotkey, aby szybko przejść do pierwszego wyniku wyszukiwanego hasła w Google. Mój problem polega na tym, że jedyną metodą, jaką znalazłem, jest to, że URL działa trochę niespójnie.

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

Działa to tylko wtedy, gdy pierwsze trafienie zostanie uznane za bardzo dobre dopasowanie. W przeciwnym razie Google wyświetli normalne 10 wyników. Jednak przycisk „Jestem szczęśliwy” na pierwszych stronach zawsze prowadzi do pierwszego wyniku.

Wypróbuj te linki:

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” na pierwszej stronie, a następnie kliknięcie „I'm Feeling Lucky” działa.

Masz pomysł, w jaki sposób mogę uzyskać spójną pracę w formie adresu URL?

Edycja: OK, wygląda na to, że nie da się tego zrobić w jednym adresie URL. Oznaczę obejście skryptu greasemonkey jako poprawne, jeśli zostanie opublikowane.

nadrzewny rekin
źródło
Są nie: 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
Myślę, że funkcja bezpiecznego wyszukiwania utrudnia tę funkcję.
Ivan Chau,
Spróbuję zobaczyć, jak formularz HTML jest skonfigurowany w przeglądarce Firefox z włączonym Noscript.
Tylko Jake
Ten artykuł może Cię również zainteresować. Zgodnie z tym, działa z 2 słowami kluczowymi, ale nie 3. I nawet jakoś nie zawsze; (Myślę, że btnIdziała z maksymalnie 2 słowami kluczowymi ORAZ, jeśli Google nie zdecyduje, że mógłbyś wpisać coś źle (jak Did you mean: geeks alive). W przeciwnym razie trochę javascript służy do przekierowania cię
Rik
@JustJake, przycisk szczęście zawiera niestandardowy atrybut: jsaction="sf.lck".
Synetech

Odpowiedzi:

2

Wykonano obejście skryptu 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();

Ten skrypt zawsze przekieruje Cię do Google „I Feel Lucky” pod warunkiem, że przejdziesz do www.google.com/?lucky=searchterm_goes_here.

Używam go w FireFoxie, mając słowo kluczowe do zakładki www.google.com/?lucky=%s.

nadrzewny rekin
źródło
1

Gdy masz wyłączoną obsługę Javascript, wygląda na to, że Google używa zarówno pliku cookie, jak i Referrernagłówka HTTP , https://www.google.comaby śledzić, czy rzeczywiście przyszedłeś ze strony głównej Google i kliknąłeś przycisk „Mam szczęście”. Nie sądzę, że będziesz w stanie przekonać Google, aby podał Ci szczęśliwy wynik za pomocą adresu URL.

Po prostu Jake
źródło
1

Najlepsze rozwiązanie, jakie wymyśliłem, to: Chrome> Preferencje> Zarządzaj wyszukiwarkami ... dodaj:

  • Wyszukiwarka: Mam szczęście
  • Słowo kluczowe: \ (zamień na preferowany skrót)
  • URL: {google: baseURL} szukaj? Q =% s & btnI

Następnie zgodnie z tym wątkiem dodaj następujący skrypt Greasemonkey / Tampermonkey, aby ponownie załadować stronę z Google jako polecającym.

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

Ustawienie skryptu na „uruchamianie przy ciele” i dodanie dowolnych dodatkowych TLD Google według własnego uznania (nie mogłem uzyskać wyrażenia regularnego działającego w Tampermonkey).

Will Rice
źródło
Działa to w przypadku prostych zapytań, ale nie bardziej skomplikowanych. Lepszy byłby skrypt, który używa javascript do kliknięcia najwyższego wyniku.
Kevin
0

Niektóre z bardziej eleganckich rozwiązań na tej stronie już nie działają, więc dodaję tutaj moje rozwiązanie, które działa dla mnie na tampermonkey chrome w grudniu 2018 roku.

@match vs. @include zmieniło się dla tampermonkey (@match nie może zawierać haseł zapytań), co spowodowało sporo frustracji związanej z debugowaniem w przypadku, gdy Google zmieni ich adresy 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
źródło