Khóa mõm - Chặn bình luận theo ID Blogger
Bài này hướng dẫn anh em "khóa mõm" của một số tài khoản nhất định dựa theo Profile ID Blogger.
Tự động thay avatar thành biểu tượng cấm, đổi tên thành Blocked User, thay nội dung và làm mờ khung bình luận.
Tự động thay avatar thành biểu tượng cấm, đổi tên thành Blocked User, thay nội dung và làm mờ khung bình luận.
Code
<!-- khóa mõm -->
<script>
document.addEventListener("DOMContentLoaded", function () {
const blockedUsers = [
"07681083261644181883",
"01234567891011121314",
"01234567891011121314"
];
function getProfileIdFromLink(href) {
const m = href && href.match(/\/profile\/(\d+)/);
return m ? m[1] : null;
}
function blockOneComment(block) {
if (!block) return;
const userLink = block.querySelector(".comment-header .user a[href*='blogger.com/profile/']");
if (!userLink) return;
const uid = getProfileIdFromLink(userLink.href);
if (!uid || !blockedUsers.includes(uid)) return;
const comment = block.closest(".comment");
const avatarBox = comment?.querySelector(".avatar-image-container");
if (avatarBox) {
avatarBox.innerHTML = `
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"
width="45" height="45" fill="#d32f2f" title="Người dùng bị chặn">
<circle cx="256" cy="256" r="200" fill="none" stroke="#d32f2f" stroke-width="40"/>
<line x1="120" y1="392" x2="392" y2="120" stroke="#d32f2f" stroke-width="40"/>
</svg>
`;
}
userLink.textContent = "Blocked User";
userLink.removeAttribute("href");
userLink.removeAttribute("target");
userLink.removeAttribute("rel");
userLink.style.pointerEvents = "none";
const content = block.querySelector(".comment-content");
if (content) {
content.textContent = "Nội dung cho người dùng bị cấm đăng lên vì vậy không hiển thị";
}
block.style.opacity = "0.7";
block.style.pointerEvents = "none";
}
document.querySelectorAll(".comment-block").forEach(blockOneComment);
const holder = document.querySelector("#comment-holder") || document.body;
const mo = new MutationObserver(() => {
document.querySelectorAll(".comment-block").forEach(blockOneComment);
});
mo.observe(holder, { childList: true, subtree: true });
});
</script>
<!-- khóa mõm -->
Lưu ý
Cách lấy Profile ID
- Mở trang bình luận nơi người đó đã comment.
- Nhấp vào tên người dùng (liên kết thường có dạng
https://www.blogger.com/profile/xxxxxxxxxxxxxxxxxxx). - Sao chép dãy số sau
/profile/và thêm vào mảngblockedUserstrong script.
Nếu vẫn thấy bình luận của người bị chặn?
- ID đã đúng (khớp dãy số trong URL profile).
- Template có đúng selector:
.comment-block,.avatar-image-container,.comment-header .user a,.comment-content. Nếu khác, hãy đổi selector tương ứng.
Tùy chọn hiển thị
- Ẩn hoàn toàn bình luận: thay hai dòng cuối trong hàm
blockOneCommentbằng:
block.closest(".comment")?.remove(); - Đổi biểu tượng: thay đoạn SVG trong
avatarBox.innerHTMLbằng SVG khác tùy ý. - Đổi thông điệp: sửa chuỗi “Nội dung cho người dùng bị cấm…” theo ý bạn.
Kết luận
- Nên khóa hết mõm mấy thằng hay spam cho đỡ rác
- Để lại bình luận nếu bạn cần hỗ trợ


Ngon
Trả lờiXóaTự nhiên bao lâu không sao dạo này lòi ra ông toàn đi spam linh tinh 😒
Trả lờiXóaKhóa liền và luôn kaka
Trả lờiXóaHình như cái anh share là mấy anh em blogger bê về dùng được luôn, khỏi đổi ID =))
Trả lờiXóaThường ID nó giống nhau mà, lưu ý cho anh em thay ID khác thôi 😁
Trả lờiXóađược nè, nó mới đi spam khắp các blog 🤣
Trả lờiXóaKhóa mõm nó chưa bro? 🤣
Trả lờiXóaQuá ok a <3
Trả lờiXóaGiải pháp tạm thời. Tạm gọi "Thay thế nhận xét", xem nguồn vẫn thấy nhận xét gốc.
Trả lờiXóaTùy spammer vẫn có thể tiếp tục "làm phiền" quản trị viên. Đây là thử "độ lì"... 🙄
[note]⏰ Đếm ngược sự kiện
Trả lờiXóaLogo sự kiện kèm theo đếm ngược thì hay, khi sự kiện kết thúc có thể ẩn đi (chỉnh sửa hoặc gỡ bỏ code sau).
Một tháng gần đây quản trị viên blog này siêng đăng bài mới trở lại quá với khá nhiều nhận xét rôm rả. 😀
Rêu phong mấy lần rồi bạn
Bao giờ thì sẽ hết cạn ý tưởng? 🤔
Chơi blog cũng "vất vả" như là "chơi" (với) nàng..., phải có thời gian, sức khỏe, tiền bạc, đam mê, chăm chút, chiều chuộng, dại khờ, lúc nào cũng tơ tưởng v.v... tựa như lời bài hát Rong Rêu: "... Chỉ vì yêu em nên anh vất vả... Chỉ vì yêu em nên anh mất cả..." 😄
https://www.youtube.com/watch?v=MuNmUDzJRQg
Theo vòng tuần hoàn thời gian, mùa thu lá vàng rơi, mây bay lãng mạn, lòng người đượm buồn... lại đến. Thu về nắng ngọt như mật ong và gió lao xao đến nao lòng theo từng chiếc lá rơi. Thu về, gieo những vần thơ, khúc nhạc mênh mang, bâng khuâng. Chút se lạnh của hơi thu cũng làm nên thi vị và rồi một màu áo vàng khoác lên cây cành, sắc vàng không bút mực nào tả nổi những ý tưởng của lòng người khi lá đổ ngập lối đi. Không có chú nai vàng ngơ ngác mà đâu đó có những bước chân ngập ngừng trên lá thu của người viễn xứ... 😦
🍂 Thu lại về, tình bơ vơ
💃 Người xưa giờ là giấc mơ xa xăm
💘 Đã cùng hẹn ước trăm năm
🕺 Mà sao nỡ đành biệt tăm mù khơi...!!! 💔
https://www.youtube.com/watch?v=8lzXAu_O6iI
💻 Ⓓuong Ⓠuach℠ ❤️[/note]
Đúng rồi bác. Nhưng về mặt tâm lý thì cái thằng spam nó không đạt được mục đích của nó thì nó cũng sẽ cook thôi. Còn rảnh thì vài click ở trong trang quản trị là nó biến í mà 😁
Trả lờiXóanay không thấy thg fake vs admin real đâu nhỉ?
Trả lờiXóaThì không đạt được mục đích nữa thì nó phải cook chứ sao bạn 😁
Trả lờiXóaNó nữa đó anh :v
Trả lờiXóako phải đâu, này là Duy mà
Trả lờiXóaanh mệt với mấy đứa quá blogger.com/profile/08678895539525759943
Trả lờiXóaKhóa luôn 😁
Trả lờiXóa10 điểm anh ơi kaka
Trả lờiXóalập blog lấy tên khác thương hiệu khác hết bị giả mạo và copy ngay ấy mà. tin tui đi.
Trả lờiXóacái này muốn khóa luôn ở widget cmt mới nhất thì làm thế nào bạn?
Trả lờiXóaQuan trọng là phải biết code của cmt mới nhất bạn đang dùng mới sửa được 😅
Trả lờiXóaCode widget mình đây:
Trả lờiXóahttps://anotepad.com/notes/rqq6b7ga
và code bạn share ở bài này nè: https://www.blogspotvn.net/2025/09/tao-trang-nhan-xet-cho-blogspot-day-du-nhat.html
Bạn thử thay js cho phần hiển thiển recent comment bằng
Trả lờiXóa[pre]<script type="text/javascript">
//<![CDATA[
var NXM_BLOCKED = window.NXM_BLOCKED || [
"07681083261644181883",
"05815588754456032856",
"12718544154576947159"
];
function getAuthor(entry){
return entry && entry.author && entry.author[0] ? entry.author[0] : null;
}
function getProfileIdFromAuthor(au){
var uri = au && au.uri && au.uri.$t;
var m = uri && uri.match(/\/profile\/(\d+)/);
return m ? m[1] : null;
}
function isBlockedEntry(entry){
var au = getAuthor(entry);
var pid = getProfileIdFromAuthor(au);
return !!(pid && NXM_BLOCKED.indexOf(pid) !== -1);
}
function nxmoi(e){
var t = '<ul>';
for (var n = 0; n < numComments; n++) {
if (!e.feed || !e.feed.entry || n === e.feed.entry.length) break;
var entry = e.feed.entry[n];
if (isBlockedEntry(entry)) continue;
var r, i, s, o, l, c;
for (var a = 0; a < entry.link.length; a++) {
if (entry.link[a].rel === "alternate") { r = entry.link[a].href; }
}
var au = getAuthor(entry);
if (au) {
i = au.name && au.name.$t || "Ẩn danh";
s = au.gd$image && au.gd$image.src || "";
} else {
i = "Ẩn danh"; s = "";
}
if (s.indexOf("/s1600/") != -1) {
s = s.replace("/s1600/","/s"+avatarSize+"-c/");
} else if (s.indexOf("/s220/") != -1) {
s = s.replace("/s220/","/s"+avatarSize+"-c/");
} else if (s.indexOf("/s512-c/") != -1 && s.indexOf("https:") != 0) {
s = "https:" + s.replace("/s512-c/","/s"+avatarSize+"-c/");
} else if (s.indexOf("blogblog.com/img/b16-rounded.gif") != -1) {
s = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivOn1zPrLdfzH9RxbZ0LibKAofuhuIgKzyq4IBWs7ZhLWelcGraOwPf0p8vyrW5yJXiLv-PJF52FINycEeYcX73huuOsLhk7gWFevNHFTMPOheQ0wc8d9vrdW3JoUFPG3CYx6oQx4CuUDl/"+avatarSize+"/md_blogger_logo.png";
} else if (s.indexOf("blogblog.com/img/openid16-rounded.gif") != -1) {
s = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVipyG4x6YeRP3cdfePLqW326iB5jlCRCyJ1Mw0tMRmlwee9bs_7HBoZvZQD4DYQ5-Zq1MsuOl9MjV9uPBwFt9-jy-AEkaBP55PshWYl9ToJM6RFYyrnqbw0ob8vaJ9al5FEUL31BtEPd_/"+avatarSize+"/md_openid_logo.png";
} else if (s.indexOf("blogblog.com/img/blank.gif") != -1) {
if (defaultAvatar.indexOf("gravatar.com") != -1) {
s = defaultAvatar + "&s=" + avatarSize;
} else {
s = defaultAvatar;
}
}
var r2 = (r || "").replace(/<.*?>/ig,'');
l = entry.content && entry.content.$t || "";
c = l.replace(/(<([^>]+)>)/ig,"");
if (c !== "" && c.length > characters) {
c = c.substring(0, characters) + "…";
}
t += "<li>";
if (showAvatar === true) {
o = (roundAvatar === true) ? "avatarRound" : "";
t += '<div class="trai avatarImage"><img class="'+o+'" src="'+s+'" alt="'+i+'" height="'+avatarSize+'" width="'+avatarSize+'" /></div>';
}
t += "<div class='trai noi-dung'><span class='name'>"+i+"</span>";
cái này thì nó remove luôn bình luận đó bạn
Trả lờiXóaVậy chứ không để nó spam cho không nhìn thấy bình luận mới của người khác luôn thì đúng mục đích của nó rồi 😌
Trả lờiXóaý là sao nó bị mất luôn cmt ở widget á, tức là set 7 cmt mà nó hiện có 4 à
Trả lờiXóaà nó bị dính mặc định những cmt bị remove nên hiện thị vậy
Trả lờiXóaHiểu rồi, lấy nhiều hơn 7 từ feed đi
Trả lờiXóa[pre]<script type="text/javascript" src="/feeds/comments/default?alt=json&callback=nxmoi&max-results=50"></script>[/pre]
Và sửa js như sau
[pre]<script type="text/javascript">
var NXM_BLOCKED=window.NXM_BLOCKED||["07681083261644181883","05815588754456032856","12718544154576947159"];
function getAuthor(e){return e&&e.author&&e.author[0]?e.author[0]:null}
function getProfileIdFromAuthor(e){var n=e&&e.uri&&e.uri.$t,r=n&&n.match(/\/profile\/(\d+)/);return r?r[1]:null}
function isBlockedEntry(e){var n=getAuthor(e),r=getProfileIdFromAuthor(n);return!!(r&&NXM_BLOCKED.indexOf(r)!==-1)}
function nxmoi(e){
var o=["<ul>"],shown=0,entries=e&&e.feed&&e.feed.entry?e.feed.entry:[];
for(var n=0;n<entries.length;n++){
if(shown>=numComments)break;
var u=entries[n]; if(isBlockedEntry(u))continue;
var r,i,s,a,l,c;
for(var k=0;k<u.link.length;k++){if(u.link[k].rel==="alternate"){r=u.link[k].href}}
var au=getAuthor(u);
i=au&&au.name&&au.name.$t||"Ẩn danh";
s=au&&au.gd$image&&au.gd$image.src||"";
if(s.indexOf("/s1600/")!=-1){s=s.replace("/s1600/","/s"+avatarSize+"-c/")}
else if(s.indexOf("/s220/")!=-1){s=s.replace("/s220/","/s"+avatarSize+"-c/")}
else if(s.indexOf("/s512-c/")!=-1&&s.indexOf("https:")!=0){s="https:"+s.replace("/s512-c/","/s"+avatarSize+"-c/")}
else if(s.indexOf("blogblog.com/img/b16-rounded.gif")!=-1){s="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivOn1zPrLdfzH9RxbZ0LibKAofuhuIgKzyq4IBWs7ZhLWelcGraOwPf0p8vyrW5yJXiLv-PJF52FINycEeYcX73huuOsLhk7gWFevNHFTMPOheQ0wc8d9vrdW3JoUFPG3CYx6oQx4CuUDl/"+avatarSize+"/md_blogger_logo.png"}
else if(s.indexOf("blogblog.com/img/openid16-rounded.gif")!=-1){s="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVipyG4x6YeRP3cdfePLqW326iB5jlCRCyJ1Mw0tMRmlwee9bs_7HBoZvZQD4DYQ5-Zq1MsuOl9MjV9uPBwFt9-jy-AEkaBP55PshWYl9ToJM6RFYyrnqbw0ob8vaJ9al5FEUL31BtEPd_/"+avatarSize+"/md_openid_logo.png"}
else if(s.indexOf("blogblog.com/img/blank.gif")!=-1){s=(defaultAvatar.indexOf("gravatar.com")!=-1)?(defaultAvatar+"&s="+avatarSize):defaultAvatar}
var r2=(r||"").replace(/<.*?>/ig,"");
l=u.content&&u.content.$t||"";
c=l.replace(/(<([^>]+)>)/ig,"");
if(c!==""&&c.length>characters){c=c.substring(0,characters)+"…"}
o.push("<li>");
if(showAvatar===true){a=(roundAvatar===true)?"avatarRound":"";o.push('<div class="trai avatarImage"><img class="'+a+'" src="'+s+'" alt="'+i+'" height="'+avatarSize+'" width="'+avatarSize+'"/></div>')}
o.push("<div class='trai noi-dung'><span class='name'>"+i+"</span>");
o.push('<a class="nxmoia" rel="nofollow" href="'+r2+'">'+c+"</a></div>");
o.push("<div style='clear: both'></div></li>");
shown++;
}
o.push("</ul>");
document.getElementById("nxmoi").innerHTML=o.join("");
}
var numComments=numComments||7,
avatarSize=avatarSize||30,
characters=characters||90,
defaultAvatar=defaultAvatar||&
ok rồi cảm ơn bạn nhiều nha
Trả lờiXóa