ALEX_
小狐狸
小狐狸
  • UID47786
  • 注册日期2014-11-07
  • 最后登录2017-01-17
  • 发帖数5
  • 经验6枚
  • 威望0点
  • 贡献值4点
  • 好评度0点
  • 社区居民
  • 忠实会员
阅读:6037回复:29

如何屏蔽卡饭论坛某个ID的帖子「主贴+跟贴」

楼主#
更多 发布于:2015-07-03 20:44
如何屏蔽卡饭论坛某个ID的帖子「主贴+跟贴」求方法
atmouse
狐狸大王
狐狸大王
  • UID44114
  • 注册日期2014-01-27
  • 最后登录2017-12-29
  • 发帖数325
  • 经验266枚
  • 威望0点
  • 贡献值122点
  • 好评度19点
1楼#
发布于:2015-07-03 20:52
難道是因為在卡飯推“如何屏蔽卡飯論壇”的帖子被刪了?
PC-JMK6, asus m5a99x, fx8350, radeonhd7870 x2, iec958/ha/HD600, linux-next, systemd, pacman, mesa, xorg, libinput, modesetting w/ glamor, qtile, icecat,
谷歌大法好
狐狸大王
狐狸大王
  • UID49692
  • 注册日期2015-04-11
  • 最后登录2023-10-15
  • 发帖数344
  • 经验353枚
  • 威望0点
  • 贡献值282点
  • 好评度26点
  • 社区居民
  • 忠实会员
2楼#
发布于:2015-07-03 20:54
kafan其实没什么必要去   我感觉
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
3楼#
发布于:2015-07-03 21:17
用 xpath 选择
rip
yarip

或者用 privoxy 等处理页面然后 css 隐藏
kalxd
小狐狸
小狐狸
  • UID31062
  • 注册日期2009-11-13
  • 最后登录2019-05-28
  • 发帖数34
  • 经验61枚
  • 威望0点
  • 贡献值2点
  • 好评度3点
  • 社区居民
  • 忠实会员
4楼#
发布于:2015-07-03 21:32
写个 user script?
把跟 ID 有关的贴子全部移除掉。
hello world
ALEX_
小狐狸
小狐狸
  • UID47786
  • 注册日期2014-11-07
  • 最后登录2017-01-17
  • 发帖数5
  • 经验6枚
  • 威望0点
  • 贡献值4点
  • 好评度0点
  • 社区居民
  • 忠实会员
5楼#
发布于:2015-07-03 21:34
是的 全部移除掉 @kalxd
beast
火狐狸
火狐狸
  • UID48534
  • 注册日期2015-01-10
  • 最后登录2017-09-17
  • 发帖数166
  • 经验150枚
  • 威望0点
  • 贡献值90点
  • 好评度1点
  • 社区居民
6楼#
发布于:2015-07-03 23:46
已删
beast
火狐狸
火狐狸
  • UID48534
  • 注册日期2015-01-10
  • 最后登录2017-09-17
  • 发帖数166
  • 经验150枚
  • 威望0点
  • 贡献值90点
  • 好评度1点
  • 社区居民
7楼#
发布于:2015-07-03 23:51
已删
bitcoin
小狐狸
小狐狸
  • UID47293
  • 注册日期2014-09-13
  • 最后登录2016-08-23
  • 发帖数68
  • 经验88枚
  • 威望0点
  • 贡献值76点
  • 好评度1点
8楼#
发布于:2015-07-04 04:38
这。。。怎么讨论这么严肃的问题了
kalxd
小狐狸
小狐狸
  • UID31062
  • 注册日期2009-11-13
  • 最后登录2019-05-28
  • 发帖数34
  • 经验61枚
  • 威望0点
  • 贡献值2点
  • 好评度3点
  • 社区居民
  • 忠实会员
9楼#
发布于:2015-07-04 09:15
ALEX_:是的 全部移除掉 @kalxd回到原帖
那就写个脚本好了。虽然不知道论坛的结构怎么样,如果能找到对应的 ID,然后把一整块元素删除就可以了。
看你们的讨论,目前也只能这样做。
hello world
atmouse
狐狸大王
狐狸大王
  • UID44114
  • 注册日期2014-01-27
  • 最后登录2017-12-29
  • 发帖数325
  • 经验266枚
  • 威望0点
  • 贡献值122点
  • 好评度19点
10楼#
发布于:2015-07-04 10:51
aaaa007cn:用 xpath 选择
rip
yarip

或者用 privoxy 等处理页面然后 css 隐藏
回到原帖
又看见你在强力推销privoxy
PC-JMK6, asus m5a99x, fx8350, radeonhd7870 x2, iec958/ha/HD600, linux-next, systemd, pacman, mesa, xorg, libinput, modesetting w/ glamor, qtile, icecat,
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
11楼#
发布于:2015-07-04 11:03
atmouse:又看见你在强力推销privoxy回到原帖
毕竟国内网站绝大多数不走 https
用 privoxy 等可以直接篡改原始 html 的工具可以省去很多无用功
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
12楼#
发布于:2015-07-04 11:42
鉴于某些 id 的发言
还是有必要给本论坛撸个油猴脚本的
代码中以版主 fang5566 和我为例
请自行修改需要屏蔽的 uid
// ==UserScript==
// @name        yan er dao ling@firefox.net.cn
// @namespace   firefox.net.cn
// @match       https://www.firefox.net.cn/*
// @version     1
// @license     GPLv3+
// @grant       none
// ==/UserScript==
 
