มาโครฉันรู้สึกโชคดีที่สอดคล้องกันสำหรับ 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

"นิวยอร์คดิจอง" บนหน้าแรกและจากนั้นกดปุ่ม "ดีใจจังค้นแล้วเจอเลย" ใช้งานได้แล้ว

ความคิดใดที่ฉันจะทำให้มันทำงานอย่างต่อเนื่องในรูปแบบ 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
อีวานโจว

ฉันเดาว่าฟังก์ชั่นการค้นหาที่ปลอดภัยจะขัดขวางคุณสมบัติ
Ivan Chau

ฉันจะลองดูว่าการตั้งค่าแบบฟอร์ม 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 จะใช้ทั้งคุกกี้และReferrerส่วนหัวHTTP ที่ถูกตั้งค่าhttps://www.google.comให้ติดตามหากคุณมาจากหน้าแรกของ Google และคลิกปุ่ม "ดีใจจังค้นแล้วเจอเลย" ฉันไม่คิดว่าคุณจะสามารถโน้มน้าวให้ Google มอบผลลัพธ์ที่โชคดีให้กับคุณได้เพียงแค่ URL


1

ทางออกที่ดีที่สุดที่ฉันมีคือ: Chrome> ค่ากำหนด> จัดการเครื่องมือค้นหา ...เพิ่ม:

  • เครื่องมือค้นหา:ดีใจจังค้นแล้วเจอเลย
  • คำหลัก: \ (แทนที่ด้วยทางลัดที่คุณต้องการ)
  • 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" และเพิ่ม Google TLD เพิ่มเติมตามที่เห็นสมควร (ฉันไม่สามารถทำงาน regex ใน Tampermonkey ได้)


สิ่งนี้ใช้ได้กับข้อความค้นหาธรรมดา แต่น่าเสียดายที่ไม่ใช่ข้อความที่ซับซ้อนกว่านี้ สคริปต์ที่ใช้จาวาสคริปต์เพื่อคลิกที่ผลลัพธ์อันดับต้น ๆ น่าจะดีกว่า
Kevin

0

โซลูชันที่สง่างามเป็นอย่างอื่นบางส่วนในหน้านี้ไม่ทำงานอีกต่อไปดังนั้นฉันจึงเพิ่มโซลูชันของฉันที่นี่ซึ่งใช้งานได้สำหรับฉันใน tampermonkey chrome ในเดือนธันวาคม 2018

@match vs. @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()
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.