champagne
小狐狸
小狐狸
  • UID51795
  • 注册日期2015-11-20
  • 最后登录2016-10-15
  • 发帖数5
  • 经验17枚
  • 威望0点
  • 贡献值8点
  • 好评度0点
  • 社区居民
阅读:1265回复:3

求助 百度贴吧广告过滤不掉

楼主#
更多 发布于:2015-11-20 18:36
百度贴吧的贴子内容和贴子列表里都有广告,我观察了一下发现广告的特征是class里有一个10位的随机字符串。然后用如下油猴脚本过滤了贴子内容中的查楼广告:
var cs = document.getElementById('pb_content').getElementsByTagName('div'), i = 0;
for (i=0; i<cs.length; i++) {
    if (cs[i].className.match(/clearfix/) && cs[i].className.match(/[a-z0-9]{10}/)) {
         cs[i].style.display = 'none';
    }
}
但是同样的方法对贴子列表里的广告就不灵:
var cs = document.getElementsByTagName('li'), i = 0;
for (i=0; i<cs.length; i++) {
    cs[i].style.color = 'red';
    if (cs[i].className.match(/clearfix/) && cs[i].className.match(/[a-z0-9]{10}/)) {
         cs[i].style.display = 'none';
    }
}
比如  http://tieba.baidu.com/f?kw=%E5%8D%97%E6%B5%B7&frs=yqtb 这个页面上的“推广 风趣主播唯美清新”广告,巍然不动。我在for循环前加了一句
alert(cs.length)
没想到不停地弹对话框,第一个是63,然后是0,然后又是63,又是0
似乎是百度页面调用了若干次油猴脚本?到此就束手无策了。大家能否给点提示啊建议啊什么的?
Free as in Freedom
文科
千年狐狸
千年狐狸
  • UID39959
  • 注册日期2013-10-17
  • 最后登录2019-07-27
  • 发帖数2069
  • 经验1328枚
  • 威望4点
  • 贡献值340点
  • 好评度256点
  • 最爱沙发
  • 社区居民
  • 忠实会员
1楼#
发布于:2015-11-21 00:21
更新easylist china规则至最新版,还不行的话 @cjx82630
taoww
非常火狐
非常火狐
  • UID39284
  • 注册日期2013-03-18
  • 最后登录2024-05-09
  • 发帖数634
  • 经验580枚
  • 威望0点
  • 贡献值110点
  • 好评度104点
2楼#
发布于:2015-11-21 11:18
1、贴吧的页面上有一堆iframe,每一个iframe都会触发脚本的执行。
2、很多内容是通过ajax加载的,加载的时间点在你脚本执行之后。你需要监听对应的事件 https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
champagne
小狐狸
小狐狸
  • UID51795
  • 注册日期2015-11-20
  • 最后登录2016-10-15
  • 发帖数5
  • 经验17枚
  • 威望0点
  • 贡献值8点
  • 好评度0点
  • 社区居民
3楼#
发布于:2015-11-21 13:37
taoww:1、贴吧的页面上有一堆iframe,每一个iframe都会触发脚本的执行。
2、很多内容是通过ajax加载的,加载的时间点在你脚本执行之后。你需要监听对应的事件 https://developer.mozilla.org/en-US/doc...
回到原帖
原来如此,多谢了。再去研究研究
Free as in Freedom
游客

返回顶部