强制 %s 使用加号而不是百分号 20 来转义空格

强制 %s 使用加号而不是百分号 20 来转义空格

我想使用 mc 作为 Google Chrome 中 metacritic.com 的搜索快捷方式。我为快捷方式设置了以下搜索 URL:

http://metacritic.com/search/all/%s/results

不幸的是,当我搜索patrician iii时,如下所示

mc patrcian iii

Chrome 生成此查询,但 metacritic 会误解该查询并生成一组无用的不相关的结果:

http://www.metacritic.com/search/all/patrician%20iii/results

Metacritic 赞同这个查询,并给了我我想要的结果:

http://www.metacritic.com/search/all/patrician+iii/results

如何强制 Chrome 使用加号而不是 URL 编码的空格?

答案1

虽然有点粗糙,但你可以创建一个简单的 Chrome 扩展程序来调整 metacritic(或其他网站,如果你愿意)的 URL

以下是我用于 Metacritic 搜索 URL 替换扩展的代码:

清单.json:

{
    "content_scripts": [ {
    "include_globs": [ "http://www.metacritic.com/search/*%20*" ],
    "js": [ "script.js" ],
        "matches": [ "http://*/*", "https://*/*" ],
        "run_at": "document_start"
    } ],
    "converted_from_user_script": true,
    "description": "Replaces '%20' in metacritic search request to '+'",
    "name": "Metacritic search replacer",
    "version": "0.1"
}

脚本.js:

window.location = window.location.href.replace(/%20/g, "+");

由于我没有一个可靠的地方来上传我的扩展程序,因此这里是使用这两个文件创建 Chrome 扩展程序的说明:

首先,将这两个文件放在某个文件夹中,然后浏览到 chrome://extensions。确保开发人员模式处于活动状态(查看页面右上角以启用此功能)。在这里您可以选择“打包扩展...”,它会询问您脚本所在的文件夹。选择此文件夹后,将创建扩展,您只需将其拖放到 Chrome 中进行安装即可。如果一切按计划进行,脚本将重写 Metacritic 搜索请求的 URL,从“%20”字符改为“+”字符。

现在,您可以http://metacritic.com/search/all/%s/results在 Chrome 中将搜索引擎 URL 用作此搜索的快捷方式。

希望这可以帮助.. ;)

答案2

您不需要使用 REST 风格的搜索,而是可以使用普通的 HTTP GET 参数,如下所示:

http://www.metacritic.com/search/all/results?search_term=test+query

因此,对于你来说,情况是这样的:

http://www.metacritic.com/search/all/results?search_term=%s

不幸的是,这不适用于 Metacricic (?)。

我能得到的最好的是以下搜索功能,但由于某种原因它并没有真正重定向:

data:text/html;charset=utf-8,<script>var s = "%s"; s = s.replace("%20", "+"); var url = "http://www.metacritic.com/search/all/" + s + "/results"; window.location = url;</script>

背景信息:

Chrome 根据位置对发送的参数进行编码,即它是在 URL 中还是作为 GET 参数。在 URL 中,将空格转换为 是有意义的%20,而在参数中+使用 。

不幸的是,他们无法改变这种行为,所以我猜一行简单的 Javascript 代码就能解决这个问题。我会研究一下。

答案3

正如 slhck 在他的回答中指出的那样,Chrome 仅支持 %s,并坚持“智能地”确定是否使用加号或%20转义空格(请参阅Chromium 错误 78429)。

我正在处理的特定测试用例(metacritic.com)与他们的 RESTful 搜索界面同时施加了太多的障碍。

因此,作为一种解决方法,我选择简单地使用 app.metacritic.com 的旧界面:

http://apps.metacritic.com/search/process?tfs=game_title&sb=0&game_platform=PC&­ts=%s

如果没有这个功能,我就会联系 metacritic.com,告诉他们 Chromium 漏洞,然后请求他们饶恕。:-)

答案4

我也遇到了同样的问题,然后找到了这个页面。不幸的是,答案要么太复杂,要么像传统搜索理念一样不起作用,然后我突然想起我以前用 metacritic 做什么,那就是用谷歌搜索,因为 metacritics 搜索引擎太差了(实际上现在仍然如此)。所以我做的是创建一个谷歌搜索,并将其作为我的 metacritic 搜索:

https://www.google.com/search?gcx=w&ix=c2&sourceid=chrome&ie=UTF-8&q=site%3Ametacritic.com+%s

显然,这并不理想,因为你无法获得 metacritic 的漂亮搜索结果页面,但它确实提供了有用的结果。我还创建了特定频道的版本;例如,如果我想搜索电视节目,我会使用相同的引擎,并在其中添加“/tv/”。

相关内容