mirror of
https://github.com/privacy-protection-tools/anti-AD.git
synced 2025-02-13 17:12:41 +08:00
重构代码
This commit is contained in:
parent
bb73343c40
commit
6408403d96
@ -1,5 +1,6 @@
|
||||
#VER=20200208042322
|
||||
#VER=20200210091359
|
||||
#URL=https://github.com/privacy-protection-tools/anti-AD
|
||||
#TOTAL COUNT=31344
|
||||
address=/0024aaaa.com/
|
||||
address=/0026645142c89aeb1.com/
|
||||
address=/003store.com/
|
||||
@ -1474,9 +1475,18 @@ address=/snbnhngl.ifeng.com/
|
||||
address=/stadig.ifeng.com/
|
||||
address=/ztyumn.ifeng.com/
|
||||
address=/api.iapps.ifeng.com/
|
||||
address=/api.newad.ifeng.com/
|
||||
address=/dmpclick.deliver.ifeng.com/
|
||||
address=/dol.deliver.ifeng.com/
|
||||
address=/dolphin.deliver.ifeng.com/
|
||||
address=/err.ifengcloud.ifeng.com/
|
||||
address=/exp.3g.ifeng.com/
|
||||
address=/ids.deliver.ifeng.com/
|
||||
address=/ids1.deliver.ifeng.com/
|
||||
address=/ifengad.3g.ifeng.com/
|
||||
address=/iis1.deliver.ifeng.com/
|
||||
address=/iis3g.deliver.ifeng.com/
|
||||
address=/mfp.deliver.ifeng.com/
|
||||
address=/stadig0.ifeng.com/
|
||||
address=/aa24h.com/
|
||||
address=/aa53df329975c325.com/
|
||||
@ -4352,14 +4362,28 @@ address=/mlog.aipai.com/
|
||||
address=/apas.aipai.com/
|
||||
address=/atlas.astrology.com/
|
||||
address=/cmstool.youku.com/
|
||||
address=/adp.atm.youku.com/
|
||||
address=/bsv.atm.youku.com/
|
||||
address=/count.atm.youku.com/
|
||||
address=/dmapp.youku.com/
|
||||
address=/html.atm.youku.com/
|
||||
address=/ipm.atm.youku.com/
|
||||
address=/iyes.youku.com/
|
||||
address=/m.atm.youku.com/
|
||||
address=/mf.atm.youku.com/
|
||||
address=/mobilemsg.youku.com/
|
||||
address=/myes.youku.com/
|
||||
address=/push.m.youku.com/
|
||||
address=/r.l.youku.com/
|
||||
address=/service.danmu.youku.com/
|
||||
address=/statis.mobile.youku.com/
|
||||
address=/v2html.atm.youku.com/
|
||||
address=/val.atm.youku.com/
|
||||
address=/valb.atm.youku.com/
|
||||
address=/valc.atm.youku.com/
|
||||
address=/valf.atm.youku.com/
|
||||
address=/valp.atm.youku.com/
|
||||
address=/valt.atm.youku.com/
|
||||
address=/ad.api.3g.tudou.com/
|
||||
address=/ad.api.mobile.youku.com/
|
||||
address=/atmalinks.com/
|
||||
@ -7487,6 +7511,7 @@ address=/cpl1.ru/
|
||||
address=/cpm.amateurcommunity.com/
|
||||
address=/cpm.amateurcommunity.de/
|
||||
address=/cpm.biz/
|
||||
address=/cm.kankan.com/
|
||||
address=/biz5.kankan.com/
|
||||
address=/stat.kankan.com/
|
||||
address=/kkpgv.kankan.com/
|
||||
@ -8150,14 +8175,27 @@ address=/da-ads.com/
|
||||
address=/as.mgtv.com/
|
||||
address=/audit.aaa.mgtv.com/
|
||||
address=/cmop.mgtv.com/
|
||||
address=/imgaliyun.da.mgtv.com/
|
||||
address=/imgaliyun.res.mgtv.com/
|
||||
address=/m2.da.mgtv.com/
|
||||
address=/mobaliyun.res.mgtv.com/
|
||||
address=/mobile.da.mgtv.com/
|
||||
address=/mobile2.da.mgtv.com/
|
||||
address=/pc.da.mgtv.com/
|
||||
address=/pc1.da.mgtv.com/
|
||||
address=/pcvideoaliyun.titan.mgtv.com/
|
||||
address=/pcvideoyd.titan.mgtv.com/
|
||||
address=/pcweb-v1.log.mgtv.com/
|
||||
address=/pcweb.v1.mgtv.com/
|
||||
address=/py.da.mgtv.com/
|
||||
address=/v1-play.log.mgtv.com/
|
||||
address=/v2.da.mgtv.com/
|
||||
address=/v2.log.mgtv.com/
|
||||
address=/web.da.mgtv.com/
|
||||
address=/web2.da.mgtv.com/
|
||||
address=/x.da.mgtv.com/
|
||||
address=/y.da.mgtv.com/
|
||||
address=/ys.da.mgtv.com/
|
||||
address=/da.netease.com/
|
||||
address=/analytics.hz.netease.com/
|
||||
address=/statis.push.netease.com/
|
||||
@ -15968,8 +16006,6 @@ address=/mindlytix.com/
|
||||
address=/mindopu.com/
|
||||
address=/mindrook.com/
|
||||
address=/mindtake.com/
|
||||
address=/mine.nahnoji.cz/
|
||||
address=/js.nahnoji.cz/
|
||||
address=/torrent.pw/
|
||||
address=/minemytraffic.com/
|
||||
address=/minerad.com/
|
||||
@ -27853,7 +27889,6 @@ address=/valf.atm.cp31.ott.cibntv.net/
|
||||
address=/adinf.voole.com/
|
||||
address=/apkinfo.voole.com/
|
||||
address=/adinfo.ra1.xlmc.sec.miui.com/
|
||||
address=/adv.sec.miui.com/
|
||||
address=/api.ra2.xlmc.sec.miui.com/
|
||||
address=/api.sec.miui.com/
|
||||
address=/api.tw06.xlmc.sec.miui.com/
|
||||
@ -31004,7 +31039,6 @@ address=/crosspromo.voodoo.io/
|
||||
address=/adtilt.com/
|
||||
address=/activity.m.duiba.com.cn/
|
||||
address=/activity.tuiapple.com/
|
||||
address=/ad.api.3g.tudou.com/
|
||||
address=/api.tatagou.com.cn/
|
||||
address=/app.shandjj.com/
|
||||
address=/tj.koudaitong.com/
|
||||
|
@ -1,5 +1,6 @@
|
||||
#VER=20200208042322
|
||||
#VER=20200210091359
|
||||
#URL=https://github.com/privacy-protection-tools/anti-AD
|
||||
#TOTAL COUNT=35855
|
||||
0024aaaa.com
|
||||
0026645142c89aeb1.com
|
||||
003store.com
|
||||
@ -9046,6 +9047,7 @@ count.cpm.cm.kankan.com
|
||||
distf.stat.kankan.com
|
||||
kkpgv.kankan.com
|
||||
kkpgv2.kankan.com
|
||||
cm.kankan.com
|
||||
float.kankan.com
|
||||
stat.kankan.com
|
||||
cpm10.com
|
||||
@ -18663,8 +18665,6 @@ mindlytix.com
|
||||
mindopu.com
|
||||
mindrook.com
|
||||
mindtake.com
|
||||
mine.nahnoji.cz
|
||||
js.nahnoji.cz
|
||||
mine.torrent.pw
|
||||
torrent.pw
|
||||
minemytraffic.com
|
||||
|
1597
anti-ad-easylist.txt
1597
anti-ad-easylist.txt
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,6 @@
|
||||
#VER=20200208042322
|
||||
#VER=20200210091359
|
||||
#URL=https://github.com/privacy-protection-tools/anti-AD
|
||||
#TOTAL COUNT=31344
|
||||
DOMAIN-SUFFIX,0024aaaa.com
|
||||
DOMAIN-SUFFIX,0026645142c89aeb1.com
|
||||
DOMAIN-SUFFIX,003store.com
|
||||
@ -1474,9 +1475,18 @@ DOMAIN-SUFFIX,snbnhngl.ifeng.com
|
||||
DOMAIN-SUFFIX,stadig.ifeng.com
|
||||
DOMAIN-SUFFIX,ztyumn.ifeng.com
|
||||
DOMAIN-SUFFIX,api.iapps.ifeng.com
|
||||
DOMAIN-SUFFIX,api.newad.ifeng.com
|
||||
DOMAIN-SUFFIX,dmpclick.deliver.ifeng.com
|
||||
DOMAIN-SUFFIX,dol.deliver.ifeng.com
|
||||
DOMAIN-SUFFIX,dolphin.deliver.ifeng.com
|
||||
DOMAIN-SUFFIX,err.ifengcloud.ifeng.com
|
||||
DOMAIN-SUFFIX,exp.3g.ifeng.com
|
||||
DOMAIN-SUFFIX,ids.deliver.ifeng.com
|
||||
DOMAIN-SUFFIX,ids1.deliver.ifeng.com
|
||||
DOMAIN-SUFFIX,ifengad.3g.ifeng.com
|
||||
DOMAIN-SUFFIX,iis1.deliver.ifeng.com
|
||||
DOMAIN-SUFFIX,iis3g.deliver.ifeng.com
|
||||
DOMAIN-SUFFIX,mfp.deliver.ifeng.com
|
||||
DOMAIN-SUFFIX,stadig0.ifeng.com
|
||||
DOMAIN-SUFFIX,aa24h.com
|
||||
DOMAIN-SUFFIX,aa53df329975c325.com
|
||||
@ -4352,14 +4362,28 @@ DOMAIN-SUFFIX,mlog.aipai.com
|
||||
DOMAIN-SUFFIX,apas.aipai.com
|
||||
DOMAIN-SUFFIX,atlas.astrology.com
|
||||
DOMAIN-SUFFIX,cmstool.youku.com
|
||||
DOMAIN-SUFFIX,adp.atm.youku.com
|
||||
DOMAIN-SUFFIX,bsv.atm.youku.com
|
||||
DOMAIN-SUFFIX,count.atm.youku.com
|
||||
DOMAIN-SUFFIX,dmapp.youku.com
|
||||
DOMAIN-SUFFIX,html.atm.youku.com
|
||||
DOMAIN-SUFFIX,ipm.atm.youku.com
|
||||
DOMAIN-SUFFIX,iyes.youku.com
|
||||
DOMAIN-SUFFIX,m.atm.youku.com
|
||||
DOMAIN-SUFFIX,mf.atm.youku.com
|
||||
DOMAIN-SUFFIX,mobilemsg.youku.com
|
||||
DOMAIN-SUFFIX,myes.youku.com
|
||||
DOMAIN-SUFFIX,push.m.youku.com
|
||||
DOMAIN-SUFFIX,r.l.youku.com
|
||||
DOMAIN-SUFFIX,service.danmu.youku.com
|
||||
DOMAIN-SUFFIX,statis.mobile.youku.com
|
||||
DOMAIN-SUFFIX,v2html.atm.youku.com
|
||||
DOMAIN-SUFFIX,val.atm.youku.com
|
||||
DOMAIN-SUFFIX,valb.atm.youku.com
|
||||
DOMAIN-SUFFIX,valc.atm.youku.com
|
||||
DOMAIN-SUFFIX,valf.atm.youku.com
|
||||
DOMAIN-SUFFIX,valp.atm.youku.com
|
||||
DOMAIN-SUFFIX,valt.atm.youku.com
|
||||
DOMAIN-SUFFIX,ad.api.3g.tudou.com
|
||||
DOMAIN-SUFFIX,ad.api.mobile.youku.com
|
||||
DOMAIN-SUFFIX,atmalinks.com
|
||||
@ -7487,6 +7511,7 @@ DOMAIN-SUFFIX,cpl1.ru
|
||||
DOMAIN-SUFFIX,cpm.amateurcommunity.com
|
||||
DOMAIN-SUFFIX,cpm.amateurcommunity.de
|
||||
DOMAIN-SUFFIX,cpm.biz
|
||||
DOMAIN-SUFFIX,cm.kankan.com
|
||||
DOMAIN-SUFFIX,biz5.kankan.com
|
||||
DOMAIN-SUFFIX,stat.kankan.com
|
||||
DOMAIN-SUFFIX,kkpgv.kankan.com
|
||||
@ -8150,14 +8175,27 @@ DOMAIN-SUFFIX,da-ads.com
|
||||
DOMAIN-SUFFIX,as.mgtv.com
|
||||
DOMAIN-SUFFIX,audit.aaa.mgtv.com
|
||||
DOMAIN-SUFFIX,cmop.mgtv.com
|
||||
DOMAIN-SUFFIX,imgaliyun.da.mgtv.com
|
||||
DOMAIN-SUFFIX,imgaliyun.res.mgtv.com
|
||||
DOMAIN-SUFFIX,m2.da.mgtv.com
|
||||
DOMAIN-SUFFIX,mobaliyun.res.mgtv.com
|
||||
DOMAIN-SUFFIX,mobile.da.mgtv.com
|
||||
DOMAIN-SUFFIX,mobile2.da.mgtv.com
|
||||
DOMAIN-SUFFIX,pc.da.mgtv.com
|
||||
DOMAIN-SUFFIX,pc1.da.mgtv.com
|
||||
DOMAIN-SUFFIX,pcvideoaliyun.titan.mgtv.com
|
||||
DOMAIN-SUFFIX,pcvideoyd.titan.mgtv.com
|
||||
DOMAIN-SUFFIX,pcweb-v1.log.mgtv.com
|
||||
DOMAIN-SUFFIX,pcweb.v1.mgtv.com
|
||||
DOMAIN-SUFFIX,py.da.mgtv.com
|
||||
DOMAIN-SUFFIX,v1-play.log.mgtv.com
|
||||
DOMAIN-SUFFIX,v2.da.mgtv.com
|
||||
DOMAIN-SUFFIX,v2.log.mgtv.com
|
||||
DOMAIN-SUFFIX,web.da.mgtv.com
|
||||
DOMAIN-SUFFIX,web2.da.mgtv.com
|
||||
DOMAIN-SUFFIX,x.da.mgtv.com
|
||||
DOMAIN-SUFFIX,y.da.mgtv.com
|
||||
DOMAIN-SUFFIX,ys.da.mgtv.com
|
||||
DOMAIN-SUFFIX,da.netease.com
|
||||
DOMAIN-SUFFIX,analytics.hz.netease.com
|
||||
DOMAIN-SUFFIX,statis.push.netease.com
|
||||
@ -15968,8 +16006,6 @@ DOMAIN-SUFFIX,mindlytix.com
|
||||
DOMAIN-SUFFIX,mindopu.com
|
||||
DOMAIN-SUFFIX,mindrook.com
|
||||
DOMAIN-SUFFIX,mindtake.com
|
||||
DOMAIN-SUFFIX,mine.nahnoji.cz
|
||||
DOMAIN-SUFFIX,js.nahnoji.cz
|
||||
DOMAIN-SUFFIX,torrent.pw
|
||||
DOMAIN-SUFFIX,minemytraffic.com
|
||||
DOMAIN-SUFFIX,minerad.com
|
||||
@ -27853,7 +27889,6 @@ DOMAIN-SUFFIX,valf.atm.cp31.ott.cibntv.net
|
||||
DOMAIN-SUFFIX,adinf.voole.com
|
||||
DOMAIN-SUFFIX,apkinfo.voole.com
|
||||
DOMAIN-SUFFIX,adinfo.ra1.xlmc.sec.miui.com
|
||||
DOMAIN-SUFFIX,adv.sec.miui.com
|
||||
DOMAIN-SUFFIX,api.ra2.xlmc.sec.miui.com
|
||||
DOMAIN-SUFFIX,api.sec.miui.com
|
||||
DOMAIN-SUFFIX,api.tw06.xlmc.sec.miui.com
|
||||
@ -31004,7 +31039,6 @@ DOMAIN-SUFFIX,crosspromo.voodoo.io
|
||||
DOMAIN-SUFFIX,adtilt.com
|
||||
DOMAIN-SUFFIX,activity.m.duiba.com.cn
|
||||
DOMAIN-SUFFIX,activity.tuiapple.com
|
||||
DOMAIN-SUFFIX,ad.api.3g.tudou.com
|
||||
DOMAIN-SUFFIX,api.tatagou.com.cn
|
||||
DOMAIN-SUFFIX,app.shandjj.com
|
||||
DOMAIN-SUFFIX,tj.koudaitong.com
|
||||
|
@ -70,9 +70,10 @@ class addressMaker{
|
||||
*
|
||||
* @param String $str_easylist 原始的easylist列表字符串
|
||||
* @param Boolean $strict_mode 严格模式,启用时将屏蔽该域所在的主域名,例如www.baidu.com,将获取到baidu.com并写入最终列表
|
||||
* @param Array $arr_whitelist 白名单列表
|
||||
* @return array
|
||||
*/
|
||||
public static function get_domain_from_easylist($str_easylist, $strict_mode = false){
|
||||
public static function get_domain_from_easylist($str_easylist, $strict_mode = false, $arr_whitelist = array()){
|
||||
$strlen = strlen($str_easylist);
|
||||
if($strlen < 10){
|
||||
return array();
|
||||
@ -102,7 +103,7 @@ class addressMaker{
|
||||
$row = $matches[1];
|
||||
}
|
||||
$main_domain = self::extract_main_domain($matches[1]);
|
||||
if($strict_mode && !array_key_exists($main_domain, $GLOBALS['arr_whitelist'])){
|
||||
if($strict_mode && (!array_key_exists($main_domain, $arr_whitelist) || ($arr_whitelist[$main_domain] === 1))){
|
||||
$arr_domains[$main_domain] = array($main_domain);
|
||||
}else{
|
||||
$arr_domains[$main_domain][] = $row;
|
||||
@ -118,9 +119,10 @@ class addressMaker{
|
||||
*
|
||||
* @param String $str_hosts 原始的hosts字符串
|
||||
* @param Boolean $strict_mode 严格模式,启用时将屏蔽该域所在的主域名,例如www.baidu.com,将获取到baidu.com并写入最终列表
|
||||
* @param Array $arr_whitelist 白名单
|
||||
* @return array
|
||||
*/
|
||||
public static function get_domain_list($str_hosts, $strict_mode = false){
|
||||
public static function get_domain_list($str_hosts, $strict_mode = false, $arr_whitelist = array()){
|
||||
$strlen = strlen($str_hosts);
|
||||
if($strlen < 3){
|
||||
return array();
|
||||
@ -150,7 +152,7 @@ class addressMaker{
|
||||
continue;
|
||||
}
|
||||
$main_domain = self::extract_main_domain($row[1]);
|
||||
if($strict_mode && !array_key_exists($main_domain, $GLOBALS['arr_whitelist'])){
|
||||
if($strict_mode && (!array_key_exists($main_domain, $arr_whitelist) || ($arr_whitelist[$main_domain] === 1))){
|
||||
$arr_domains[$main_domain] = array($main_domain);
|
||||
}else{
|
||||
$arr_domains[$main_domain][] = $row[1];
|
||||
@ -160,92 +162,115 @@ class addressMaker{
|
||||
return $arr_domains;
|
||||
}
|
||||
|
||||
private static function write_conf_header($fp, $header){
|
||||
private static function write_conf_header($fp, $header, $arr_params = array()){
|
||||
$header = str_replace('{DATE}', date('YmdHis'), $header);
|
||||
$header = str_replace('{URL}', self::LINK_URL, $header);
|
||||
|
||||
foreach($arr_params as $keyword => $val){
|
||||
$header = str_replace('{' . $keyword . '}', $val, $header);
|
||||
}
|
||||
return fwrite($fp, $header);
|
||||
}
|
||||
|
||||
public static function write_to_conf($arr_result, $formatObj){
|
||||
/**
|
||||
* 写入结果到最终文件
|
||||
*
|
||||
* @param array $arr_src
|
||||
* @param $arr_format
|
||||
* @param array $arr_whitelist
|
||||
* @return false|int
|
||||
*/
|
||||
public static function write_to_file(array $arr_src, array $arr_format, $arr_whitelist = array()){
|
||||
|
||||
$fp = fopen(ROOT_DIR . $formatObj['filename'], 'w');
|
||||
$write_len = self::write_conf_header($fp, $formatObj['header']);
|
||||
if(count($arr_src) < 1){
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach($arr_result as $rk => $rv){
|
||||
$str_result = '';
|
||||
$line_count = 0;
|
||||
|
||||
$arr_written = [];
|
||||
foreach($arr_src as $main_domain => $arr_subdomains){
|
||||
|
||||
if(array_key_exists($main_domain, $arr_whitelist) && ($arr_whitelist[$main_domain] > 0)){
|
||||
continue;
|
||||
}
|
||||
|
||||
if(empty($main_domain)){//不匹配记录(一般是不合法域名或者未收录的后缀)
|
||||
continue;
|
||||
}
|
||||
|
||||
$arr_subdomains = array_unique($arr_subdomains);
|
||||
|
||||
if(
|
||||
array_key_exists($rk, $GLOBALS['arr_whitelist'])
|
||||
&& ($GLOBALS['arr_whitelist'][$rk] > 0)
|
||||
){//主域名在白名单的,并且标识为1的,整个不写入屏蔽列表,
|
||||
continue;
|
||||
}
|
||||
|
||||
if(empty($rk)){//遗漏的域名,不会写入到最终的配置里
|
||||
// print_r($rv);
|
||||
continue;
|
||||
}
|
||||
|
||||
$rv = array_unique($rv);
|
||||
|
||||
if((in_array('.' . $rk, $rv) || in_array('www.' . $rk, $rv) || in_array($rk, $rv))
|
||||
&& !array_key_exists($rk, $GLOBALS['arr_whitelist'])
|
||||
&& (1 !== $formatObj['full_domain'])
|
||||
(1 !== $arr_format['full_domain'])
|
||||
&& (in_array($main_domain, $arr_subdomains) || in_array('www.' . $main_domain, $arr_subdomains))
|
||||
&& (!array_key_exists($main_domain, $arr_whitelist) || $arr_whitelist[$main_domain] > 0)
|
||||
){
|
||||
$write_len += fwrite($fp, str_replace('{DOMAIN}', $rk, $formatObj['format']) . "\n");
|
||||
$str_result .= str_replace('{DOMAIN}', $main_domain, $arr_format['format']) . "\n";
|
||||
$line_count ++;
|
||||
continue;
|
||||
}
|
||||
|
||||
$arr_written = [];
|
||||
foreach($rv as $rvv){
|
||||
if(array_key_exists($rvv, $GLOBALS['arr_whitelist'])){
|
||||
foreach($arr_subdomains as $subdomain){
|
||||
if(array_key_exists($subdomain, $arr_whitelist)){
|
||||
continue;
|
||||
}
|
||||
if(1 === $arr_format['full_domain']){
|
||||
$str_result .= str_replace('{DOMAIN}', $subdomain, $arr_format['format']) . "\n";
|
||||
$line_count ++;
|
||||
$arr_written[] = $subdomain;
|
||||
continue;
|
||||
}
|
||||
|
||||
//合并三级域名逻辑
|
||||
$tmp_arr1 = explode('.', $rvv);
|
||||
$written_flag = false;
|
||||
$tmp_arr1_len = count($tmp_arr1);
|
||||
$arr_tmp_domain = explode('.', $subdomain);
|
||||
$tmp_domain_len = count($arr_tmp_domain);
|
||||
if($tmp_domain_len < 3){
|
||||
$str_result .= str_replace('{DOMAIN}', $subdomain, $arr_format['format']) . "\n";
|
||||
$line_count ++;
|
||||
$arr_written[] = $subdomain;
|
||||
continue;
|
||||
}
|
||||
|
||||
if($tmp_arr1_len > 2){
|
||||
for($tmp_pos = 3; $tmp_pos <= $tmp_arr1_len; $tmp_pos++){
|
||||
$tmp_arr2 = array_slice($tmp_arr1, -1 * $tmp_pos);
|
||||
$tmp_domain = implode('.', $tmp_arr2);
|
||||
if(array_key_exists($tmp_domain, $GLOBALS['arr_whitelist'])
|
||||
&& (1 === $GLOBALS['arr_whitelist'][$tmp_domain])){
|
||||
$written_flag = true;
|
||||
break;
|
||||
$matched_flag = false;
|
||||
for($pos = 3; $pos <= $tmp_domain_len; $pos ++){
|
||||
$arr_tmp = array_slice($arr_tmp_domain, -1 * $pos);
|
||||
$tmp = implode('.', $arr_tmp);
|
||||
if(array_key_exists($tmp, $arr_whitelist)){
|
||||
if($arr_whitelist[$tmp] === 1){
|
||||
$matched_flag = true;
|
||||
}else{
|
||||
$matched_flag = false;
|
||||
$arr_written[] = $tmp;
|
||||
}
|
||||
if((1 !== $formatObj['full_domain']) && in_array($tmp_domain, $rv)){
|
||||
if(!in_array($tmp_domain, $arr_written)){
|
||||
if(array_key_exists($tmp_domain, $GLOBALS['arr_whitelist'])){
|
||||
continue;
|
||||
}
|
||||
$arr_written[] = $tmp_domain;
|
||||
$write_len += fwrite(
|
||||
$fp,
|
||||
str_replace('{DOMAIN}',
|
||||
$tmp_domain,
|
||||
$formatObj['format']
|
||||
) . "\n"
|
||||
);
|
||||
}
|
||||
$written_flag = true;
|
||||
break;
|
||||
break;
|
||||
}elseif(($tmp === $subdomain) || in_array($tmp, $arr_subdomains)){
|
||||
if(!in_array($tmp, $arr_written)){
|
||||
$str_result .= str_replace('{DOMAIN}', $tmp, $arr_format['format']) . "\n";
|
||||
$line_count ++;
|
||||
$arr_written[] = $tmp;
|
||||
}
|
||||
$matched_flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(in_array($rvv, $arr_written) || $written_flag){
|
||||
if($matched_flag){
|
||||
continue;
|
||||
}
|
||||
|
||||
$arr_written[] = $rvv;
|
||||
$write_len += fwrite($fp, str_replace('{DOMAIN}', $rvv, $formatObj['format']) . "\n");
|
||||
if(!in_array($subdomain, $arr_written)){
|
||||
$str_result .= str_replace('{DOMAIN}', $subdomain, $arr_format['format']) . "\n";
|
||||
$line_count ++;
|
||||
$arr_written[] = $subdomain;
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($arr_written);
|
||||
|
||||
fclose($fp);
|
||||
|
||||
$fp = fopen(ROOT_DIR . $arr_format['filename'], 'w');
|
||||
$write_len = self::write_conf_header($fp, $arr_format['header'], array('COUNT' => $line_count));
|
||||
$write_len += fwrite($fp, $str_result);
|
||||
return $write_len;
|
||||
}
|
||||
}
|
@ -2,6 +2,7 @@
|
||||
//white_domain_list
|
||||
//白名单机制...,白名单是
|
||||
//@date 2018年12月23日
|
||||
//value=0,代表仅加白单条域名
|
||||
//value=1,代表其下级域名全部加白(例如3级域名,则其4级子域名全部加白)
|
||||
//value=2,代表仅加白主域名及其子域名,即如果是主域名,加白全部,如果是子域名,加白命中的单条
|
||||
|
||||
|
@ -11,12 +11,15 @@ class writerFormat{
|
||||
/*dnsmasq支持格式的屏蔽广告列表*/
|
||||
const DNSMASQ = array(
|
||||
'format' => 'address=/{DOMAIN}/',
|
||||
'header' => "#VER={DATE}\n#URL={URL}\n",
|
||||
'header' => "#VER={DATE}\n#URL={URL}\n#TOTAL COUNT={COUNT}\n",
|
||||
'full_domain' => 0,
|
||||
'name' => 'dnsmasq',
|
||||
'filename' => 'adblock-for-dnsmasq.conf',
|
||||
'require_black_list' => true,
|
||||
'require_white_list' => true,
|
||||
'whitelist_attached' => array(
|
||||
'base-dead-hosts.txt' =>array(
|
||||
'merge_mode' => 2, //0=单条,1=单条+子域名,2=根域名相当于1,非根域名相当于0
|
||||
),
|
||||
),
|
||||
'src' => array(
|
||||
'base-src-easylist.txt' => array(
|
||||
'type' => 'easylist',
|
||||
@ -36,28 +39,85 @@ class writerFormat{
|
||||
/*easylist 兼容格式的屏蔽广告列表*/
|
||||
const EASYLIST = array(
|
||||
'format' => '||{DOMAIN}^',
|
||||
'header' => "!AdBlock-style blocklists\n!VER={DATE}\n!URL={URL}\n",
|
||||
'header' => "!AdBlock-style blocklists\n!VER={DATE}\n!URL={URL}\n!TOTAL COUNT=UNLIMITED\n",
|
||||
'full_domain' => 0,
|
||||
'name' => 'easylist',
|
||||
'filename' => 'anti-ad-easylist.txt'
|
||||
'filename' => 'anti-ad-easylist.txt',
|
||||
'whitelist_attached' => array(
|
||||
'base-dead-hosts.txt' =>array(
|
||||
'merge_mode' => 2, //0=单条,1=单条+子域名,2=根域名相当于1,非根域名相当于0
|
||||
),
|
||||
),
|
||||
'src' => array(
|
||||
'base-src-easylist.txt' => array(
|
||||
'type' => 'easylist',
|
||||
'strict_mode' => false,
|
||||
),
|
||||
'base-src-hosts.txt' => array(
|
||||
'type' => 'hosts',
|
||||
'strict_mode' => false,
|
||||
),
|
||||
'base-src-strict-hosts.txt' => array(
|
||||
'type' => 'hosts',
|
||||
'strict_mode' => true,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
/*Surge 兼容格式的屏蔽广告列表*/
|
||||
const SURGE = array(
|
||||
'format' => 'DOMAIN-SUFFIX,{DOMAIN}',
|
||||
'header' => "#VER={DATE}\n#URL={URL}\n",
|
||||
'header' => "#VER={DATE}\n#URL={URL}\n#TOTAL COUNT={COUNT}\n",
|
||||
'full_domain' => 0,
|
||||
'name' => 'surge',
|
||||
'filename' => 'anti-ad-surge.txt'
|
||||
'filename' => 'anti-ad-surge.txt',
|
||||
'whitelist_attached' => array(
|
||||
'base-dead-hosts.txt' =>array(
|
||||
'merge_mode' => 2, //0=单条,1=单条+子域名,2=根域名相当于1,非根域名相当于0
|
||||
),
|
||||
),
|
||||
'src' => array(
|
||||
'base-src-easylist.txt' => array(
|
||||
'type' => 'easylist',
|
||||
'strict_mode' => false,
|
||||
),
|
||||
'base-src-hosts.txt' => array(
|
||||
'type' => 'hosts',
|
||||
'strict_mode' => false,
|
||||
),
|
||||
'base-src-strict-hosts.txt' => array(
|
||||
'type' => 'hosts',
|
||||
'strict_mode' => true,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
/*Domains 格式的屏蔽广告列表,用于支持pi-hole等*/
|
||||
const DOMAINS = array(
|
||||
'format' => '{DOMAIN}',
|
||||
'header' => "#VER={DATE}\n#URL={URL}\n",
|
||||
'header' => "#VER={DATE}\n#URL={URL}\n#TOTAL COUNT={COUNT}\n",
|
||||
'full_domain' => 1, //保留子域名,即使其上级域名
|
||||
'name' => 'domains',
|
||||
'filename' => 'anti-ad-domains.txt'
|
||||
'filename' => 'anti-ad-domains.txt',
|
||||
'whitelist_attached' => array(
|
||||
'base-dead-hosts.txt' =>array(
|
||||
'merge_mode' => 2, //0=单条,1=单条+子域名,2=根域名相当于1,非根域名相当于0
|
||||
),
|
||||
),
|
||||
'src' => array(
|
||||
'base-src-easylist.txt' => array(
|
||||
'type' => 'easylist',
|
||||
'strict_mode' => false,
|
||||
),
|
||||
'base-src-hosts.txt' => array(
|
||||
'type' => 'hosts',
|
||||
'strict_mode' => false,
|
||||
),
|
||||
'base-src-strict-hosts.txt' => array(
|
||||
'type' => 'hosts',
|
||||
'strict_mode' => true,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
/*and etc...*/
|
||||
|
@ -10,44 +10,62 @@
|
||||
*/
|
||||
|
||||
define('ROOT_DIR', __DIR__ . '/');
|
||||
define('ORIG_DIR', ROOT_DIR . 'origin-files/');
|
||||
set_time_limit(600);
|
||||
error_reporting(0);
|
||||
|
||||
if(PHP_SAPI != 'cli'){
|
||||
die('nothing.');
|
||||
die('nothing.');
|
||||
}
|
||||
|
||||
$arr_blacklist = require ROOT_DIR . 'lib/black_domain_list.php';
|
||||
$arr_whitelist = require ROOT_DIR . 'lib/white_domain_list.php';
|
||||
$ARR_BLACKLIST = require ROOT_DIR . 'lib/black_domain_list.php';
|
||||
$ARR_WHITELIST = require ROOT_DIR . 'lib/white_domain_list.php';
|
||||
require ROOT_DIR . 'lib/writerFormat.class.php';
|
||||
require ROOT_DIR . 'lib/addressMaker.class.php';
|
||||
|
||||
//白名单机制增强,加入dead hosts
|
||||
$arr_dead_hosts = file(ROOT_DIR . 'origin-files/base-src-dead-hosts.txt', FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
|
||||
$arr_dead_hosts=array_fill_keys($arr_dead_hosts, 1); //这里设置为1,表示命中的子域名同时加白
|
||||
$arr_whitelist = array_merge($arr_dead_hosts, $arr_whitelist);
|
||||
|
||||
$arr_result = array();
|
||||
$easylist = file_get_contents('./origin-files/base-src-easylist.txt');
|
||||
$arr_result = array_merge_recursive($arr_result, addressMaker::get_domain_from_easylist($easylist));
|
||||
|
||||
$hosts = file_get_contents('./origin-files/base-src-hosts.txt');
|
||||
$arr_result = array_merge_recursive($arr_result, addressMaker::get_domain_list($hosts));
|
||||
|
||||
$strict_hosts = file_get_contents('./origin-files/base-src-strict-hosts.txt');
|
||||
$arr_result = array_merge_recursive($arr_result, addressMaker::get_domain_list($strict_hosts, true));
|
||||
|
||||
$arr_result = array_merge_recursive($arr_result, $arr_blacklist);
|
||||
$arr_input_cache = $arr_whitelist_cache = $arr_output = array();
|
||||
|
||||
$reflect = new ReflectionClass('writerFormat');
|
||||
|
||||
$formatterList = $reflect->getConstants();
|
||||
$arr_output = array();
|
||||
foreach($formatterList as $name => $formatObj){
|
||||
if(!is_array($formatObj['src'])){
|
||||
continue;
|
||||
}
|
||||
$arr_src_domains = array();
|
||||
$arr_tmp_whitelist = array();//单次的白名单列表
|
||||
if(is_array($formatObj['whitelist_attached']) && (count($formatObj['whitelist_attached']) > 0)){
|
||||
foreach($formatObj['whitelist_attached'] as $white_file => $white_attr){
|
||||
if(!array_key_exists("{$white_file}_{$white_attr['merge_mode']}", $arr_whitelist_cache)){
|
||||
$arr_attached = file(ORIG_DIR . $white_file, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
|
||||
$arr_attached = array_fill_keys($arr_attached, $white_attr['merge_mode']);
|
||||
$arr_whitelist_cache["{$white_file}_{$white_attr['merge_mode']}"] = $arr_attached;
|
||||
}
|
||||
|
||||
foreach ($formatterList as $name => $formatObj){
|
||||
$arr_output[] = '['. $name . ']' . addressMaker::write_to_conf($arr_result, $formatObj);
|
||||
$arr_tmp_whitelist = array_merge(
|
||||
$arr_tmp_whitelist,
|
||||
$arr_whitelist_cache["{$white_file}_{$white_attr['merge_mode']}"]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$arr_tmp_whitelist = array_merge($arr_tmp_whitelist, $ARR_WHITELIST);
|
||||
|
||||
foreach($formatObj['src'] as $src_file => $src_attr){
|
||||
if(!array_key_exists($src_file, $arr_input_cache)){
|
||||
$src_content = file_get_contents(ORIG_DIR . $src_file);
|
||||
if($src_attr['type'] === 'easylist'){
|
||||
$src_content = addressMaker::get_domain_from_easylist($src_content, $src_attr['strict_mode'], $arr_tmp_whitelist);
|
||||
}elseif($src_attr['type'] === 'hosts'){
|
||||
$src_content = addressMaker::get_domain_list($src_content, $src_attr['strict_mode'], $arr_tmp_whitelist);
|
||||
}
|
||||
$arr_input_cache[$src_file] = $src_content;
|
||||
}
|
||||
$arr_src_domains = array_merge_recursive($arr_src_domains, $arr_input_cache[$src_file]);
|
||||
}
|
||||
|
||||
$arr_src_domains = array_merge_recursive($arr_src_domains, $ARR_BLACKLIST);
|
||||
|
||||
$arr_output[] = addressMaker::write_to_file($arr_src_domains, $formatObj, $arr_tmp_whitelist);
|
||||
}
|
||||
|
||||
echo implode('---', $arr_output);
|
||||
|
||||
|
||||
var_dump($arr_output);
|
@ -90,7 +90,7 @@ cat strict-hosts*.txt | grep -v -E "^((#.*)|(\s*))$" \
|
||||
|
||||
cat dead-hosts*.txt | grep -v -E "^(#|\!)" \
|
||||
| sort \
|
||||
| uniq >base-src-dead-hosts.txt
|
||||
| uniq >base-dead-hosts.txt
|
||||
|
||||
|
||||
cat easylist*.txt | grep -E "^\|\|[^\*\^]+?\^" | sort | uniq >base-src-easylist.txt
|
||||
|
@ -92,6 +92,7 @@ $ARR_WHITE_RULE_LIST = array(
|
||||
'@@||tongji.*kuwo.cn^' => 0,
|
||||
'@@||ntp.org^' => 1, //针对上面正则表达式的一个赦免规则,例如:2.android.pool.ntp.org
|
||||
'@@||*push-apple.com.akadns.net^' => 1, //强制加白, 苹果推送2.courier-push-apple.com.akadns.net
|
||||
'@@||tracking.epicgames.com' => 0,
|
||||
);
|
||||
|
||||
//针对上游赦免规则anti-AD不予赦免的规则,即赦免名单的黑名单
|
||||
|
Loading…
x
Reference in New Issue
Block a user