(function(){
  let blocklist = [
    3719, // fang5566
    23968, // aaaa007cn
  ];
 
  // https://developer.mozilla.org/docs/Using_XPath
  function docEvaluateArray (expr, doc, context, resolver) {
    var i, result, a = [];
    doc = doc || (context ? context.ownerDocument : document);
    resolver = resolver || null;
    context = context || doc;
 
    result = doc.evaluate(expr, context, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for(i = 0; i < result.snapshotLength; i++) {
      a[i] = result.snapshotItem(i);
    }
    return a;
  }
 
  let removeNode = node => {
    if (node)
      node.parentNode.removeChild(node);
  }
 
  let removeNodes = nodes => {
    for (let n of nodes)
      removeNode(n);
  }
 
  let hideThreadByUID = uid => {
    let threads = docEvaluateArray(`//div[@class="thread_posts_list"]/table[@id="J_posts_list"]//td[@class="author"]/a[@data-uid="${uid}"]/../..`);
    removeNodes(threads);
  }
 
  let hidePostByUID = uid => {
    let posts = docEvaluateArray(`//div[@id="J_posts_list"]//table[@class="floor_table"][tbody/tr/td[@class="floor_left"]//div[@class="name"]/a[@data-uid="${uid}"]]`);
    for (let p of posts) {
      removeNode(p.querySelector('div.face'));
      removeNode(p.querySelector('div.signature'));
      let content = p.querySelector('div.editor_content');
      content.parentNode.appendChild(document.createTextNode('*** \u4F5C\u8005\u7684\u4E00\u5207\u4E0D\u5B58\u5728\u4E8E\u4F60\u7684\u548C\u8C10\u4E16\u754C ***'));
      removeNode(content);
    }
  }
 
  let blockbyuid = () => {
    document.removeEventListener("DOMContentLoaded", blockbyuid);
    for (let uid of blocklist) {
      hideThreadByUID(uid);
      hidePostByUID(uid);
    }
  };
 
  document.addEventListener("DOMContentLoaded", blockbyuid);
}())
ALEX_
小狐狸
小狐狸
  • UID47786
  • 注册日期2014-11-07
  • 最后登录2017-01-17
  • 发帖数5
  • 经验6枚
  • 威望0点
  • 贡献值4点
  • 好评度0点
  • 社区居民
  • 忠实会员
13楼#
发布于:2015-07-04 12:19
12楼#的脚本很好啊 ,能弄个卡饭的不
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
14楼#
发布于:2015-07-04 12:22
再改改就是卡饭了
代码中以 @pcxfirefox 为例
http://bbs.kafan.cn/forum-248-1.html
请自行修改 id 列表
// ==UserScript==
// @name        yan er dao ling@bbs.kafan.cn
// @namespace   bbs.kafan.cn
// @match       http://bbs.kafan.cn/*
// @version     1
// @license     GPLv3+
// @grant       none
// ==/UserScript==
 
(function(){
  let blocklist = [
    'pcxfirefox',
  ];
 
  // https://developer.mozilla.org/docs/Using_XPath
  function docEvaluateArray (expr, doc, context, resolver) {
    var i, result, a = [];
    doc = doc || (context ? context.ownerDocument : document);
    resolver = resolver || null;
    context = context || doc;
 
    result = doc.evaluate(expr, context, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for(i = 0; i < result.snapshotLength; i++) {
      a<span style="font-style: italic;"> = result.snapshotItem(i);
    }
    return a;
  }
 
  let removeNode = node => {
    if (node)
      node.parentNode.removeChild(node);
  }
 
  let removeNodes = nodes => {
    for (let n of nodes)
      removeNode(n);
  }
 
  let hideThreadByID = id => {
    let threads = docEvaluateArray(`//table[@id="threadlisttableid"]/tbody[tr/td[@class="by"][1][cite[text()="\n${id}"]|cite[text()="${id}"]]]`);
    removeNodes(threads);
  }
 
  let hidePostByID = id => {
    let posts = docEvaluateArray(`//div[@id="postlist"]//table[starts-with(@id, "pid")][tbody/tr/td/div[starts-with(@id, "favatar")]//div[@class="authi"][text()="${id}\n"]]`);
    for (let p of posts) {
      removeNode(p.querySelector('div.avatar'));
      let content = p.querySelector('td[id^="postmessage_"]');
      let newtd = document.createElement('td');
      newtd.className = 't_f';
      newtd.appendChild(document.createTextNode('*** \u4F5C\u8005\u7684\u4E00\u5207\u4E0D\u5B58\u5728\u4E8E\u4F60\u7684\u548C\u8C10\u4E16\u754C ***'))
      content.parentNode.appendChild(newtd);
      removeNode(content);
    }
  }
 
  let blockbyid = () => {
    document.removeEventListener("DOMContentLoaded", blockbyid);
    for (let id of blocklist) {
      hideThreadByID(id);
      hidePostByID(id);
    }
  };
 
  document.addEventListener("DOMContentLoaded", blockbyid);
}())

卡饭的页面结构也是醉了
大概是 discuz 的原因?
不去卡饭,也没有卡饭 id
不知道有没有遗漏的

这还只是个雏形
由于 xpath 的限制
在极端场合下,比如 id 包含单引号、双引号、同时包含单双引号
需要进一步 hack
另外还有必要把 id 列表移出脚本本身
再加上设置 id 列表的 UI
改进余地还很大
不过先这样吧
上一页
游客

返回顶部