Tôi khá chắc chắn rằng nhiều người đã nghĩ về điều này, nhưng đối với một số lý do tôi không thể tìm thấy nó bằng cách sử dụng Google và tìm kiếm StackOverflow.Tạo liên kết hoàn toàn vô hình?
Tôi muốn tạo liên kết vô hình (danh sách đen bởi robots.txt) thành trang CGI hoặc PHP sẽ "bẫy" chương trình độc hại và trình thu thập thông tin. Cho đến nay, tôi đã cố gắng:
liên kết rỗng trong cơ thể:
<a href='/trap'><!-- nothing --></a>
này hoạt động khá độc đáo hầu hết thời gian, với hai vấn đề nhỏ:
Vấn đề: Liên kết là một phần của phần thân của tài liệu. Mặc dù nó không thể nhấp được bằng chuột, nhưng một số khách truy cập vẫn vô tình nhấn chuột khi bàn phím điều hướng trang web bằng Tab và Nhập. Ngoài ra, nếu họ sao chép-dán trang vào một trình xử lý văn bản hoặc phần mềm e-mail, ví dụ, liên kết bẫy được sao chép cùng và đôi khi thậm chí có thể nhấp (một số phần mềm không thích các thẻ rỗng
<a>
và sao chép href như nội dung của tag).khối vô hình trong cơ thể:
<div style="display:none"><a href='/trap'><!-- nothing --></a></div>
này sửa chữa các vấn đề với bàn phím điều hướng, ít nhất là trong các trình duyệt tôi thử nghiệm. Liên kết có hiệu quả không thể truy cập được từ màn hình hiển thị bình thường của trang, trong khi vẫn hiển thị hoàn toàn với hầu hết các bot của nhện với mức độ thông minh hiện tại của chúng.
Sự cố: Liên kết vẫn là một phần của DOM. Nếu người dùng sao chép-dán nội dung của trang, nó sẽ xuất hiện trở lại.
Bên trong khối bình luận:
<!-- <a href='/trap'>trap</a> -->
này có hiệu quả loại bỏ các liên kết từ DOM của trang. Về mặt kỹ thuật, nhận xét vẫn là một phần của DOM, nhưng nó đạt được hiệu quả mong muốn mà các tác nhân người dùng tuân thủ sẽ không tạo ra phần tử A, vì vậy nó không phải là một liên kết thực sự.
Sự cố: Hầu hết các chương trình nhện hiện nay đủ thông minh để phân tích cú pháp (X) HTML và bỏ qua nhận xét. Cá nhân tôi đã thấy các bot sử dụng các đối tượng COM/ActiveX của Internet Explorer để phân tích cú pháp (X) HTML và trích xuất tất cả các liên kết thông qua XPath hoặc Javascript. Các loại bot này không bị lừa theo siêu liên kết bẫy.
Tôi đã sử dụng phương pháp # 3 cho đến đêm qua, khi tôi bị trúng một bầy bot dường như thực sự có chọn lọc trên các liên kết mà họ theo dõi. Bây giờ tôi trở lại phương pháp số 2, nhưng tôi vẫn đang tìm kiếm một cách hiệu quả hơn.
Bất kỳ đề xuất nào hoặc giải pháp khác mà tôi đã bỏ lỡ?
Điều gì sẽ xảy ra nếu một số khách hàng không bật JavaScript? –
Sau đó, họ không nhìn thấy liên kết, nhưng có những bất lợi của việc có thể tab để liên kết. Nó không phải là một sửa chữa 100%, nhưng tôi không nghĩ rằng có rất nhiều khách hàng sẽ tab đến liên kết không nhìn thấy có javascript bị vô hiệu hóa. –
Điều này có vẻ là một giải pháp tuyệt vời! Tôi không thực sự lo lắng về sự phụ thuộc JavaScript, vì nó chỉ ảnh hưởng đến giao điểm của hai dân tộc thiểu số (những người khám phá các liên kết bằng cách sao chép hoặc dán tab và những người đã tắt tập lệnh). Bạn có thể mở rộng câu trả lời của bạn để bao gồm một giải pháp mà không phụ thuộc vào jQuery? Tôi nghĩ rằng nó nên liên quan đến document.GetElementById() và node.parentNode.removeChild(), nhưng kinh nghiệm của tôi với Javascript là khá hạn chế. – Juliano