Anonim

Tôi điều hành một trang web cho một khách hàng nơi họ hiển thị một cơ sở dữ liệu thông tin lớn mà họ đã thu thập chính xác và từ từ trong những năm qua. Họ đang tìm dữ liệu của họ trên web ở nhiều nơi khác nhau. Nhiều khả năng là do một người quét qua trang của họ theo trang và trích xuất thông tin họ cần vào cơ sở dữ liệu của riêng họ. Và trong trường hợp bạn đang tự hỏi, họ biết đó là dữ liệu của họ vì một mẩu dữ liệu được trồng trong mỗi danh mục trên trang web của họ.

Tôi đã thực hiện rất nhiều nghiên cứu về điều này trong vài ngày qua và tôi có thể nói với bạn rằng không có một giải pháp bắt tất cả hoàn hảo. Tuy nhiên, tôi đã tìm thấy một số điều cần làm để thực hiện việc này khó hơn một chút đối với họ. Đây là những gì tôi thực hiện cho khách hàng.

Dữ liệu được phân trang

Nếu bạn có nhiều dữ liệu được phân trang và bạn đang phân trang dữ liệu của mình bằng cách chỉ thêm một số khác vào cuối URL của bạn, ví dụ: http://www.domain.com/carget/programming/2 - Sau đó, bạn đang thực hiện công việc của trình thu thập thông tin dễ dàng hơn nhiều. Vấn đề đầu tiên là, nó có một mẫu dễ nhận biết, do đó, việc đặt một cái cạp lỏng lẻo trên các trang này dễ như ăn bánh. Vấn đề thứ hai, bất kể URL của các trang tiếp theo trong danh mục, nhiều khả năng sẽ có một liên kết tiếp theo và trước đó để chúng bám vào.

Bằng cách tải dữ liệu được phân trang thông qua javascript mà không cần tải lại trang, điều này làm phức tạp đáng kể công việc cho rất nhiều người dọn dẹp ngoài kia. Google chỉ mới bắt đầu phân tích cú pháp javascript trên trang. Có rất ít bất lợi để tải lại dữ liệu như thế này. Bạn cung cấp ít hơn một vài trang để Google lập chỉ mục, nhưng về mặt kỹ thuật, dữ liệu được phân trang nên được trỏ đến trang danh mục gốc thông qua chuẩn hóa. Xác định các trang phân trang dữ liệu của bạn.

Chọn ngẫu nhiên đầu ra mẫu

Phế liệu thường sẽ được tùy chỉnh một chút cho dữ liệu của bạn một cách cụ thể. Họ sẽ bám vào một id hoặc lớp div nhất định cho tiêu đề, ô thứ 3 trong mỗi hàng cho mô tả của bạn, v.v. Có một mẫu dễ nhận dạng cho hầu hết các công cụ dọn dẹp để làm việc với hầu hết dữ liệu đến từ cùng một bảng, được hiển thị bởi cùng một mẫu. Chọn ngẫu nhiên id id và tên lớp của bạn, chèn các cột bảng trống ngẫu nhiên với 0 chiều rộng. Hiển thị dữ liệu của bạn trong một bảng trên một trang, trong các div theo kiểu và kết hợp trên một mẫu khác. Bằng cách trình bày dữ liệu của bạn có thể dự đoán được, nó có thể được dự đoán và chính xác.

Hũ mật ong

Điều này là khá gọn gàng trong sự đơn giản của nó. Tôi đã bắt gặp phương pháp này trên một số trang về việc ngăn chặn trang web.

  • Tạo một tệp mới trên máy chủ của bạn được gọi là gotcha.html.
  • Trong tệp robot.txt của bạn, hãy thêm vào như sau:
    Đại lý người dùng: *
    Không cho phép: /gotcha.html

    Điều này cho tất cả các robot và trình thu thập dữ liệu lập chỉ mục trang web của bạn không lập chỉ mục tệp gotcha.html. Bất kỳ trình thu thập dữ liệu web bình thường nào cũng sẽ tôn trọng mong muốn của tệp robot.txt của bạn và không truy cập vào tệp đó. tức là Google và Bing. Bạn thực sự có thể muốn thực hiện bước này và đợi 24 giờ trước khi chuyển sang bước tiếp theo. Điều này sẽ đảm bảo rằng trình thu thập thông tin không vô tình bị bạn chặn do thực tế là nó đã được thu thập thông tin giữa chừng khi bạn cập nhật tệp robot.txt của mình.
  • Đặt một liên kết đến gotcha.html ở đâu đó trên trang web của bạn. Không quan trọng ở đâu. Tuy nhiên, tôi muốn giới thiệu ở chân trang, đảm bảo rằng liên kết này không hiển thị, trong CSS, hiển thị: none;
  • Bây giờ, hãy đăng nhập IP / thông tin chung của cá nhân đã truy cập trang này và chặn chúng. Ngoài ra, bạn có thể đưa ra một tập lệnh để cung cấp cho họ dữ liệu rác và không chính xác. Hoặc có thể một tin nhắn cá nhân tốt đẹp từ bạn cho họ.

Người xem web thông thường sẽ không thể thấy liên kết, vì vậy nó sẽ không vô tình được nhấp vào. Trình thu thập thông tin có uy tín (ví dụ Google), sẽ tôn trọng mong muốn của tệp robots.txt của bạn và không truy cập tệp. Vì vậy, các máy tính duy nhất nên vấp ngã trên trang này là những máy tính có mục đích xấu hoặc ai đó đang xem mã nguồn của bạn và nhấp ngẫu nhiên xung quanh (và ồ nếu điều đó xảy ra).

Có một vài lý do điều này có thể không luôn luôn hoạt động. Đầu tiên, rất nhiều người dọn dẹp không hoạt động như các trình thu thập dữ liệu web thông thường và không chỉ khám phá dữ liệu bằng cách theo dõi mọi liên kết từ mỗi trang trên trang web của bạn. Phế liệu thường được xây dựng để sửa chữa trên một số trang nhất định và chỉ tuân theo các cấu trúc nhất định. Ví dụ: một dụng cụ cạo có thể được bắt đầu trên trang danh mục và sau đó được yêu cầu chỉ truy cập các URL có từ / dữ liệu trong sên. Thứ hai, nếu ai đó đang chạy bộ quét của họ trên cùng một mạng với những người khác và có một IP được chia sẻ đang được sử dụng, bạn sẽ cấm toàn bộ mạng. Bạn sẽ phải có một trang web rất phổ biến thực sự cho điều này là một vấn đề.

Ghi dữ liệu vào hình ảnh khi đang bay

Tìm một trường dữ liệu nhỏ hơn, không nhất thiết phải là chuỗi văn bản dài vì điều này có thể làm cho việc tạo kiểu trang trở nên khó khăn hơn một chút. Xuất dữ liệu này bên trong một hình ảnh, tôi cảm thấy khá tự tin có nhiều phương pháp trong mọi ngôn ngữ lập trình để viết văn bản thành hình ảnh một cách linh hoạt (bằng php, fantettftext). Điều này có lẽ hiệu quả nhất với các giá trị số vì số cung cấp lợi thế SEO không đáng kể hơn nhiều.

Thay thế

Đây không phải là một lựa chọn cho dự án này. Yêu cầu đăng nhập sau một số lần xem trang nhất định hoặc hiển thị một lượng dữ liệu hạn chế mà không cần đăng nhập. Tức là, nếu bạn có 10 cột, chỉ hiển thị 5 đến người dùng không đăng nhập.

Đừng phạm sai lầm này

Đừng bận tâm đến việc đưa ra một số giải pháp dựa trên tác nhân người dùng của bot. Thông tin này có thể dễ dàng bị giả mạo bởi một người cạp đất biết họ đang làm gì. Ví dụ như google bot có thể được mô phỏng dễ dàng. Bạn có nhiều khả năng không muốn cấm Google.

Ngăn chặn cào trang web