-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathblock-html5-p2p.user.js
70 lines (63 loc) · 2.36 KB
/
block-html5-p2p.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// ==UserScript==
// @name 屏蔽html5播放器p2p上传
// @version 0.1.4
// @description 屏蔽html5播放器使用WebRTC技术进行p2p上传,以及防止通过p2p泄露ip,如斗鱼直播后台上传等。需要注意默认屏蔽所有网站html5的p2p功能,需要使用p2p的网站请自行加入排除列表,如网易uu语音、twitch等。嫌麻烦的请勿用。
// @author binsee
// @namespace https://github.com/binsee/tampermonkey-scripts
// @supportURL https://github.com/binsee/tampermonkey-scripts/issues
// @license GPL
// @run-at document-start
// @match *://*.douyu.com/*
// @match *://*.qq.com/*
// @match *://*.huya.com/*
// @match *://*/*
// @exclude *://*.bilibili.com/*
// @exclude *://*.discord.com/*
// @exclude *://*.twitch.tv/*
// @exclude *://*.ext-twitch.tv/*
// @grant none
// ==/UserScript==
let HookFlag = false
let debugFlag = true
let jsName = '屏蔽html5播放器p2p上传'
let logger = {
debug: createDebugMethod('debug'),
info: createDebugMethod('info'),
warn: createDebugMethod('warn'),
error: createDebugMethod('error')
};
function createDebugMethod(name) {
const bgColorMap = {
debug: '#0070BB',
info: '#009966',
warn: '#BBBB23',
error: '#bc0004'
};
name = bgColorMap[name] ? name : 'info';
return function () {
const args = Array.from(arguments);
args.unshift(`color: white; background-color: ${bgColorMap[name] || '#FFFFFF'}`);
args.unshift(`【${jsName}】 %c[${name.toUpperCase()}]:`);
console[name].apply(console, args);
}
}
(function () {
'use strict';
let funNameList = [
'RTCPeerConnection',
'webkitRTCPeerConnection',
'mozRTCPeerConnection',
'msRTCPeerConnectio',
]
funNameList.forEach(name => {
if (typeof window._RTCPeerConnection === "undefined") window._RTCPeerConnection = window[name];
if (typeof window[name] !== "undefined") window[name] = debugFlag ? MyPeerConnection : undefined;
})
logger.info('已屏蔽p2p上传功能')
function MyPeerConnection(args) {
logger.debug(`PeerConnection() 被调用!
当前页面尝试建立p2p连接!
调用参数: ${JSON.stringify(args)}`)
return HookFlag ? new window._RTCPeerConnection(args) : undefined
}
})();