그누보드 세이프 서치 플러그인+스킨
본문
아래의 코드를 원하는 곳에 삽입하세요.
---------------------------------23.11.04 이전 코드--------------------------------------
<script>
function getTextNodes(node){
let all = [];
for (node=node.firstChild;node;node=node.nextSibling){
if (node.nodeType==3) all.push(node); // Node.TEXT_NODE
else all = all.concat(getTextNodes(node));
}
return all;
}
let currentDomain = window.location.hostname;
let targetTextsUrl = `https://${currentDomain}/data.txt`;
fetch(targetTextsUrl)
.then(response => response.text())
.then(data => {
let targetTexts = data.split('\n');
let textNodes = getTextNodes(document.body);
for(let node of textNodes) {
let containsTargetText = targetTexts.some(target => node.nodeValue.includes(target));
if(containsTargetText) {
node.parentNode.style.filter = 'blur(10px)';
}
}
});
</script>
===================================23.11.04에 수정된 코드, 이 코드를 사용해주세요.===============================
<?php
function loadTargetTexts() {
$currentDomain = $_SERVER['HTTP_HOST'];
$targetTextsUrl = "https://{$currentDomain}/data.txt";
try {
$data = file_get_contents($targetTextsUrl);
$targetTexts = preg_split('/\r
|\r|
/', $data);
$targetTexts = array_filter($targetTexts, 'trim');
return $targetTexts;
} catch (Exception $error) {
echo "텍스트 파일을 불러오는 중 오류가 발생했습니다: ", $error->getMessage(), "
";
return [];
}
}
$targetTexts = loadTargetTexts();
echo "<script>var targetTexts = " . json_encode($targetTexts) . ";</script>";
?>
<script>
function blurMatchingTexts(targetTexts) {
let textNodes = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false);
let currentNode;
while (currentNode = textNodes.nextNode()) {
let nodeValue = currentNode.nodeValue.trim();
if (targetTexts.includes(nodeValue)) {
currentNode.parentElement.style.filter = "blur(5px)";
}
}
}
function initialize() {
blurMatchingTexts(targetTexts);
const observer = new MutationObserver(mutations => {
blurMatchingTexts(targetTexts);
});
observer.observe(document.body, { subtree: true, childList: true, characterData: true });
}
window.addEventListener("load", initialize);
</script>
=============코드 끝=================
search.skin.php에 삽입한다면 검색 시에만 검열을 하고,
head.skin.php에 삽입하면
사이트 전체에서 세이프 서치 - 특정 키워드가 블러처리되도록 할 수 있습니다.
board.skin.php에 삽입하면 게시물에서 바로 검열이 가능합니다.
설치방법은
https://dsclub.kr/bbs/board.php?bo_table=code&wr_id=561 참고하세요.
기본 제공 데이터에는 강도 높은 비하발언과 성희롱적인 말, 정치적인 발언이 담겨있습니다. 주의해주세요.
제작자의 동의 없는 무단 수정 및 배포를 금지합니다.
첨부파일
- safe_search.zip (9.3K) 20회 다운로드 | DATE : 2023-11-02 07:39:15
2kat님의 댓글
2kat 아이피 (222.♡.250.95) 작성일최고!