mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-13 01:30:37 +08:00
Feat: reject hosts accept third-party
This commit is contained in:
parent
b91747e07f
commit
ce95a2414a
@ -9,7 +9,8 @@ export const HOSTS: HostsSource[] = [
|
|||||||
['https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt', null, true, TTL.TWO_WEEKS()],
|
['https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt', null, true, TTL.TWO_WEEKS()],
|
||||||
['https://raw.githubusercontent.com/jerryn70/GoodbyeAds/master/Extension/GoodbyeAds-Xiaomi-Extension.txt', null, false, TTL.THREE_DAYS()],
|
['https://raw.githubusercontent.com/jerryn70/GoodbyeAds/master/Extension/GoodbyeAds-Xiaomi-Extension.txt', null, false, TTL.THREE_DAYS()],
|
||||||
['https://raw.githubusercontent.com/jerryn70/GoodbyeAds/master/Extension/GoodbyeAds-Huawei-AdBlock.txt', null, false, TTL.THREE_DAYS()],
|
['https://raw.githubusercontent.com/jerryn70/GoodbyeAds/master/Extension/GoodbyeAds-Huawei-AdBlock.txt', null, false, TTL.THREE_DAYS()],
|
||||||
['https://raw.githubusercontent.com/durablenapkin/block/master/luminati.txt', null, true, TTL.THREE_HOURS()]
|
['https://raw.githubusercontent.com/durablenapkin/block/master/luminati.txt', null, true, TTL.THREE_HOURS()],
|
||||||
|
['https://raw.githubusercontent.com/durablenapkin/block/refs/heads/master/tvstream.txt', null, true, TTL.THREE_HOURS()]
|
||||||
];
|
];
|
||||||
|
|
||||||
export const HOSTS_EXTRA: HostsSource[] = [
|
export const HOSTS_EXTRA: HostsSource[] = [
|
||||||
@ -29,17 +30,7 @@ export const HOSTS_EXTRA: HostsSource[] = [
|
|||||||
export const DOMAIN_LISTS: HostsSource[] = [
|
export const DOMAIN_LISTS: HostsSource[] = [
|
||||||
// CoinBlockerList
|
// CoinBlockerList
|
||||||
// Although the hosts file is still actively maintained, the hosts_browser file is not updated since 2021-07, so we set a 14 days cache ttl
|
// Although the hosts file is still actively maintained, the hosts_browser file is not updated since 2021-07, so we set a 14 days cache ttl
|
||||||
['https://zerodot1.gitlab.io/CoinBlockerLists/list_browser.txt', [], true, TTL.TWO_WEEKS()],
|
['https://zerodot1.gitlab.io/CoinBlockerLists/list_browser.txt', [], true, TTL.TWO_WEEKS()]
|
||||||
|
|
||||||
// Curben's UrlHaus Malicious URL Blocklist
|
|
||||||
[
|
|
||||||
'https://curbengh.github.io/urlhaus-filter/urlhaus-filter-domains.txt',
|
|
||||||
[
|
|
||||||
'https://urlhaus-filter.pages.dev/urlhaus-filter-domains.txt',
|
|
||||||
'https://malware-filter.gitlab.io/malware-filter/urlhaus-filter-domains.txt'
|
|
||||||
],
|
|
||||||
true, TTL.THREE_HOURS()
|
|
||||||
]
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export const DOMAIN_LISTS_EXTRA: HostsSource[] = [
|
export const DOMAIN_LISTS_EXTRA: HostsSource[] = [
|
||||||
@ -67,6 +58,15 @@ export const DOMAIN_LISTS_EXTRA: HostsSource[] = [
|
|||||||
'https://malware-filter.gitlab.io/pup-filter/pup-filter-domains.txt'
|
'https://malware-filter.gitlab.io/pup-filter/pup-filter-domains.txt'
|
||||||
],
|
],
|
||||||
true, TTL.TWO_WEEKS()
|
true, TTL.TWO_WEEKS()
|
||||||
|
],
|
||||||
|
// Curben's UrlHaus Malicious URL Blocklist
|
||||||
|
[
|
||||||
|
'https://curbengh.github.io/urlhaus-filter/urlhaus-filter-domains.txt',
|
||||||
|
[
|
||||||
|
'https://urlhaus-filter.pages.dev/urlhaus-filter-domains.txt',
|
||||||
|
'https://malware-filter.gitlab.io/malware-filter/urlhaus-filter-domains.txt'
|
||||||
|
],
|
||||||
|
true, TTL.THREE_HOURS()
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ export const PHISHING_DOMAIN_LISTS_EXTRA: [HostsSource, HostsSource] = [
|
|||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
type AdGuardFilterSource = [main: string, mirrors: string[] | null, ttl: number];
|
type AdGuardFilterSource = [main: string, mirrors: string[] | null, ttl: number, allowThirdParty?: boolean];
|
||||||
|
|
||||||
export const ADGUARD_FILTERS: AdGuardFilterSource[] = [
|
export const ADGUARD_FILTERS: AdGuardFilterSource[] = [
|
||||||
// EasyList
|
// EasyList
|
||||||
@ -151,9 +151,9 @@ export const ADGUARD_FILTERS: AdGuardFilterSource[] = [
|
|||||||
|
|
||||||
export const ADGUARD_FILTERS_EXTRA: AdGuardFilterSource[] = [
|
export const ADGUARD_FILTERS_EXTRA: AdGuardFilterSource[] = [
|
||||||
// AdGuard Annoyances filter
|
// AdGuard Annoyances filter
|
||||||
['https://filters.adtidy.org/android/filters/14_optimized.txt', null, TTL.THREE_HOURS()],
|
['https://filters.adtidy.org/android/filters/14_optimized.txt', null, TTL.THREE_HOURS(), true],
|
||||||
// AdGuard Cookie Notices
|
// AdGuard Cookie Notices
|
||||||
['https://filters.adtidy.org/extension/ublock/filters/18_optimized.txt', null, TTL.THREE_HOURS()],
|
['https://filters.adtidy.org/extension/ublock/filters/18_optimized.txt', null, TTL.THREE_HOURS(), true],
|
||||||
// EasyList Germany filter
|
// EasyList Germany filter
|
||||||
[
|
[
|
||||||
'https://easylist.to/easylistgermany/easylistgermany.txt',
|
'https://easylist.to/easylistgermany/easylistgermany.txt',
|
||||||
@ -173,9 +173,10 @@ export const ADGUARD_FILTERS_EXTRA: AdGuardFilterSource[] = [
|
|||||||
TTL.THREE_HOURS()
|
TTL.THREE_HOURS()
|
||||||
],
|
],
|
||||||
// AdGuard Popup Overlay
|
// AdGuard Popup Overlay
|
||||||
['https://filters.adtidy.org/extension/ublock/filters/19_optimized.txt', null, TTL.THREE_HOURS()],
|
['https://filters.adtidy.org/extension/ublock/filters/19_optimized.txt', null, TTL.THREE_HOURS(), true],
|
||||||
// AdGuard Mobile Banner
|
// AdGuard Mobile Banner
|
||||||
['https://filters.adtidy.org/extension/ublock/filters/20_optimized.txt', null, TTL.THREE_HOURS()],
|
// almost all generic rule
|
||||||
|
// ['https://filters.adtidy.org/extension/ublock/filters/20_optimized.txt', null, TTL.THREE_HOURS()],
|
||||||
// uBlock Origin Badware Risk List
|
// uBlock Origin Badware Risk List
|
||||||
[
|
[
|
||||||
'https://ublockorigin.github.io/uAssetsCDN/filters/badware.min.txt',
|
'https://ublockorigin.github.io/uAssetsCDN/filters/badware.min.txt',
|
||||||
|
|||||||
@ -148,7 +148,8 @@ export async function processFilterRules(
|
|||||||
parentSpan: Span,
|
parentSpan: Span,
|
||||||
filterRulesUrl: string,
|
filterRulesUrl: string,
|
||||||
fallbackUrls?: readonly string[] | null,
|
fallbackUrls?: readonly string[] | null,
|
||||||
ttl: number | null = null
|
ttl: number | null = null,
|
||||||
|
allowThirdParty = false
|
||||||
): Promise<{ white: string[], black: string[], foundDebugDomain: boolean }> {
|
): Promise<{ white: string[], black: string[], foundDebugDomain: boolean }> {
|
||||||
const [white, black, warningMessages] = await parentSpan.traceChild(`process filter rules: ${filterRulesUrl}`).traceAsyncFn((span) => fsFetchCache.apply<Readonly<[
|
const [white, black, warningMessages] = await parentSpan.traceChild(`process filter rules: ${filterRulesUrl}`).traceAsyncFn((span) => fsFetchCache.apply<Readonly<[
|
||||||
white: string[],
|
white: string[],
|
||||||
@ -167,7 +168,7 @@ export async function processFilterRules(
|
|||||||
* @param {string} line
|
* @param {string} line
|
||||||
*/
|
*/
|
||||||
const lineCb = (line: string) => {
|
const lineCb = (line: string) => {
|
||||||
const result = parse(line, MUTABLE_PARSE_LINE_RESULT);
|
const result = parse(line, MUTABLE_PARSE_LINE_RESULT, allowThirdParty);
|
||||||
const flag = result[1];
|
const flag = result[1];
|
||||||
|
|
||||||
if (flag === ParseType.Null) {
|
if (flag === ParseType.Null) {
|
||||||
@ -295,7 +296,7 @@ const kwfilter = createKeywordFilter([
|
|||||||
'^popup'
|
'^popup'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
export function parse($line: string, result: [string, ParseType]): [hostname: string, flag: ParseType] {
|
export function parse($line: string, result: [string, ParseType], allowThirdParty: boolean): [hostname: string, flag: ParseType] {
|
||||||
if (
|
if (
|
||||||
// doesn't include
|
// doesn't include
|
||||||
!$line.includes('.') // rule with out dot can not be a domain
|
!$line.includes('.') // rule with out dot can not be a domain
|
||||||
@ -391,6 +392,11 @@ export function parse($line: string, result: [string, ParseType]): [hostname: st
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
if (_3p) {
|
if (_3p) {
|
||||||
|
if (allowThirdParty) {
|
||||||
|
result[0] = hostname;
|
||||||
|
result[1] = isIncludeAllSubDomain ? ParseType.BlackIncludeSubdomain : ParseType.BlackAbsolute;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
result[1] = ParseType.Null;
|
result[1] = ParseType.Null;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user