세이프 서치 - 특정 키워드 검열 처리 정보
전체검색 세이프 서치 - 특정 키워드 검열 처리관련링크
첨부파일
본문
아래의 코드를 원하는 곳에 삽입하세요.
---------------------------------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/search.skin.php에 삽입한다면 검색 시에만 검열을 하고,
head.skin.php에 삽입하면
사이트 전체에서 세이프 서치 - 특정 키워드가 블러처리되도록 할 수 있습니다.
설치방법은
https://dsclub.kr/bbs/board.php?bo_table=code&wr_id=561 참고하세요.
기본 제공 데이터에는 강도 높은 비하발언과 성희롱적인 말, 정치적인 발언이 담겨있습니다. 주의해주세요.
관리자 페이지는 테블릿과 pc에 최적화 되어있습니다.
제작자의 동의 없는 무단 수정 및 배포를 금지합니다.
포인트 없이 다운로드: https://dsclub.kr/bbs/board.php?bo_table=zip&wr_id=61
4
댓글 전체
수정 가능, 무단 배포가 금지입니다.
무단으로 수정해서 배포하지 말아주세오
오 감사합니다
수정사항을 적용해주세요, 이전 코드는 최대 4개의 데이터만 처리가 가능했던 오류가 있었습니다,
data.txt에 너무 많은 데이터가 있으면 제대로 작동하지 않는 문제가 있네요, 최대한 빠른시간 내에 해결하도록 하겠습니다.
-11.04 해결됨
감사합니다 다시 받겟습니다
감사합니다