在 Chrome 扩展程序中重定向 URL

2023-11-26

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

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

NOTE:这个问题的前一个版本询问是否有任何 Google Chrome 扩展程序可以在访问某个 URL 时自动重定向选项卡。因此,下面的(当前两个)答案解决了不同的问题。


有很多选择,其中一个比另一个更复杂。

  1. The webRequestAPI,特别是onBeforeRequest event。 (更好的是,即将到来的declarativeWebRequest API).
  2. 内容脚本。注入location.replace('http://example.com')在一个页面中。
  3. The tabsAPI。使用onUpdated event检测页面何时更改其位置,以及chrome.tabs.update更改其 URL。但要避免无限循环!

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

这是一个使用的示例webRequestAPI,一个简单的扩展,允许我浏览 Pirate bay 上的页面,即使主要主机已被我的 ISP 关闭(实际的 URL 列表要长得多,但为了示例,我省略了它们)。
See 匹配模式有关 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"
  ]
}

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"]
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Chrome 扩展程序中重定向 URL 的相关文章

随机推荐

  • spring data r2dbc可以生成schema吗?

    我正在使用 R2DBC 和 H2 创建一个快速项目 以熟悉这种新的反应性东西 制作了一个扩展 ReactiveCrudRepository 的存储库 只要我使用 DatabaseClient 发出与我的实体首先匹配的 CREATE TABL
  • 跨多个区域的 AppEngine 负载均衡

    据我所知 AppEngine 项目仅定义为一个区域 Google 会自动为您处理负载平衡 但是 如果我在世界各地的不同地区有应用程序 在不同的项目中 因为这似乎是一个要求 那么我如何使用 Google Cloud 中的 HTTPS 负载均衡
  • 保存 matplotlib python 函数生成的图

    我创建了一个函数 它从数据集中获取一系列值并输出一个图 例如 my plot location dataset min temperature max temperature 将返回函数中指定温度范围内的降水图 假设我想保存加利福尼亚州 6
  • Jquery UI 选项卡:关闭选项卡时如何隐藏选项卡及其相应的 div

    我使用了 Jquery UI 选项卡 并为选项卡提供了关闭选项 默认情况下 我创建三个选项卡及其相应的三个 div 现在 当我关闭选项卡时 选项卡及其 div 将被删除 我需要隐藏选项卡和 div 当我单击 添加选项卡 时 我应该只显示隐藏
  • 创建 shell 脚本以在 Linux 上运行 Java 程序

    我创建了一个同步两个目录内容的java程序 该程序将两个目录的位置作为参数来同步它们 同步信息存储在每个目录内的 JSON 格式文件中 我有一个参考库json simple 1 1 1 jar 我在 Windows 上从 Eclipse 运
  • 带括号和不带括号的方法调用的优先级是什么?

    以前的答案 The answer到类似的question是错的 Ruby 中都没有提到方法调用文档也不在社区维基 不带括号的方法调用 比 高or or似乎比不带括号的方法调用具有较低的优先级 puts false or true 相当于 p
  • 如何使用 async/await 返回 Ajax 结果? [复制]

    这个问题在这里已经有答案了 试图熟悉async await 我在 Chrome 中尝试了以下代码 async function f return await get var result f but result不保存结果 字符串 相反 它
  • 在 R 包中包含命令行脚本

    我有兴趣为我正在编写的名为 Slidify 的 R 包提供命令行界面 它用Rscript我认为这将使其成为跨平台的 脚本存储在子目录中inst slidify 为了从任何目录使用该脚本 我将其路径添加到我的 bash profile就像我在
  • 与特定用户以只读方式共享 GitHub 上的私有 git 存储库

    我终于想学习如何 git 所以我正在 GitHub 上写一篇关于版本控制的相当广泛的论文 我有一个freeGitHub pro 帐户 感谢我的大学 所以我可以添加私人存储库 我需要添加我的主管 以便他可以访问这些文档 但我希望他的 GitH
  • 方法名称是否会编译到 EXE 中?

    做类 方法和变量姓名包含在邮件中将 Windows 应用程序项目编译成 EXE 后 For 混淆 名称越少 逆向工程就越困难 And for 表现 名称更短 访问速度更快 e g 因此 如果方法是通过名称调用的 保留名字short 更好的命
  • 是否可以在控制器内获取当前的 Unity 容器

    我像这样注册了统一容器 var container new UnityContainer container RegisterType
  • 在 Node.js 中管理会话? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 在 Node js 中管理会话变量的最佳方法是什么 有图书馆吗 您可以使用以下方法轻松做到这一点 连接 http senchalabs github com connect Connect
  • 如何为库设置 TypeScript 编译器,以便 Webpack 在依赖项目中删除未使用的模块?

    主题库初步说明 很抱歉占用您的时间让您阅读本文 我写它是为了回答诸如 你在做什么 之类的问题 和 你为什么要这样做 The library由大量辅助函数和类组成 在这方面它与 lodash 类似 检查lodash的结构 但与 lodash
  • Selenium / lxml:获取 xpath

    有没有get xpath方法或在 selenium 或 lxml html 中完成类似操作的方法 我有一种感觉 我在某个地方见过 但在文档中找不到类似的东西 伪代码来说明 browser find element by name searc
  • 在 data.table 的 j 参数中使用“list”

    我正在学习 data table 属性一篇博文 我试图理解 汇总表 短而窄 下的部分 首先将 data frame mtcars 强制转换为 data table gt data lt as data table mtcars gt dat
  • 异步foreach

    C 中有异步 foreach 的方法吗 其中 id s 将由该方法异步处理 而不是使用并行 ForEach This Gets all the ID s IEnumerable
  • 权限拒绝:需要 android.permission.READ_PHONE_STATE

    我正在尝试在 Android 应用程序中检测电话 但在接到电话时收到以下消息 08 23 15 16 04 685 Vodafone VFD 600 Warning 850 BroadcastQueue Permission Denial
  • 导入更多脚本会减慢 python 速度吗?

    只是想知道从其他脚本导入更多函数是否会减慢脚本的速度 一些背景 我有两个脚本 一个比另一个运行得快得多 一个在顶部有一个额外的导入语句 在底部有一个额外的函数 但它是中间的东西 这在运行较慢的脚本之间是相同的 有关您的案例的更多信息 导入
  • before_filter 与 devise

    我正在使用 Devise 的内置功能before filter authenticate user 如果用户未通过之前过滤器 尝试在注销时执行操作 我想在应用程序帮助程序中调用我自己的自定义方法 我可以如何以及在哪里执行此操作 我会在过滤器
  • 在 Chrome 扩展程序中重定向 URL

    访问给定 URL 时 如何在扩展程序中重定向 chrome 例如 当我访问http yahoo com 我希望它重定向到http google com NOTE 这个问题的前一个版本询问是否有任何 Google Chrome 扩展程序可以在