3 công cụ để tìm các liên kết và văn bản ẩn trên trang web

Tìm và loại bỏ thư rác do người dùng tạo trên bất kỳ trang web nào là một trong những nhiệm vụ hàng ngày quan trọng nhất của bất kỳ chủ sở hữu trang web hoặc chuyên gia SEO nào.

Một trong những loại thư rác phổ biến như vậy là văn bản và liên kết ẩn , có thể được đặt trên trang web của bạn bởi người dùng hoặc mã độc hại.

Điều này có thể xảy ra theo nhiều cách khác nhau, bao gồm:
  • Trang web chấp nhận bài viết của khách.
  • Hệ thống bình luận trang web không lọc đúng cách gửi bình luận.
  • Trang web bị tấn công và tin tặc đã sử dụng nó để hưởng lợi và tiêm các liên kết ẩn.
  • Tình cờ, khi một người sao chép và dán văn bản với một số kiểu CSS từ trang web khác sang trình chỉnh sửa phụ trợ.
Theo Google , các loại văn bản và liên kết sau đây vi phạm Nguyên tắc quản trị trang web của Google:
  • Sử dụng cùng màu văn bản với màu nền của trang (ví dụ: văn bản màu trắng trên nền trắng).
  • Văn bản hoặc liên kết bị ẩn bằng các kỹ thuật CSS  không hiển thị cho người dùng nhưng hiển thị cho các công cụ tìm kiếm.
  • Sử dụng các liên kết trên một ký tự trong một đoạn văn (ví dụ: gạch nối ở giữa đoạn văn).
Nhưng không phải tất cả các yếu tố ẩn được coi là lừa đảo.
Ví dụ: bạn có thể có một thiết kế trang web đáp ứng và một menu ẩn, dành riêng cho thiết bị di động hoặc các yếu tố khác chỉ dành cho người dùng di động. Điều này là hoàn toàn tốt vì người dùng thấy nội dung tương tự như các công cụ tìm kiếm nhìn thấy trên một thiết bị cụ thể.

Những gì bạn muốn tránh là  các kỹ thuật SEO mũ đen  nhằm thao túng Google bằng cách sử dụng nội dung vô hình với người dùng trang web nhưng hiển thị với Google.

Trong bài đăng này, chúng tôi sẽ khám phá các chiến thuật bạn có thể sử dụng để phát hiện các liên kết hoặc văn bản ẩn trên trang web theo cách thủ công.

Chúng tôi sẽ sử dụng một trang thử nghiệm mẫu với văn bản và liên kết spam ẩn để minh họa cách các công cụ hoạt động. Trang mẫu bên dưới chứa hình ảnh và văn bản bình thường như bất kỳ trang web nào.

1. Sử dụng Trình phát triển web được gọi bổ trợ cho trình duyệt 

Sử dụng Trình phát triển web được gọi bổ trợ cho trình duyệt
Khi bạn cài đặt tiện ích bổ sung này, bạn sẽ thấy biểu tượng bánh răng màu xám ở góc trên bên phải của trình duyệt. Bằng cách nhấp vào nó, bạn sẽ thấy nhiều tùy chọn.

Bạn cũng có thể vô hiệu hóa tất cả các kiểu CSS. (Nó cũng có sẵn trên FireFox với cùng giao diện người dùng như trên Google Chrome.)

Tôi sẽ bắt đầu bằng cách vô hiệu hóa kiểu nội tuyến vì khi người dùng chèn nội dung ẩn, họ thường áp dụng kiểu nội tuyến cho các thành phần như style = "display:none"vì họ không có quyền truy cập vào tệp biểu định kiểu trên máy chủ của bạn. Họ chỉ có thể truy cập trình chỉnh sửa nội dung như TinyMCE cho phép họ áp dụng các kiểu nội tuyến.

Từ ví dụ trên, bạn sẽ tìm thấy hai khối văn bản ban đầu vô hình vì chúng được áp dụng nội tuyến style = " font-size:0px;"và style = "display:none"kiểu.

Nếu việc tắt kiểu nội tuyến không mang lại cho bạn bất kỳ kết quả nào, bạn có thể thử tắt tất cả các kiểu.

Bằng cách áp dụng nó, bạn sẽ thấy như sau:

Sự khác biệt là nó cũng loại bỏ tất cả các kiểu trang web và bạn thấy phiên bản chỉ có văn bản của trang web. Ở đây, không ai có thể bỏ qua bất kỳ yếu tố ẩn nào ngay cả khi chúng bị ẩn thông qua các kiểu CSS của trang web.

Bạn sẽ cần điều tra các trang web không được chú ý một cách chăm chú để phát hiện các văn bản hoặc liên kết nhỏ bất thường. Hãy chú ý đến văn bản neo trên mạng. Rất dễ bỏ lỡ phải không?

Làm điều này sẽ tìm thấy nội dung ẩn hiện có trong DOM DOM tại thời điểm bạn tắt các kiểu.

Ví dụ: nếu có một mã JavaScript độc hại chạy sau một phút và tải nội dung hoặc liên kết ẩn qua AJAX thì các phần tử đó sẽ không hiển thị. Bạn sẽ cần phải thực hiện vô hiệu hóa tất cả các kiểu hành động một lần nữa để xem nó.

Hãy thử nó trên trang mẫu của chúng tôi và nhấp vào nút tắt kiểu một lần nữa sau một khoảng thời gian. Bạn sẽ thấy trong ảnh chụp màn hình bên dưới rằng một văn bản ẩn khác được tiết lộ mà trước đây không thể nhìn thấy vì nó đã được đưa vào trang sau một thời gian qua JavaScript.

Áp dụng vô hiệu hóa tất cả các kiểu của addon Web Developer
Vì vậy, đó là thực hành tốt để vô hiệu hóa phong cách một vài lần sau một khoảng thời gian.

Có, cùng một JavaScript cũng có thể xóa nội dung (nghĩa là tiêm nội dung trong một thời gian ngắn rồi xóa nội dung đó) nhưng bạn cũng có tùy chọn tắt JavaScript để vô hiệu hóa cả CSS và JavaScript và từ chối mọi mã độc hại để hoàn tác các thay đổi của nó. Bất kỳ nội dung độc hại được tiêm trên trang web bị tấn công sẽ hiển thị với bạn bằng phương pháp này.

Nhiều người trong số các bạn có thể đã nghe nói về công cụ trực tuyến có tên là công cụ dò tìm SPAM của công cụ tìm kiếm . Tôi không khuyên bạn nên sử dụng nó để tìm nội dung ẩn. Khi tôi chạy trang thử nghiệm của mình bằng công cụ này, nó không thể phát hiện bất kỳ vấn đề văn bản ẩn nào. Có lẽ nó được sử dụng tốt hơn để phát hiện các vấn đề nhồi từ khóa thay thế.

2. Sử dụng Trình lấy liên kết bổ trợ trình duyệt

3 công cụ để tìm các liên kết và văn bản ẩn trên trang web
Tiện ích bổ sung này sẽ trích xuất tất cả các liên kết trên trang web và tạo báo cáo để bạn có thể phát hiện ra bất kỳ liên kết bất thường nào bạn đang liên kết đến. (Trên Firefox, bạn có thể sử dụng tiện ích mở rộng  Liên kết Gopher .)

Chạy tiện ích bổ sung này đã tiết lộ các liên kết kỳ lạ cho tôi ý tưởng rằng có gì đó không ổn. Đây có thể là cách nhanh nhất để phát hiện các liên kết spam.

Nếu bạn tìm thấy các liên kết kỳ lạ bằng công cụ này, thì bạn có thể bắt đầu kiểm toán chuyên sâu bằng phương pháp thứ nhất hoặc thứ ba.

3. Sử dụng Công cụ phát triển 'Kiểm tra' Trình duyệt của bạn

Sử dụng phương pháp đầu tiên luôn tuyệt vời nhưng nếu bạn không đủ chú ý đến chi tiết, bạn có thể bỏ lỡ vấn đề. Tôi đã viết một mã JS nhỏ làm nổi bật các yếu tố HTML đáng ngờ.

Nếu bạn có ít kỹ năng kỹ thuật, bạn có thể sử dụng bảng điều khiển trình duyệt của mình để tìm văn bản và liên kết ẩn với sự trợ giúp của đoạn mã dưới đây.
Trên Google Chrome, nhấp chuột phải vào trang> Kiểm tra> Bảng điều khiển   (bạn có thể tham khảo hướng dẫn này để tìm nó cho trình duyệt của mình).
3. Sử dụng Công cụ phát triển 'Kiểm tra' Trình duyệt của bạn
Sao chép mã JavaScript bên dưới và dán nó vào bảng điều khiển. Nhấp vào nút bàn phím dòng mới để chạy mã.
var htmldoc = document.querySelectorAll('body  *');
// css properties which used to hide text. Any value equal or less than specified will be considered as suspicious
/*
anyting less than font size 3, height 3px, 
*/
var disallowed_cssproperties = [ [ "display", "none" ],
[ "visibility", "hidden" ], [ "font-size", "3" ],
[ "position", "absolute" ], [ "opacity", "0" ], [ "height", "3" ],
[ "width", "3" ], [ "max-height", "3" ], [ "max-width", "3" ] ];

var reset_cssproperties = [ [ "display", "block" ],
[ "visibility", "visible" ], [ "font-size", "40" ],
[ "position", "relative" ], [ "opacity", "1" ], [ "height", "auto" ],
[ "width", "auto" ], [ "max-height", "none" ], [ "max-width", "none" ] ];

var reported_html = '';
var skip_elements = [ 'script', 'style' ];
var bool_reset_all = false;
for (i = 0; i < htmldoc.length; i++) {
for (k = 0; k < disallowed_cssproperties.length; k++) {

css_property = disallowed_cssproperties[k][0];
disallowed_value = disallowed_cssproperties[k][1];

real_value = window.getComputedStyle(htmldoc[i]).getPropertyValue(
css_property);
real_value_int = parseInt(real_value);
real_value_int_style = parseInt(htmldoc[i].style
.getPropertyValue(css_property));

//check background  and text colors
bg_color = window.getComputedStyle(htmldoc[i]).getPropertyValue('background-color');
txt_color = window.getComputedStyle(htmldoc[i]).getPropertyValue('color');
// convert all colors into the same format to avoid mistakes like white != #ffffff
txt_color = RGBToHex(txt_color);
bg_color = RGBToHex(bg_color);

// check if element has disallowed css property
if ((real_value == disallowed_value  ||  txt_color ==  bg_color  || (!isNaN(real_value_int)
&& real_value_int <= disallowed_value && real_value_int_style <= disallowed_value))
&& !skip_elements.includes(htmldoc[i].tagName.toLowerCase())) {

for (r = 0; r < reset_cssproperties.length; r++) {
htmldoc[i].style.border = '3px solid red';
htmldoc[i].style.setProperty('min-height', '20px');
htmldoc[i].style.setProperty(reset_cssproperties[r][0],
reset_cssproperties[r][1]);
}
bool_reset_all = true;
// avoid displaying the same background color error multiple times by using !htmldoc[i].hasAttribute("data-check" ) 
if( txt_color ==  bg_color && !htmldoc[i].hasAttribute("data-check" ) ){
htmldoc[i].setAttribute("data-check", "checked");
reported_html += '<strong style="color:red">The Same Text and Background Colors are Detected</strong>:'+'Color <span style="display:inline-block;background-color:'+bg_color+'">'+bg_color+'</span><br/>';
htmldoc[i].style.setProperty('color', 'black');
htmldoc[i].style.setProperty('background-color', 'white');
}

reported_html += '<strong>HTML tag: <span style="color:blue">'
+ htmldoc[i].tagName
+ '</span><br/>CSS property: <span style="color:red"> '
+ css_property + ':' + real_value + '</span></strong>'
+ '<br/><strong>Contains Text</strong><br/>'
+ (htmldoc[i].innerText )
+ '<br/><strong>Contains HTML</strong><br/>'
+ encodeHTML(htmldoc[i].innerHTML ) + '<br/><br/>';
}

}
}

// reset all elements css
if( bool_reset_all ){
for (i = 0; i < htmldoc.length; i++) {
if( skip_elements.includes(htmldoc[i].tagName.toLowerCase()) ){
continue;
}
htmldoc[i].style.position = 'relative';
htmldoc[i].style.top = 'auto';
htmldoc[i].style.left = 'auto';
htmldoc[i].style.bottom = 'auto';
htmldoc[i].style.right = 'auto';
htmldoc[i].style.display = 'block';
}
}

var tab = window.open('', '_blank');
tab.document.write(reported_html); // where 'html' is a variable containing your HTML
tab.document.close(); // to finish loading the page
console.log('Finished');

function RGBToHex(rgb) {
  // Choose correct separator
  let sep = rgb.indexOf(",") > -1 ? "," : " ";
  // Turn "rgb(r,g,b)" into [r,g,b]
  rgb = rgb.substr(4).split(")")[0].split(sep);

  let r = (+rgb[0]).toString(16),
      g = (+rgb[1]).toString(16),
      b = (+rgb[2]).toString(16);

  if (r.length == 1)
    r = "0" + r;
  if (g.length == 1)
    g = "0" + g;
  if (b.length == 1)
    b = "0" + b;

  return "#" + r + g + b;
}
function encodeHTML(str){
    return str.replace(/[\u00A0-\u9999<>&](?!#)/gim, function(i) {
      return '&#' + i.charCodeAt(0) + ';';
    });
}
Bạn sẽ thấy báo cáo sau trong một tab mới với các yếu tố HTML đáng ngờ được ẩn cho người dùng bằng cách áp dụng các kỹ thuật CSS đã biết .
Không phải  mọi yếu tố ẩn là xấu. Một lần nữa, có thể có các yếu tố HTML ẩn đáp ứng như menu, biểu tượng xã hội, vv được thiết kế để hiển thị trên các kích thước màn hình khác nhau. Họ hoàn toàn ổn để có.
3 cách để tìm các liên kết spam ẩn & # 038;  Văn bản trên một trang web
Bên cạnh báo cáo này, bạn sẽ thấy các yếu tố được tô sáng ở viền đỏ trên chính trang web.

Nếu bạn muốn thử điều này thêm một lần nữa, bạn sẽ cần làm mới trang web và chạy lại nó. Chạy mà không làm mới sẽ cho bạn kết quả sai trong lần thử thứ hai.

Những người không am hiểu về kỹ thuật có thể nhầm tưởng rằng mã này có thể ảnh hưởng đến cách khách truy cập trang web nhìn thấy một trang web. Đối với thông tin của họ, trang web sẽ chỉ bị ảnh hưởng ở phía khách hàng (bất kỳ ai chạy mã trong bảng điều khiển).

Phần kết luận

Các kỹ thuật được mô tả ở trên sẽ giúp bạn kiểm tra thủ công bất kỳ văn bản và liên kết ẩn nào.

Mặc dù có những phần mềm có thể quét các trang web và tạo báo cáo về cùng một vấn đề, kiểm tra thủ công các trang của bạn luôn là một ý tưởng tốt vì phần mềm tuân theo các thuật toán nhất định và có thể không phải lúc nào cũng phát hiện tất cả các loại văn bản và liên kết ẩn.

Mời các bạn viết lời bình cho bài viết!

Nhấp bài bình luận SEO