省流:google在某些UA下,搜索结果会返回含有跟踪参数的google.com开头的重定向链接,楼主想通过一个轻量的单文件JS油猴脚本,修改搜索结果为真实链接
复现步骤:
- 修改浏览器UA 为 (safari 版本13 - Mac的UA)
如果物理机是macOS Sonoma,且使用 最新的safari 版本17.5,无需修改UA(这正是我遇到的情况)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Safari/605.1.15
- google搜索任意关键词,如test
鼠标悬停某项搜索结果,或者右键拷贝链接。会显示google开头的,含有跟踪参数的链接
https://www.google.com/url?esrc=s&q=&rct=j&sa=U&url=https://www.speedtest.net/&ved=2ahUKEwjYy5TC_ZaHAxW5rlYBHYtQAvgQFnoECAkQAg&usg=AOvVaw25DjDp_1IehkIgnfQ-Ok5E
而不是真实的地址
https://www.speedtest.net
- 实测其他UA正常,会直接返回真实链接
如Chrome on windows的默认UA
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
自己在macOS 14.5+safari 17.5 会遇到这种问题,但是自己不会写JS脚本,因此向论坛大佬求助
之前在使用github开源的脚本来去除重定向,但是脚本也失效+停止维护,或许可以作为修改的参考
https://github.com/kodango/Remove-Google-Redirection/blob/master/extension/greasemonkey/remove-google-redirection.user.js
希望懂js的大佬帮忙看下,谢谢!
编辑:
最终解决方案:思路为遍历a标签,把data-sb和data-ved 属性删除即可
感谢 @Yater 大佬提供思路 ,感谢GPT4o 编码实现
最终JS脚本如下
// ==UserScript==
// @id Remove Data Attributes
// @name Remove Data Attributes
// @namespace
// @description Prohibit click-tracking, and prevent url redirection when clicks on the result links in Google search page.
// @version 1.1.0
// @include http*://www.google.*/
// @include http*://www.google.*/#hl=*
// @include http*://www.google.*/search*
// @include http*://www.google.*/webhp?hl=*
// @include https://encrypted.google.com/
// @include https://encrypted.google.com/#hl=*
// @include https://encrypted.google.com/search*
// @include https://encrypted.google.com/webhp?hl=*
// @include http://ipv6.google.com/
// @include http://ipv6.google.com/search*
// @updateURL
// @icon
// @run-at document-end
// ==/UserScript==
const aTags = document.querySelectorAll('a');
// Loop through all <a> tags
aTags.forEach(a => {
// Remove data-ved attribute if it exists
if (a.hasAttribute('data-ved')) {
a.removeAttribute('data-ved');
}
// Remove data-sb attribute if it exists
if (a.hasAttribute('data-sb')) {
a.removeAttribute('data-sb');
}
});