// ==UserScript== // @name Yahoo新聞留言自動檢舉腳本 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 檢舉特定使用者大量垃圾留言! // @author hugh // @match https://tw.news.yahoo.com/* // @match https://tw.tv.yahoo.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=yahoo.com // @require http://code.jquery.com/jquery-latest.js // @grant none // @license MIT // @downloadURL none // ==/UserScript== // 使用者須先登入yahoo才可檢舉(未登入就無法檢舉留言) // 有兩種方式檢舉, 會先優先使用第二種方式, 如無開啟使用者的所有評論歷史視窗的話, 則會使用第一種方式(關鍵字可以依據自己需要修改腳本儲存,接著重整網頁即可) // 1.自動找關鍵字檢舉(只在該則新聞頁面找所有評論的使用者名稱是否含關鍵字, 有的話自動檢舉), // 2.須先手動點擊某個特定評論的使用者頭像, 接著會跳出該使用者的所有評論歷史視窗, 接著點自動檢舉按鈕就會針對該使用者所有評論直接自動檢舉 // 第二種方式建議單獨開個網頁視窗在背景運行, 以免大量檢舉影響正常瀏覽網頁速度 var keywords = ["君品苑", "燒香燒金紙", "邱萍如", "身障", "家暴", "暴力", "殘疾"]; (function() { 'use strict'; var $ = window.jQuery; $('[id^=community-bar]').first().prepend(''); $('[id^=ABU-Video-CanvassApplet]').first().prepend(''); //$("#community-bar-container").prepend(''); $("#auto_report").click(function() { var iframe = $('[id^=community-bar][id$=iframe]')[0]; var btns = iframe.contentWindow.document.getElementsByTagName("BUTTON"); var found = null; for (var i = 0; i < btns.length; i++) { if (btns[i].textContent.includes("檢視留言")) { found = btns[i]; break; } } if (found != null) { found.click(); sleep(2000).then(showmore); } else { sleep(2000).then(showmore); } }); })(); function showmore() { var $ = window.jQuery; var iframe = $('[id^=community-bar][id$=iframe]')[0]; var btns = iframe.contentWindow.document.getElementsByTagName("BUTTON"); var uc_exist = iframe.contentWindow.document.getElementsByClassName("user-comments"); var found = null; var idx = 0; for (idx = 0; idx < btns.length; idx++) { if (btns[idx].textContent.includes("顯示較多內容")) { found = btns[idx]; break; } } if (found != null) { if (uc_exist.length == 0) { autoreport_keywords(); } else { autoreport_uc(); } found.click(); sleep(3000).then(showmore); } else { if (uc_exist.length == 0) { autoreport_keywords(); } else { autoreport_uc(); } } } function autoreport_keywords() { var $ = window.jQuery; var iframe = $('[id^=community-bar][id$=iframe]')[0]; var comments = iframe.contentWindow.document.getElementsByTagName("LI"); var idx = 0; var idx_k = 0; for (idx = 0; idx < comments.length; idx++) { var comment = comments[idx]; if (comment.className.includes("comment")) { var username = comment.innerText.split(/\n/)[0]; for (idx_k = 0; idx_k < keywords.length; idx_k++) { if (username.includes(keywords[idx_k])) { //console.log(comment.innerText); var ob = comment.getElementsByClassName("overflow-button")[0]; ob.click(); var fbf = comment.getElementsByClassName("flyout-button-flag")[0]; fbf.click(); var inputs = comment.getElementsByTagName("input"); for (var i = 0; i < inputs.length; i++) { if (inputs[i].defaultValue.includes("疑似垃圾內容")) { inputs[i].click(); var btns = comment.getElementsByTagName("BUTTON"); for (var b = 0; b < btns.length; b++) { if (btns[b].textContent == "完成") { btns[b].click(); break; } } } } break; } } } } } function autoreport_uc() { var $ = window.jQuery; var iframe = $('[id^=community-bar][id$=iframe]')[0]; var comments = iframe.contentWindow.document.getElementsByTagName("LI"); var idx = 0; for (idx = 0; idx < comments.length; idx++) { var comment = comments[idx]; if (comment.className.includes("comment")) { // 如果是user-comments的子節點的話, 直接檢舉 if (comment.closest("div.user-comments") != null) { // 有可能是剛點完檢舉的comment, ob會找不到 var ob = comment.getElementsByClassName("overflow-button")[0]; if (ob != null) { ob.click(); var fbf = comment.getElementsByClassName("flyout-button-flag")[0]; fbf.click(); var inputs = comment.getElementsByTagName("input"); for (var i = 0; i < inputs.length; i++) { if (inputs[i].defaultValue.includes("疑似垃圾內容")) { inputs[i].click(); var btns = comment.getElementsByTagName("BUTTON"); for (var b = 0; b < btns.length; b++) { if (btns[b].textContent == "完成") { btns[b].click(); break; } } } } } } } } } function sleep(time) { return new Promise(resolve => setTimeout(resolve, time)); }