TSWeb 扩展
TypeScript 库,用于覆盖 tsurlfilter 库的网络扩展 api .
目录 :
- TSWeb 扩展
- 浏览器兼容性
- 安装
- 使用量
- 国 际
- 副作用
- API 密码
- 配置
- 子网络扩展
- 属性
- 方法
- 点数
- 开始( c)
- 配置 ()
- 停止( )
- 打开助理 ()
- 关闭助理( C)
- 获取规则
- 检索规则节点
- 获取MessageHandler ()
- 设置 Filtering Enabled () (仅限MV2)
- set CollectHitStats () (仅MV2) (仅限MV2)
- 设置调试脚本( )
- set. Stealth ModeEnabled () (仅限MV2)
- (仅MV2)
- (仅MV2)
- set selfDestruct FirstPartyCookies Time () (仅限MV2) (仅限MV2)
- set self Destruct 三相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相
- set Hide Referrer () (仅限MV2)
- set 隐藏搜索查询 () (仅MV2)
- 设置 BlockChrome ClientData () (仅限MV2)
- set SendDo NotTrack () (仅限MV2)
- 设置 BlockWebRTC () (仅MV2)
- 公用事业
- 过滤日志 API(仅限MV2)
浏览器兼容性
| 浏览器 | 版本 |
|---|---|
| 基于铬的浏览器 MV2 | 106 (韩语) |
| 基于铬的浏览器 MV3 | 121国道 |
| 火花 | 78国 |
| 火狐移动 | 113号 |
安装
pnpm add @adguard/tswebextension
使用量
您可以在 packages/examples/tswebextension-*
说明:
在运行已编译的应用程序之前, 加载可访问的网络资源以重定向规则
通过内置 cli :
tswebextension war [path]
或将装载纳入您的管道:
import { copyWar, DEFAULT_WAR_PATH } from '@adguard/tswebextension/cli';
const build = async () => {
...
await copyWar(DEFAULT_WAR_PATH);
...
};
如果未定义路径, 资源将被装入 build/war
默认相对于您当前工作目录
国 际
控制台接口为建筑扩展提供了有用的工具.
Usage: tswebextension [options] [command]
CLI to some development utils
Options:
-V, --version output the version number
-h, --help display help for command
Commands:
war [path] Downloads web accessible resources for redirect rules
help [command] display help for command
副作用
在这个项目中 sideEffects 字段定义如下: package.json 文件 :
"sideEffects": [
"dist/assistant-inject.js",
"dist/content-script.js",
"dist/content-script.mv3.js",
"dist/gpc.mv3.js",
"dist/hide-document-referrer.mv3.js"
]
此配置表示指定的文件有副作用 不应该被捆绑者震倒。 这些文件将修改 二、全球范围,这对联合国 应用.
通过明确列出这些档案,确保列入 即使它们没有任何直接进口或 用于编码库其他地方的出口.
在内容脚本中,我们需要访问 @adguard/assistant 仅限
当用户点击“ 手动” 块广告时。 因此,我们标记了文件
与 @adguard/assistant 作为副作用。 我们还增加了一个要求
字段到配置对象,以确保将助手捆绑
在最后扩展名内,允许 tswebextension 装入
点播.
与活性注射方法相同 我们使用隐形选项 GPC 并隐藏
文档查询器。 这些选项的处理器将动态注册内容
脚本通过 scripting.registerContentScript。 。 。 .
API 密码
图书馆的主要理念是提供一个共同的界面 用于不同浏览器和显示版本 通过 配置 对象.
子网络扩展 类提供了一套方法 用于从扩展的背景上下文过滤内容.
MV2子模块还提供了一套方法用于 过滤日志管理。 。 。 .
配置
类型 : Configuration
配置对象 .
我们的展出
类型 : string
图书馆版本.
已删除的( C)
类型 : string
扩展的 Css 模块版本,用于当前库版本.
过滤器(仅限MV2)
类型 : FilterMV2[]
过滤器列表.
过滤器
类型 : number
过滤标识符 .
内容
类型 : Uint8Array[]
AGTree 字节缓冲块 .
信赖
类型 : boolean
确定是否执行过滤列表js规则.
静态FiltersIds(仅限MV3)
类型 : number[]
静态过滤器标识列表.
自定义过滤器( 只有MV3)
类型 : CustomFilterMV3[]
用户可以添加/编辑/删除的自定义过滤器列表 .
过滤器
类型 : number
过滤标识符 .
内容
类型 : string
已转换过滤器列表内容(规则已转换为AdGuard格式).
转换数据
类型 : ConversionData
数据转换自 FilterList.getConversionData(),包含:
originals: 已转换的规则正文组conversions: 将内容转换为原始数组索引的行首图抵消
过滤 Path( 仅限MV3)
类型 : string
过滤列表文件的路径 .
规则Path(仅限MV3)
类型 : string
已转换规则集的目录路径 .
申报日志(仅限MV3)
类型 : boolean
允许匹配过滤日志的宣告规则.
允许列表
类型 : string[]
网站主机名或域列表,应当排除在外 禁止封锁或哪些应当包括在封锁中,取决于 数值 允许列表 倒转 设置值.
信任的领域
类型 : string[]
网站域名列表,应当暂时排除在文档屏蔽之外.
用户规则(MV2)
内容
类型 : string
已转换过滤器列表内容(规则已转换为AdGuard格式).
转换数据
类型 : ConversionData
数据转换自 FilterList.getConversionData(),包含:
originals: 已转换的规则正文组conversions: 将内容转换为原始数组索引的行首图抵消
用户规则(MV3)
内容
类型 : string
已转换过滤器列表内容(规则已转换为AdGuard格式).
转换数据
类型 : ConversionData
数据转换自 FilterList.getConversionData(),包含:
originals: 已转换的规则正文组conversions: 将内容转换为原始数组索引的行首图抵消
动词(已过期)
类型 : boolean | undefined
负责伐木的可选旗. 默认为真. 将在下一个小版本中删除.
日志级别
类型 : string | undefined
设定日志级别、 默认为“ 错误 ” 的可选旗帜 . 可用的关卡 : 'error','warn','info','debug','trace' .
设置
类型 : SettingsConfig
设置配置对象 .
允许列表 倒转
类型 : boolean
如果此旗帜属实, 应用程序将只对域工作 从 允许列表,否则它会工作到任何地方 从列表中删除域 .
允许列表
类型 : boolean
标记指定 允许列表 启用状态。 我们不用 计算启用状态的允许列表数组长度条件, 因为它不是用倒置模式的空列表覆盖大小写.
收集数据
类型 : boolean
启用 Css 点击计数器, 如果为真 .
调试脚本
可选类型 : boolean
默认为假. 如果为真,则启用控制台中的脚本记录 .
已启用
类型 : boolean
如果为真, 启用隐形模式 .
过滤已启用
类型 : boolean
如果为真, 启用过滤 .
文档锁定PageUrl
类型 : string
重定向 URL 用于屏蔽规则 $document 修饰相.
助理乌尔
类型 : string
组装的路径 @adguard/assistant 模块。 需要为助理的懒惰需求加载.
gpcScriptUrl(仅限MV3)
类型 : string
设置 GPC 信号的内容脚本路径 。 所需时间 Do Not Track 隐形选项 .
隐藏文档参考文件ScriptUrl(仅限MV3)
类型 : string
隐藏文档引用者的内容脚本路径 .
所需时间 Hide Search Queries 隐形选项 .
隐形图形
类型 : StealthConfig
隐形模式配置对象 .
自毁第一党曲奇
类型 : boolean
如果应用程序设定固定寿命 从 自毁第一党曲奇时间 给第一党饼干.
自毁第一党曲奇时间
类型 : number
分钟内删除一党饼干.
自行破坏第三方饼干
类型 : boolean
如果应用程序设定固定寿命 从 自毁的第三方曲奇时间 第三方饼干.
自毁的第三方曲奇时间
类型 : number
几分钟内删除第三方饼干.
隐藏参考文件
类型 : boolean
申请是否将来源地裁判人隐藏在第三方 请求,用请求 url 替换裁判员 url .
隐藏搜索查询
类型 : boolean
应用程序是否隐藏了搜索时的原裁判 在第三方查询中包含搜索查询的页面,替换 请求url的裁判员url.
块ChromeClientData
类型 : boolean
对于 Google Chrome , 它删除“ X- Client- Data” 标题 包含浏览器版本信息的请求 和修改.
发送不跟踪
类型 : boolean
在所有请求中包括 HTTP 标题“ DNT” 和“ Sec- GPC ” .
更多信息,请访问DNT: https://en.wikipedia.org/wiki/Do not Track (英语)。 。 。 .
更多信息,请访问GPC: https://globalprivaceycontrol.org (中文(简体) )。 。 。 .
块WebRTC
类型 : boolean
屏蔽通过WebRTC泄露您IP地址的可能性,即使您使用代理服务器或VPN.
子网络扩展
属性
配置
类型 : ConfigurationMV2Context | ConfigurationMV3Context
配置上下文,其中含有过滤引擎中装入的规则和域字符串被忽略的数组.
它用于在存储内存中的配置数据时降低内存消耗.
关于过滤日志Event
类型 : EventChannel<FilteringLogEvent>
事件频道 过滤日志事件。 。 。 .
已启动
类型 : boolean
应用开始.
方法
点数
类型 : () => Promise<void>
初始化应用持久性数据 。 这个方法叫做尽快 并允许在 应用程序开始.
开始( c)
类型 : (configuration: TConfiguration) => Promise<TConfigurationResult>
启动应用程序.
并按需要更新webRTC隐私.network设置并冲出浏览器内-memory请求缓存.
配置 ()
类型 : (configuration: TConfiguration) => Promise<TConfigurationResult>
更新配置.
并按需要更新webRTC隐私.network设置并冲出浏览器内-memory请求缓存.
MV3 处理出错 : 当使用 Express V3 时,
页:1 ConfigurationResult 返回时间 configure() 财务报告和审定财务报表 start()
包含有错误和限制的多字段
那个 必须检查数字 :
staticFiltersStatus.errors: 阵列FailedEnableRulesetsError实例browser.declarativeNetRequest.updateEnabledRulesets失败. 浏览器不会更新或启用任何规则( 如果有) 未找到规则.dynamicRules.errors: 发生转换错误的矩阵 在动态规则转换过程中(海关过滤器、用户规则、, 允许列表).dynamicRules.limitations: 如果动态, 限制错误矩阵 由于浏览器限制,规则被切换.
这些错误没有抛出 但结果却回来了. 您必须检查这些字段是否有重大错误并处理它们 适当 (如抛出,日志,通知用户).
const result = await tsWebExtension.configure(configuration);
// Check static filter errors
if (result.staticFiltersStatus.errors.length > 0) {
console.error('Failed to enable rulesets:', result.staticFiltersStatus.errors);
}
// Check dynamic rules errors and limitations
if (result.dynamicRules) {
if (result.dynamicRules.errors.length > 0) {
console.error('Dynamic rules conversion errors:', result.dynamicRules.errors);
}
if (result.dynamicRules.limitations.length > 0) {
console.warn('Dynamic rules were truncated:', result.dynamicRules.limitations);
}
}
停止( )
类型 : () => Promise<void>
停止应用.
打开助理 ()
类型 : (tabId: number) => void
在指定的标签中打开助手.
关闭助理( C)
类型 : (tabId: number) => void
获取规则
类型 : () => number
返回活动规则的数目.
检索规则节点
类型 : (filterId: number, ruleIndex: number): AnyRule | null
通过过滤ID和规则索引从引擎中检索规则节点.
获取MessageHandler ()
类型 : () => MessageHandlerMV2 | MessageHandlerMV3
返回将收听内部信件的邮件处理器, 例如:用于计算内容标注的 css 消息.
设置 Filtering Enabled () (仅限MV2)
类型 : (isFilteringEnabled: boolean) => Promise<void>
更新 过滤已启用 不重新初始化引擎的配置值.
并按需要更新webRTC隐私.network设置并冲出浏览器内-memory请求缓存.
如果 配置 未设置.
set CollectHitStats () (仅MV2) (仅限MV2)
类型 : (isCollectStats: boolean) => void
更新 收集数据 不重新初始化引擎的配置值.
如果 配置 未设置.
设置调试脚本( )
类型 : (isDebugScriptlets: boolean) => void
更新 调试脚本 配置值 没有重新启动引擎.
如果 配置 未设置.
set. Stealth ModeEnabled () (仅限MV2)
类型 : (value: isStealthModeEnabled) => Promise<void>
更新 已启用 不重新初始化引擎的配置值.
同时按要求更新webRTC隐私.network设置.
如果 配置 未设置.
(仅MV2)
类型 : (isSelfDestructFirstPartyCookies: boolean) => void
更新 自毁第一党曲奇 隐藏配置值而不重新初始化引擎.
如果 配置 未设置.
(仅MV2)
类型 : (isSelfDestructThirdPartyCookies: boolean) => void
更新 自行破坏第三方饼干 隐藏配置值而不重新初始化引擎.
如果 配置 未设置.
set selfDestruct FirstPartyCookies Time () (仅限MV2) (仅限MV2)
类型 : (selfDestructFirstPartyCookiesTime: number) => void
更新 自毁第一党曲奇时间 隐藏配置值而不重新初始化引擎.
如果 配置 未设置.
set self Destruct 三相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相
类型 : (selfDestructThirdPartyCookiesTime: number) => void
更新 自毁的第三方曲奇时间 隐藏配置值而不重新初始化引擎.
如果 配置 未设置.
set Hide Referrer () (仅限MV2)
类型 : (isHideReferrer: boolean) => void
更新 隐藏参考文件 隐藏配置值而不重新初始化引擎.
如果 配置 未设置.
set 隐藏搜索查询 () (仅MV2)
类型 : (isHideSearchQueries: boolean) => void
更新 隐藏搜索查询 隐藏配置值而不重新初始化引擎.
如果 配置 未设置.
设置 BlockChrome ClientData () (仅限MV2)
类型 : (isBlockChromeClientData: boolean) => void
更新 块ChromeClientData 隐藏配置值而不重新初始化引擎.
如果 配置 未设置.
set SendDo NotTrack () (仅限MV2)
类型 : (isSendDoNotTrack: boolean) => void
更新 发送不跟踪 隐藏配置值而不重新初始化引擎.
如果 配置 未设置.
设置 BlockWebRTC () (仅MV2)
类型 : (isBlockWebRTC: boolean) => Promise<void>
更新 块WebRTC 隐藏配置值而不重新初始化引擎.
同时按要求更新webRTC隐私.network设置.
如果 配置 未设置.
公用事业
可在扩展中使用的公用事业的单独切入点.
可以这样进口:
import { getFilterName, isUserScriptsApiEnabled } from '@adguard/tswebextension/mv3/utils';
获取过滤器Name
类型 : (filterId: number) => string
对于指定的过滤器标识符,将生成过滤器文件名 中,应当保存文本过滤规则.
是用户脚本ApiEnabled
类型 : () => boolean
回返 true 如果用户脚本 API 可用并启用, false 否则.
过滤日志 API(仅限MV2)
提供一套方法用于: 过滤日志事件 管理层.
事件
发送请求
类型 : SendRequestEvent
奉命派遣.
选项卡重新装入
类型 : TabReloadEvent
重新装入标签.
基本规则
类型 : ApplyBasicRuleEvent
根据请求发送了块或允许列表规则匹配.
应用化妆规则
类型 : ApplyCosmeticRuleEvent
发布在elemhide, css或html规则应用上.
应用Csp规则
类型 : ApplyCspRuleEvent
执行Csp规则.
收到回复
类型 : ReceiveResponseEvent
接到答复就发出通知.
饼干
类型 : CookieEvent
发送到饼干移除或修改.
删除页眉
类型 : RemoveHeaderEvent
根据请求发送或删除回复信头.
删除帕拉姆
类型 : RemoveParamEvent
根据请求或答复发出撤换请求.
替换规则
类型 : ReplaceRuleApplyEvent
已通知适用替换规则.
内容过滤启动
类型 : ContentFilteringStartEvent
发送到内容过滤开始.
内容过滤 完成
类型 : ContentFilteringFinishEvent
发送到内容过滤端.
隐形动作
类型 : StealthActionEvent
秘密行动.
隐形 Allowlist 动作
类型 : StealthAllowlistActionEvent
负责防止秘密行动 $stealth 规则.
Js 导入
类型 : JsInjectEvent
发送到 js 注入页面上下文 .
属性
运行于LogEvent
类型 : EventChannel<FilteringLogEvent>
事件频道 过滤日志事件。 。 。 .
方法
添加事件倾听器( )
类型 :
<T extends FilteringEventType>(type: T, listener: FilteringLogListener<ExtractedFilteringLogEvent<T>>) => void
注册指定的过滤事件类型的听众.
发布 Event ()
类型 :
<T extends FilteringLogEvent>(event: T) => void
发送指定的过滤事件 .