关于检测元素高度来屏蔽 Adblock 的脚本,怎么破?

2015-10-10 12:37:43 +08:00
 XuanYuan

页面最后有这么一段:

function check(){
    var h=document.getElementById("广告").clientHeight;
    if(h!=0){
        document.getElementById("ID").innerHTML="验证码"
    }
}
5367 次点击
所在节点    程序员
24 条回复
oott123
2015-10-10 13:04:29 +08:00
#广告 { opacity: 0; }
XuanYuan
2015-10-10 13:24:19 +08:00
@oott123 我的意思是,我想继续用 Adblock 来屏蔽页面上的广告,但是还需要显示验证码,这个需求用 Adblock 是不是能实现,如果不能的话,有什么其他的办法?
msg7086
2015-10-10 13:26:46 +08:00
@XuanYuan 让 adblock 去修 bug 吧。
dqh3000
2015-10-10 13:38:50 +08:00
greasemonkey 之类的

var d = document.createElement("div");
d.id = "广告";
d.style.height = "1px";
document.body.appendChild(d);
check();
bismarck
2015-10-10 13:42:32 +08:00
既然要使用别人的服务,就请不要屏蔽别人收入的来源。
XuanYuan
2015-10-10 14:24:36 +08:00
@msg7086 这个应该算 feature 不算 bug 吧 :D 我去提一下试试。
msg7086
2015-10-10 15:03:20 +08:00
@bismarck
@XuanYuan
是的,过分屏蔽广告行为可类比盗版。
XuanYuan
2015-10-10 16:20:13 +08:00
@msg7086 严重支持“过分”二字,当 ads 让你连页面都拖不动、打字也卡的时候,除了处理广告,我想不到更合理的办法——当然,如果有人回复“换电脑”的话,我也无话可说。
honeycomb
2015-10-10 16:34:35 +08:00
@bismarck
这么说是不对的
既然别人要在不是别人的设备 /浏览器上提供网页服务,就要有自己的代码被修改的意识

@msg7086 同样的,这样的想法也是荒谬的
因为不存在”过分地屏蔽广告“这种情形,因为屏蔽广告的权利是无法剥夺的,只存在自行放弃的情形
只要行为没有蔓延到服务提供者的服务器上(比如黑掉服务提供者的广告服务器)

正解是 @dqh3000 给出的方案
Adblock plus/uBlock origin 这样的说到底只是“通用内容拦截器”,而不是什么都能修改的 hooker
20140930
2015-10-10 16:49:13 +08:00
9 楼的我顶你啊!想想两三年前那有怎么多的广告过滤程序?为何近两年就如同春笋般冒出来?还不是有些人竭泽而渔的做法导致的?我觉得吧网页广告上很多诱导用户下载的流氓软件是继病毒木马之后危害最大的。。。
msg7086
2015-10-11 00:15:35 +08:00
@honeycomb 欧摸奚落已
原来享受服务的时候也要支付费用这个概念是很荒谬的呀
毕竟在中国,拒绝付费的权利是无法剥夺的,只存在自行放弃的情形。
平时付钱买东西都是自行放弃了拒绝付费权了哦。
kjreen
2015-10-11 03:17:48 +08:00
@msg7086 有必要这么上纲上线吗。。
honeycomb
2015-10-11 06:49:10 +08:00
@msg7086 我来告诉你为什么:

浏览器上显示的内容是浏览器渲染出来的,因此你决定浏览器如何渲染页面( greaswmonkey ),你决定浏览器可以下载那些内容 (adblock plus)。

所以无关付费,而是权利义务的问题。你的东西首先你说了算,你放不放弃同样也是你的事情。

另一方面有关对错,目前广告代码普遍做的用户追踪是否合理是有争议的,所以屏蔽广告是道德的。

你的谬误在于,付费这个事情是先于服务的,或者说这两者是原子的,事务的。而广告不是,它的传统形式是和内容并列出现的,这就是为什么路上的广告牌你总是可以视而不见,就算见到了也可以自欺欺人说没看到的道理。

所以,你拒绝付费,提供者可以不提供服务;你拒绝看广告,优酷可以不提供视频,可是优酷做不到,因为很容易打击这种不当风气。

这就是要做原生广告的目的所在,让广告成为内容,便能让消费者更容易接受。
wdhwg001
2015-10-11 11:04:49 +08:00
@honeycomb 是呀是呀,原来不付钱是如此正当的呀,正当到了反 adblock 脚本都要被再做处理回避呀。
所谓“既然做了页面就要有被篡改的觉悟”真是有趣,知识产权里有禁止反编译篡改先不提,这个逻辑和“穿这么暴露就是为了让人强奸”有区别吗 www
wdhwg001
2015-10-11 11:11:04 +08:00
@honeycomb 你去一个商店,拿了东西就走。
店主跑来要钱,你和他说:你摆出来的商品,我拿走了,我拒绝付钱,你可以要回去啊?
然后店主伸手去抢,被你一巴掌打翻在地,你说:我看到了你的东西,这是我眼睛里的,我说了算,你要我付钱可以降价啊?或者你再来抢抢试试?
honeycomb
2015-10-11 11:41:08 +08:00
@wdhwg001

知识产权里有禁止反编译篡改:
显然这个和让浏览器不下载某个东西,不运行某个东西无关
你想想是不是,想不通也没关系,反正还是你的事情。

这个逻辑和“穿这么暴露就是为了让人强奸”有区别吗?
当然有区别:
穿衣服的规则是,无论你穿不穿别人都不能扰
网页的区别是,无论“穿不穿”别人都能不看
规则没有弄清楚,就会犯此类错误

至于这种谬误:
“你摆出来的商品,我拿走了,我拒绝付钱,你可以要回去啊”
为什么广告不适用呢:

所以换成上述语境,是
“你拿出某个的东西硬塞给我,我拒绝收下,你最后相当于把这个东西丢了一地,因为没有人接收”

因为你没有弄清楚,你举例的实物商品是用来换钱的,而广告是流量提供方想让客户看的信息,这个意义上它不是商品(相对的,在 adsense 上拍卖的广告才是商品)。
honeycomb
2015-10-11 11:43:34 +08:00
@wdhwg001 你应该看一下 ublock 的 Philosophy ,它从隐私的角度解释了为什么过滤广告是道德的:


"That said, it's important to note that using a blocker is NOT theft. Don't fall for this creepy idea. The ultimate logical consequence of blocking = theft is the criminalisation of the inalienable right to privacy.

Ads, "unintrusive" or not, are just the visible portions of privacy-invading apparatus entering your browser when you visit most sites nowadays. uBlock₀'s main goal is to help users neutralize such privacy-invading apparatus — in a way that welcomes those users who don't wish to use more technical, involved means (such as µMatrix)."


https://github.com/gorhill/uBlock
bismarck
2015-10-15 20:39:17 +08:00
@honeycomb 很简单,网站都是需要盈利去维持运转的,如果大部分人都屏蔽广告,毫无疑问,那些用心做站,写文章,整合资源的人便会少很多。长此以往,互联网的优质资源数量将下降。对大批网站主来说,投放广告是最实际的货币化途径。

立场不同,观点可以不同。
bismarck
2015-10-15 20:40:14 +08:00
@XuanYuan 所以,我觉得应该搞个广告评级提供商。像 V2 这样的广告 banner ,我想没人会觉得烦恼。
honeycomb
2015-10-15 21:28:59 +08:00
@bismarck

“如果大部分人都屏蔽广告,毫无疑问,那些用心做站,写文章,整合资源的人便会少很多。长此以往,互联网的优质资源数量将下降。”

这样的结果是好事

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/226874

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX