用javascript搜索包含广告服务器列表的文本文件

用javascript搜索包含广告服务器列表的文本文件,javascript,Javascript,我正在制作一个阻止广告的程序。我在页面上找到了一个广告服务器列表。我的问题是:是否可以使用javascript从网站的该页面搜索这些广告服务器?请注意,我想要一个扩展的代码。默认情况下,一个网页不能用JavaScript访问另一个网页的内容。这被称为。该网站可以允许不同的网站使用HTTP标头访问控制允许源站访问其内容,但您的页面尤其不能这样做 如果继续尝试,将出现错误XMLHttpRequest无法加载https://pgl.yoyo.org/as/serverlist.php?hostform

我正在制作一个阻止广告的程序。我在页面上找到了一个广告服务器列表。我的问题是:是否可以使用javascript从网站的该页面搜索这些广告服务器?请注意,我想要一个扩展的代码。默认情况下,一个网页不能用JavaScript访问另一个网页的内容。这被称为。该网站可以允许不同的网站使用HTTP标头
访问控制允许源站
访问其内容,但您的页面尤其不能这样做

如果继续尝试,将出现错误
XMLHttpRequest无法加载https://pgl.yoyo.org/as/serverlist.php?hostformat=nohtml&showintro=1&startdate%5Bday%5D=&startdate%5Bmonth%5D=&startdate%5Byear%5D=. 请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源站“null”。

为了克服这个限制,您可以开发一个浏览器扩展,或者使用类似的代理

这是一个工作示例:

函数加载服务器(回调){
常量url=https://crossorigin.me/https://pgl.yoyo.org/as/serverlist.php?hostformat=nohtml&showintro=1&startdate%5Bday%5D=&startdate%5Bmonth%5D=&startdate%5Byear%5D=';
const request=new XMLHttpRequest();
打开('GET',url);
request.addEventListener('load',函数(){
回调(request.response.split('\n').filter(x=>x));
});
request.send();
}
函数移除元素(元素){
if(element.parentElement){
element.parentElement.removeChild(element);
}
}
功能重新配置删除(ADServer){
for(document.querySelectorAll('img')的常量img){
for(常数adServer of adServer){
if(img.src.indexOf(adServer)>=0){
移除元素(img);
}
}
}
for(document.querySelectorAll('a')的常数a){
for(常数adServer of adServer){
如果(a.href.indexOf(adServer)>=0){
清除(a);
}
}
}
}
LoadAdServer(RemoveDeletes)

您可以使用以下内容:

var sites = ['site1', 'site2', '...'],
    sites_len = sites.length;
var els = document.getElementsByTagName('*');

for (var i = 0, len = els.length; i < len; i++) {
    var attr = "";
    switch (els[i].tagName.toLowerCase()) {
        case 'iframe':
        case 'script':
        case 'img':
            attr = 'src';
            break;
        case 'link':
        case 'a':
            attr = 'href';
            break
        default:
            continue;
    }
    var attr_val = els[i].getAttribute(attr);
    for (var j = 0; j < sites_len; j++)
        if (sites[j].indexOf(attr_val) > -1)
            els[i].parentNode.reamoveChild(els[i]);
}
var sites=['site1'、'site2'、'…'],
地点长度=地点长度;
var els=document.getElementsByTagName('*');
对于(变量i=0,len=els.length;i-1)
els[i].parentNode.reamoveChild(els[i]);
}

您能否更准确地说明如何阻止这些广告?如果您计划通过删除标记手动禁用链接、图像或iFrame,我想在html页面中进行基本搜索和替换就可以了。@Kaddath是的,我想禁用链接和图像。如果你能提供一个关于这个问题的答案,那将是非常好的,在我的答案中为你添加了一个工作示例。如果你想过滤掉更多的元素,你可以添加更多的for循环。谢谢你的回答。但是我试着把它放到一个扩展中,但没有成功。你知道如何在扩展中使用它吗?对不起,我以前从未做过扩展。我认为您不需要使用
https://crossorigin.me
,但我不知道如何从扩展访问DOM。