禁用 WebRTC 防止泄露真实ip,默认禁用 WebRTC,脚本菜单选项用于启用/禁用当前域名的 WebRTC
当前为
// ==UserScript==
// @name 禁用 WebRTC
// @version 1.2
// @description 禁用 WebRTC 防止泄露真实ip,默认禁用 WebRTC,脚本菜单选项用于启用/禁用当前域名的 WebRTC
// @author ChatGPT
// @match *://*/*
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_registerMenuCommand
// @run-at document-start
// @namespace https://greasyfork.org/users/452911
// ==/UserScript==
(function() {
'use strict';
// 获取启用站点列表,默认为空数组
const enabledSites = GM_getValue('enabledSites', []);
// 获取当前网站的域名
const currentURL = window.location.hostname;
// 设置菜单命令的标签,根据当前域名是否在启用站点列表中决定显示的内容
const menuCommandLabel = enabledSites.includes(currentURL)
? '设置当前域名禁用WebRTC'
: '设置当前域名启用WebRTC';
// 注册菜单命令,点击后切换当前域名的启用/禁用状态
GM_registerMenuCommand(menuCommandLabel, function() {
if (enabledSites.includes(currentURL)) {
// 如果当前域名在启用站点列表中,则将其移除
GM_setValue('enabledSites', enabledSites.filter(site => site !== currentURL));
} else {
// 如果当前域名不在启用站点列表中,则将其加入
GM_setValue('enabledSites', [...enabledSites, currentURL]);
}
});
// 默认禁用 WebRTC 的函数
function disableWebRTC() {
// 获取浏览器的 RTCPeerConnection 对象
const RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || window.msRTCPeerConnection;
if (RTCPeerConnection) {
// 替换 RTCPeerConnection 为一个抛出错误的函数,阻止其使用
window.RTCPeerConnection = function() {
throw new Error("RTCPeerConnection is disabled");
};
window.RTCPeerConnection.prototype = {};
}
}
// 根据当前域名的状态启用或禁用 WebRTC
if (!enabledSites.includes(currentURL)) {
disableWebRTC();
}
})();