禁用 WebRTC

禁用 WebRTC 防止泄露真实ip,默认禁用 WebRTC,脚本菜单选项用于启用/禁用当前域名的 WebRTC

当前为 2025-02-19 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name 禁用 WebRTC
  3. // @version 1.2
  4. // @description 禁用 WebRTC 防止泄露真实ip,默认禁用 WebRTC,脚本菜单选项用于启用/禁用当前域名的 WebRTC
  5. // @author ChatGPT
  6. // @match *://*/*
  7. // @grant GM_setValue
  8. // @grant GM_getValue
  9. // @grant GM_registerMenuCommand
  10. // @run-at document-start
  11. // @namespace https://greasyfork.org/users/452911
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. 'use strict';
  16.  
  17. // 获取启用站点列表,默认为空数组
  18. const enabledSites = GM_getValue('enabledSites', []);
  19. // 获取当前网站的域名
  20. const currentURL = window.location.hostname;
  21.  
  22. // 设置菜单命令的标签,根据当前域名是否在启用站点列表中决定显示的内容
  23. const menuCommandLabel = enabledSites.includes(currentURL)
  24. ? '设置当前域名禁用WebRTC'
  25. : '设置当前域名启用WebRTC';
  26.  
  27. // 注册菜单命令,点击后切换当前域名的启用/禁用状态
  28. GM_registerMenuCommand(menuCommandLabel, function() {
  29. if (enabledSites.includes(currentURL)) {
  30. // 如果当前域名在启用站点列表中,则将其移除
  31. GM_setValue('enabledSites', enabledSites.filter(site => site !== currentURL));
  32. } else {
  33. // 如果当前域名不在启用站点列表中,则将其加入
  34. GM_setValue('enabledSites', [...enabledSites, currentURL]);
  35. }
  36. });
  37.  
  38. // 默认禁用 WebRTC 的函数
  39. function disableWebRTC() {
  40. // 获取浏览器的 RTCPeerConnection 对象
  41. const RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || window.msRTCPeerConnection;
  42. if (RTCPeerConnection) {
  43. // 替换 RTCPeerConnection 为一个抛出错误的函数,阻止其使用
  44. window.RTCPeerConnection = function() {
  45. throw new Error("RTCPeerConnection is disabled");
  46. };
  47. window.RTCPeerConnection.prototype = {};
  48. }
  49. }
  50.  
  51. // 根据当前域名的状态启用或禁用 WebRTC
  52. if (!enabledSites.includes(currentURL)) {
  53. disableWebRTC();
  54. }
  55. })();