Последовательный макрос "Мне повезет" для Google


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 как правильный, если опубликован.


Они не в состоянии : 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
Иван Чау

Я предполагаю, что функция безопасного поиска мешает этой функции.
Иван Чау

Я попытаюсь увидеть, как HTML-форма настроена в Firefox с включенным Noscript.
Просто Джейк

Эта статья также может вас заинтересовать. В соответствии с этим, он работает с 2 ключевыми словами, но не с 3. И даже тогда, как-то, не всегда; (я думаю, что btnIработает до 2 ключевых слов И если Google не решит, что вы могли ввести что-то неправильно (например Did you mean: geeks alive). В противном случае немного javascript используется для перенаправления вас
Rik

@JustJake, кнопка удачливы содержит нестандартный атрибут: jsaction="sf.lck".
Synetech

Ответы:


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

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


1

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

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

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


Это работает для простых запросов, но, к сожалению, не для более сложных. Сценарий, который использует javascript, чтобы щелкнуть верхний результат будет лучше.
Кевин

0

Некоторые из других элегантных решений на этой странице больше не работают, поэтому я добавляю здесь свое решение, которое работает для меня на Tampermonkey Chrome в декабре 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()
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.