12

Я делаю небольшой скрипт с помощью Autohotkey, чтобы быстро перейти к первому результату поиска Google. Моя проблема в том, что единственный метод, который я нашел для этого, хотя URL работает немного противоречиво.

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

Это работает только тогда, когда первый удар считается очень хорошим совпадением. В противном случае Google показывает нормальные 10 результатов. Однако кнопка «Мне повезет» на первых страницах всегда приводит вас к первому результату.

Попробуйте эти ссылки:

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" на первой полосе, а затем нажав "I'm Feeling Lucky", действительно работает.

Любая идея, как я могу заставить его работать последовательно в форме URL?

Изменить: Хорошо, кажется, это не может быть выполнимо в одном URL. Я отмечу обходной путь сценария greasemonkey как правильный, если опубликован.

4 ответа4

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 "Мне повезет", если вы перейдете на www.google.com/?lucky=searchterm_goes_here .

Я использую его в FireFox, имея ключевое слово для закладки на www.google.com/?lucky=%s .

1

Лучшее решение, которое я придумаю, это: Chrome> Настройки> Управление поисковыми системами ... add:

  • Поисковая система: мне повезло
  • Ключевое слово: \ (замените на предпочитаемый вами ярлык)
  • URL: {google:baseURL} поиск?д =% 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;

Настройка сценария на "run at body" и добавление любых дополнительных TLD Google по вашему усмотрению (я не смог заставить работать регулярное выражение в Tampermonkey).

1

Когда у вас отключен Javascript, кажется, что Google использует и cookie, и заголовок HTTP Referrer которого установлено https://www.google.com чтобы отслеживать, действительно ли вы зашли с главной страницы Google и нажали «Я чувствую» Счастливая "кнопка. Я не думаю, что вам удастся убедить Google передать вам счастливый результат только с помощью URL.

0

Некоторые из элегантных решений на этой странице больше не работают, поэтому я добавляю здесь свое решение, которое работает для меня на Chrome tampermonkey в декабре 2018 года.

@match против @include изменилось для tampermonkey (@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()

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .