Ngăn chặn robot thu thập dữ liệu một phần cụ thể của trang


28

Là một quản trị trang web phụ trách một trang web nhỏ có diễn đàn, tôi thường xuyên nhận được những lời phàn nàn từ người dùng rằng cả công cụ tìm kiếm nội bộ và các tìm kiếm bên ngoài (như khi sử dụng Google) đều bị ô nhiễm bởi chữ ký của người dùng của tôi (họ đang sử dụng lâu chữ ký và đó là một phần kinh nghiệm của diễn đàn vì chữ ký có ý nghĩa rất lớn trong diễn đàn của tôi).

Vì vậy, về cơ bản hiện tại tôi đang thấy hai lựa chọn:

  1. Hiển thị chữ ký dưới dạng hình ảnh và khi người dùng nhấp vào "hình ảnh chữ ký", nó sẽ được đưa đến một trang có chữ ký thật (với các liên kết trong chữ ký, v.v.) và trang đó được đặt là không thể thu thập thông tin nhện động cơ). Điều này sẽ tiêu tốn một số băng thông và cần một số công việc (vì tôi cần một trình kết xuất HTML tạo ra hình ảnh, v.v.) nhưng rõ ràng nó sẽ giải quyết được vấn đề (có một số vấn đề nhỏ trong đó chữ ký sẽ không tôn trọng phông chữ / màu của người dùng nhưng người dùng của tôi rất sáng tạo với chữ ký của họ, sử dụng phông chữ / màu sắc / kích thước tùy chỉnh, v.v. vì vậy đó không phải là vấn đề lớn).

  2. Đánh dấu mọi phần của trang web có chữ ký là không thể thu thập dữ liệu.

Tuy nhiên tôi không chắc chắn về sau này: đây có phải là điều có thể làm được không? Bạn chỉ có thể đánh dấu các phần cụ thể của trang web là không thể thu thập dữ liệu?

Câu trả lời:


8

Đây là câu trả lời tương tự mà tôi đã cung cấp cho thẻ noindex cho google trên Stack Overflow:

Bạn có thể ngăn Google nhìn thấy các phần của trang bằng cách đặt các phần đó vào iframe bị chặn bởi tệp robots.txt.

robot.txt

Disallow: /iframes/

index.html

This text is crawlable, but now you'll see 
text that search engines can't see:
<iframe src="/iframes/hidden.html" width="100%" height=300 scrolling=no>

/iframes/hidden.html

Search engines cannot see this text.

Thay vì sử dụng iframe, bạn có thể tải nội dung của tệp ẩn bằng AJAX. Dưới đây là một ví dụ sử dụng jquery ajax để làm như vậy:

his text is crawlable, but now you'll see 
text that search engines can't see:
<div id="hidden"></div>
<script>
    $.get(
        "/iframes/hidden.html",
        function(data){$('#hidden').html(data)},
    );
</script>

Việc thêm / tiêm kiểm soát bằng AJAX có giúp không cho phép và ngăn không cho thu thập dữ liệu giống nhau không?
Pranav Bilurkar

Miễn là vị trí mà AJAX đang tìm nạp bị chặn bởi tệp robots.txt.
Stephen Ostermiller

Bạn có vui lòng kiểm tra webmasters.stackexchange.com/questions/108169/ này và đề nghị nếu có.
Pranav Bilurkar

Miễn là vị trí mà AJAX đang tìm nạp bị chặn bởi robot.txt - Vui lòng giải thích thêm về điều này.
Pranav Bilurkar

2
Google phạt những người che giấu javascript của họ khỏi bị thu thập dữ liệu, để tránh lạm dụng. Điều này có đúng với iframe không?
Jonathan

7

Một giải pháp khác là bọc sig trong một khoảng hoặc div với kiểu được đặt thành display:nonevà sau đó sử dụng Javascript để loại bỏ nó để văn bản hiển thị cho các trình duyệt có bật Javascript. Các công cụ tìm kiếm biết rằng nó sẽ không được hiển thị vì vậy không nên lập chỉ mục cho nó.

Một chút về HTML, CSS và javascript nên làm điều đó:

HTML:

<span class="sig">signature goes here</span>

CSS:

.sig {
display:none;
}

javascript:

<script type="text/javascript"> 
$(document).ready(function()
  {
      $(".sig").show();
  }
</script>

Bạn sẽ cần bao gồm một thư viện jquery .


4
+1 và tôi đã nghĩ về nó nhưng sẽ không được coi là một hình thức "che giấu" bởi các loài nhện khác nhau?
WebbyTheWebbor


1
Tôi nghĩ nó khá gọn gàng :-)
paulmorriss

Điều này có thể, theo định nghĩa nghiêm ngặt nhất, được coi là che giấu. Tuy nhiên, anh ta có thể in tất cả chữ ký bằng javascript bằng cách sử dụng document.write ("");. Google không lập chỉ mục bất cứ điều gì trong javascript. support.google.com/customsearch/bin/ từ
Athoxx

Tôi tin rằng Google có thể lập chỉ mục các đoạn như vậy, ngay cả khi chúng bị ẩn bằng CSS. Tùy chọn an toàn nhất là không bao gồm văn bản trong HTML. (Chúng tôi có thể sử dụng JavaScript để
chèn

3

Tôi đã có một vấn đề tương tự, tôi đã giải quyết nó bằng css nhưng nó cũng có thể được thực hiện với javascript và jquery.

1 - Tôi đã tạo một lớp mà tôi sẽ gọi " disallowed-for-crawlers" và đặt lớp đó vào mọi thứ mà tôi không muốn bot Google nhìn thấy hoặc đặt nó trong một khoảng với lớp đó.

2 - Trong CSS chính của trang, tôi sẽ có một cái gì đó như

.disallowed-for-crawlers {
    display:none;
}

3- Tạo một tệp CSS có tên disallow.css và thêm tệp đó vào tệp robots.txt không được phép thu thập thông tin, vì vậy trình thu thập thông tin sẽ không truy cập vào tệp đó, nhưng thêm tệp đó làm tham chiếu đến trang của bạn sau css chính.

4- Trong disallow.csstôi đặt mã:

.disallowed-for-crawlers {
    display:block !important;
}

Bạn có thể chơi với javascript hoặc css. Tôi chỉ tận dụng các lớp không cho phép và các lớp css. :) hy vọng nó sẽ giúp được ai đó.


Tôi không chắc chắn điều này hoạt động do trình thu thập thông tin không truy cập tệp .css (đây có phải là vấn đề không? Từ khi nào trình thu thập thông tin truy cập và thu thập dữ liệu các tệp css cụ thể?) Và không chỉ đơn giản là do hiển thị: không ai và trình thu thập thông tin hiểu rằng nó sẽ không được hiển thị họ không lập chỉ mục nó. Ngay cả khi đây là trường hợp, bạn sẽ làm gì để thực sự hiển thị nội dung cho người dùng?
Σύρς

Nội dung được hiển thị khi bước 4 được tải cho người dùng vì họ được phép xem tệp đó (disallow.css). Và về các robot tải CSS là công cụ tìm kiếm đáng kính hiện nay, đó là cách chúng xác định khi nào một trang web có thân thiện với thiết bị di động hay không, các trình thu thập dữ liệu không tôn trọng nó không đáng để lo lắng, các công cụ tìm kiếm lớn đọc css và javascript để thu thập dữ liệu các trang, họ đã làm điều đó trong khoảng ... gần 6 năm rồi? có thể nhiều hơn
Rolando Retana

Bạn có thể cung cấp các nguồn sao lưu yêu cầu đó? Vui lòng xem webmasters.stackexchange.com/questions/71546/ trênyoast.com/dont-block-css-and-js-files và quan trọng nhất là ở đây webmasters.googleblog.com/2014/10/ , nơi mà những gì bạn mô tả được miêu tả như thực hành xấu.
Σύρς Γ ύλ

Đó là một thực tế tồi nếu tôi muốn Google xem trang web của mình một cách bình thường và tôi chặn tất cả CSS và đó là một thực tiễn tồi vì họ giải thích CSS, nhưng trong trường hợp cụ thể này, tôi chặn một tệp cụ thể, không phải tất cả các css, OP yêu cầu về việc ngăn google đọc một phần của trang. nhưng tôi không muốn Google thu thập dữ liệu các phần đó vì vậy tôi chặn một CSS duy nhất (không phải tất cả chúng, chỉ một). Và để sao lưu những gì bạn tuyên bố? một trong những trình thu thập thông tin đọc JS và CSS? việc này dễ dàng như truy cập Google Webmaster Tools của bạn và xem "Tìm nạp như một robot" bạn sẽ thấy cách họ đọc css và js.
Rolando Retana

Ngoài ra, để thêm vào, trong trường hợp cụ thể của tôi không phải là tôi muốn làm điều gì đó mờ ám với Google Crawler, tôi chỉ không muốn google đọc một phần thông tin có vẻ lặp đi lặp lại trong tất cả các trang. Giống như số điện thoại, địa chỉ, sản phẩm liên quan hoặc thông tin không liên quan để Google thu thập dữ liệu.
Rolando Retana

2

Một cách để làm điều này là sử dụng một hình ảnh của văn bản chứ không phải là văn bản thuần túy.

Có thể Google cuối cùng sẽ đủ thông minh để đọc văn bản ra khỏi hình ảnh, vì vậy nó có thể không hoàn toàn là bằng chứng trong tương lai, nhưng nó sẽ hoạt động tốt trong ít nhất một thời gian kể từ bây giờ.

Có một loạt các nhược điểm của phương pháp này. Nếu một người bị khiếm thị, điều đó thật tệ. Nếu bạn muốn nội dung của mình thích ứng với thiết bị di động so với máy tính để bàn, điều đó thật tệ. (vân vân)

Nhưng nó là một phương pháp hiện đang (phần nào) hoạt động.


Điều này hoạt động tốt như thế nào nếu bạn sử dụng alt & title tage một cách thích hợp?
Jayen

Chưa thử, nhưng có vẻ như Google sẽ thu thập dữ liệu. Đó là một hạn chế lớn của phương pháp này.
James Foster

1

Điều này thật dễ dàng.

Trước khi phục vụ trang của bạn, bạn cần biết nó là bot, máy tính hay điện thoại. Sau đó, bạn cần phải thiết lập nội dung cho phù hợp. Đây là thông lệ tiêu chuẩn trong thời đại ngày nay và chức năng cốt lõi của một số CMS.

Có rất nhiều giải pháp về SE để thực hiện chuyển hướng dựa trên ĐẠI LÝ NGƯỜI DÙNG có thể được đưa vào htaccess của bạn. Nếu điều này phù hợp với phần mềm diễn đàn của bạn thì bạn có thể chạy các mã khác nhau trên cùng một DB để cung cấp những gì Google cần mà không cần phải chỉnh sửa.

Ngoài ra, bạn có thể đặt một dòng nhỏ trong mã PHP có chữ 'if USER AGENT == Googlebot thì không hiển thị chữ ký'.

Nếu bạn thực sự không thể làm điều đó thì bạn có thể lấy mod_proxy để phục vụ cho bot và sử dụng nó để loại bỏ bất cứ thứ gì mà mã php của bạn tạo ra mà bot không cần phải xem.

Về mặt kỹ thuật, Google không chấp thuận công cụ tìm kiếm của họ được hiển thị một trang khác với những gì khách truy cập trang web bình thường nhìn thấy, tuy nhiên, cho đến nay, họ đã không đưa BBC và các công ty khác cung cấp nội dung dành riêng cho trình duyệt / IP / khách truy cập . Họ cũng có phương tiện hạn chế để xem bot của họ đã được 'kết nối' chưa.

Giải pháp thay thế ẩn nội dung bằng CSS để nó được kích hoạt lại bởi tập lệnh cũng là một phần màu xám. Theo hướng dẫn của Công cụ quản trị trang web của riêng họ vào ngày 20/6/11, đây không phải là một ý tưởng hay:

http://www.google.com/support/webmasters/

Đó có thể không phải là một chiếc máy tính bảng được đúc bằng đá, nhưng nó được cập nhật và bởi Google.

Thủ thuật ẩn nội dung sẽ không hoạt động với thiểu số người không có javascript, điều này có thể không phải là mối quan tâm lớn, tuy nhiên, chờ tài liệu tải và sau đó hiển thị chữ ký sẽ không phải là trải nghiệm xem thỏa đáng như bạn sẽ nghĩ rằng trang đã được tải, sau đó nó sẽ nhảy lên khi các chữ ký ẩn hiển thị để sau đó đẩy nội dung xuống trang. Kiểu tải trang này có thể gây khó chịu nếu bạn có một mạng cấp thấp nhưng có thể không đáng chú ý nếu bạn có một máy phát triển nhanh trên kết nối internet nhanh.


6
@: phục vụ các nội dung khác nhau tùy thuộc vào người đang truy cập trang sẽ hơi nhăn mặt và có thể phạt bạn trong công cụ tìm kiếm theo như tôi hiểu. Tôi rất thích giải pháp JavaScript của paulmorris.
WebbyTheWebbor

@: erf, nếu phục vụ nội dung được cá nhân hóa là tên của trò chơi, thì JavaScript cũng vậy. Cuối cùng tôi đã kiểm tra tổng thể Web không thực sự hoạt động tốt nữa khi chưa cài đặt JavaScript (GMail, FaceBook, Google Docs, stack overflow, Google+ --yup tôi đã có nó rồi;) - v.v.). Tôi không thấy không cần phải chỉ trích giải pháp của paulmorris dựa trên tiền đề sai lầm rằng JavaScript không có sẵn sẽ là một vấn đề.
WebbyTheWebbor

@: Bạn có thể thích điều này từ Matt Cutts (phụ trách SEO tại Google) về chính chủ đề đó: Theseonewsblog.com/3383/google-hidden-text Đó là nhận xét tuyệt vời của paulmorris được đăng trong bình luận cho câu trả lời tuyệt vời của anh ấy. Tôi xin lỗi nhưng gọi JavaScript là "sự ngớ ngẩn" trên một diễn đàn như vậy là gần với trolling.
WebbyTheWebbor

... Và sau đó chúng tôi nhận được câu hỏi này: webmasters.stackexchange.com/questions/16398/iêu - 'nhồi từ khóa' là ngớ ngẩn. Xin lỗi vì điều đó.
ʍǝɥʇɐɯ

Tôi tin rằng điều này rơi vào "che giấu" và do đó nó không phải là một thực hành tốt.
Σύρς

0

Không, không có cách nào để ngăn chặn robot thu thập dữ liệu các phần của trang. Đó là cả một trang hoặc không có gì.

Các đoạn trong kết quả tìm kiếm của Google thường được lấy từ mô tả meta trên trang. Vì vậy, bạn có thể làm cho Google hiển thị một phần cụ thể của trang bằng cách đặt phần đó vào thẻ mô tả meta. Với nội dung do người dùng tạo, thật khó để có được đoạn trích hay, nhưng lấy bài đăng đầu tiên của chuỗi có thể sẽ hoạt động.

Cách khác duy nhất tôi có thể nghĩ là sử dụng Javascript. Một cái gì đó như paulmorriss đề xuất có thể hoạt động, nhưng tôi nghĩ các công cụ tìm kiếm vẫn sẽ lập chỉ mục nội dung nếu nó có trong HTML. Bạn có thể xóa nó khỏi HTML, lưu trữ nó trong chuỗi Javascript, sau đó thêm lại khi tải trang. Điều này có một chút phức tạp, mặc dù.

Cuối cùng, một điều cần lưu ý: nếu Google hiển thị chữ ký của người dùng trong đoạn trích của họ, thì đã quyết định đó là phần có liên quan nhất đến truy vấn của người dùng.


