重定向Chrome扩展程序中的URL

26 google-chrome google-chrome-extension

在访问给定的URL时,如何在扩展中重定向chrome?

例如:当我访问时,http://yahoo.com/我希望它重定向到http://google.com/

Rob*_*b W 50

有很多选择,一个比另一个更令人费解.

  1. webRequestAPI,具体的onBeforeRequest事件.(甚至更好,即将推出的declarativeWebRequestAPI).
  2. 内容脚本.注入location.replace('http://example.com')页面.
  3. tabsAPI.使用该onUpdated事件可以检测页面何时更改其位置以及chrome.tabs.update更改其URL.尽管避免无限循环!

第一个是最好的,因为它甚至在页面被请求之前被激活.第二个可以在请求完成后激活,但在页面渲染("run_at":"document_start")之前或渲染()之后激活"run_at":"document_end".我提到了最后一个完整性,但你不应该使用它,因为其他选项更好.

这是一个使用webRequestAPI 的示例,这是一个简单的扩展,允许我浏览Pirate托架上的页面,即使我的ISP取下了主要主机(实际的URL列表要长得多,但我已经省略了它们)例子).
有关URL格式的说明,请参阅匹配模式.

manifest.json

{
  "name": "The Pirate Bay",
  "description": "Redirect The Pirate Bay to a different host",
  "version": "1.0",
  "manifest_version": 2,
  "background": {"scripts":["background.js"]},
  "permissions": [
    "webRequest",
    "*://thepiratebay.se/*",
    "*://www.thepiratebay.se/*",
    "webRequestBlocking"
  ]
}
Run Code Online (Sandbox Code Playgroud)

background.js

var host = "http://tpb.pirateparty.org.uk";
chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
         return {redirectUrl: host + details.url.match(/^https?:\/\/[^\/]+([\S\s]*)/)[1]};
    },
    {
        urls: [
            "*://piratebay.se/*",
            "*://www.piratebay.se/*"
        ],
        types: ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest", "other"]
    },
    ["blocking"]
);
Run Code Online (Sandbox Code Playgroud)

  • @Rob WI知道,我只是困惑了一会儿为什么演示不起作用并想警告未来的人.就个人而言,我已将其修改为简单的Facebook重定向. (3认同)

sac*_*024 19

我知道我在游戏中有点迟到回答这个问题我还是想为将来的读者回答这个问题.看一下

Requestly - 用于修改网络请求的Chrome扩展程序.

目前,您可以为其设置规则

  1. 请求URL 重定向到另一个URL.
  2. 阻止一些请求.
  3. 用另一个字符串替换 URL中的某些部分
  4. 修改标题(添加/删除/修改请求和响应标头)

截图了解更多:

  • 规则清单

规则清单

  • 规则类型卡

规则类型卡

  • 新的重定向规则

创建重定向规则

  • 标题修改规则

修改标题

路线图中有很多东西需要被覆盖

  • 切换用户代理

..还有更多.

PS:我已经创建了这个如果你没有找到这个有用的话你可以怪我:)

  • -1这个问题显然是面向编程的,即,有关如何在自己的Web扩展中实现重定向,而不是要使用什么扩展。(否则,我肯定会在superuser.com上询问此问题。) (5认同)
  • @balu实际上,如果你查看问题历史记录,它一开始是“是否有扩展”,现在当然不再是这样了 (3认同)
  • (我建议您从 Chrome 扩展页面链接到 GitHub,即从右侧的概述描述链接到 GitHub:https://chrome.google.com/webstore/detail/requestly/mdnleldcmiljblolnjhpnblkcekpdkpa?hl=en 到 GitHub。我认为给人留下了很好的印象。) (2认同)