1
vấn đề không phải là quá nhiều Google hiển thị các trang web của người dùng trong đoạn trích của họ khi những trang cụ thể này được xếp hạng cao trong Google ngay từ đầu. Vấn đề ở đây là chính xác là Google có thể nghĩ rằng các thiết bị có liên quan khi chúng thực sự không: Ý tôi là, đó chính xác là câu hỏi của tôi.
WebbyTheWebbor

@Webby, tôi không hiểu, tại sao bạn không muốn các trang của bạn được xếp hạng cao? Bạn có một số trang ví dụ và truy vấn để chúng tôi có thể thấy những gì bạn đang nói về? Và nếu Google hiển thị một sig trong kết quả tìm kiếm, thì nó liên quan đến truy vấn tìm kiếm đó, ngay cả khi nó không liên quan đến chính trang đó.
Không hài lòngGoat

1
Tôi không thể đưa ra ví dụ nhưng tôi làm muốn trang web của tôi / diễn đàn để rank cao và nó làm như vậy rất độc đáo. Vấn đề là trong số các kết quả tìm kiếm (hầu hết chủ yếu là cho trang web / diễn đàn của tôi vì về cơ bản đó trang web về chủ đề này), các trang nhập thực sự sẽ bị ngập trong các chữ ký. Ý tôi là, tôi làm thực sự muốn làm những gì tôi yêu cầu trong câu hỏi. Và hình ảnh hoặc JavaScript nó sẽ được.
WebbyTheWebbor

@Webby, câu trả lời của bạn hơi khó hiểu nhưng dường như bạn đang ám chỉ rằng chữ ký người dùng của bạn là tất cả các trang riêng biệt (URL) và do đó xuất hiện dưới dạng kết quả riêng biệt trong SERPs. Trong trường hợp đó, bạn có thể chặn các trang đó thông qua robot.txt. Nếu không, hãy thử giải pháp mô tả meta tôi đã đăng ở trên, vì điều đó gần như chắc chắn sẽ giảm thiểu vấn đề.
DisgruntledGoat

0

Bạn có thể đặt trang vào PHP nếu có "khác" dẫn đến hình ảnh xác thực cung cấp khóa cho phần if.

Tôi không thực sự quan tâm bởi vì nếu thông tin người dùng không khớp trên trang của tôi thì họ sẽ nhận được một trang trống hoặc được gửi đến trang đăng nhập.

<?php
session_start();

if(empty($_SESSION['captcha']) or $_SESSION['captcha'] != $key){
    header("Location: captcha.php");
}

if(!empty($_SESSION['captcha']) and $_SESSION['captcha'] == $key){

"the page"

}
?>

$key phải là một hàm băm của ngày hiện tại hoặc một cái gì đó thay đổi để nó không đủ để thêm giá trị vào phiên.

Viết bình luận nếu bạn muốn tôi thêm một ví dụ captcha vì bây giờ tôi không có ai trong tôi.


Câu trả lời này giả định rằng các trang web sử dụng hoặc nhà phát triển biết PHP có thể không đúng. Ngoài ra, nó làm cho việc truy cập nội dung trở nên khó khăn đối với người dùng không phải là một điều tốt.
John Conde

Tôi có thể mua rằng không phải ai cũng biết PHP nhưng captcha có thể là "màu của cỏ", thậm chí cả pepole mù cũng biết điều đó.
Alfons Marklén

-3

4
Không. Googleoff và Googleon chỉ được Công cụ Tìm kiếm Google hỗ trợ. Googlebot bỏ qua chúng để tìm kiếm trên web. Tham khảo: Bạn có thể sử dụng các bình luận googleon và googleoff để ngăn Googlebot lập chỉ mục một phần của trang không? Bạn đã liên kết với tài liệu Công cụ Tìm kiếm của Google và nhận xét về bài viết mà bạn đã liên kết cũng nói rằng nó không hoạt động cho Googlebot.
Stephen Ostermiller

@StephenOstermiller đúng rồi! Darn
Luke Madhanga
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.