Cách chặn bot và nhện xấu bằng .htaccess

Tác giả AI+, T.Chín 20, 2024, 07:02:51 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Trang web của bạn có bị các bình luận spam, trình thu thập nội dung đánh cắp nội dung, chiếm dụng băng thông và các bot xấu khác không?

Trong bài viết cơ sở kiến thức này, chúng tôi sẽ giới thiệu cách chặn bot xấu với nỗ lực tối thiểu để giữ rác tránh xa trang web của bạn và giải phóng các tài nguyên lưu trữ có giá trị.


Chúng ta bắt đầu thôi!

Chúng tôi đang sử dụng các quy tắc bảo mật tùy chỉnh sẽ chặn danh sách các bot sau đây được biết là thu thập dữ liệu nhiều trên trang web của khách hàng và tiêu tốn các tài nguyên không cần thiết.

  • PetalBot
  • MJ12bot
  • DotBot
  • SeznamBot
  • 8LEGS
  • Nimbostratus-Bot
  • Semrush
  • Ahrefs
  • AspiegelBot
  • AhrefsBot
  • MauiBot
  • BLEXBot
  • Sogou

Trong trường hợp bạn đang sử dụng dịch vụ Ahrefs chẳng hạn, trong những tình huống như vậy, đội ngũ kỹ thuật của chúng tôi có thể vô hiệu hóa quy tắc bảo mật nếu cần. Đừng ngần ngại liên hệ với nhóm hỗ trợ của chúng tôi. Chúng tôi rất vui lòng được giúp đỡ!

1. Nhận dạng Bot xấu

Bước đầu tiên để chặn bot xấu và các yêu cầu xấu khác là xác định chúng. Có một số cách để thực hiện việc này, bao gồm theo dõi các tệp nhật ký của trang web. Phân tích các tệp nhật ký này cũng giống như đọc lá trà, tức là nó đòi hỏi phải thực hành và là một nghệ thuật hơn là một khoa học chính xác.

Bạn cũng có thể tìm kiếm trên Google một số phần mềm phân tích nhật ký hoặc phân tích nhật ký, nhưng vì làm trong ngành lưu trữ, chúng tôi muốn xem dữ liệu thô. Bạn có thể thích những cách khác, vì vậy chúng tôi không thể thực sự đề xuất bất kỳ ứng dụng nào cho việc này, tuy nhiên, có một cách tuyệt vời để thực hiện việc này bằng Excel từ bài đăng trên diễn đàn cũ nhưng vẫn còn liên quan này .

Sau khi xác định được bot xấu, bạn có thể sử dụng một số phương pháp để chặn chúng, bao gồm:

  • Chặn thông qua URI yêu cầu
  • Chặn thông qua User-Agent
  • Chặn qua Referrer
  • Chặn qua Địa chỉ IP

Trước khi sử dụng một trong những phương pháp này, hãy đảm bảo bạn điều tra yêu cầu đến máy chủ/trang web của mình để xác định xem có nên chặn hay không. Cách tốt nhất để thực hiện việc này là tìm kiếm bot hoặc truy vấn trên Google và bạn sẽ tìm thấy thông tin về chúng, nhưng cũng có các diễn đàn trợ giúp và cơ sở dữ liệu về các bot xấu đã biết mà bạn có thể sử dụng để biết thêm thông tin.

Chúng ta hãy cùng tìm hiểu cách chặn bot bằng từng phương pháp được đề cập ở trên!

2. Chặn thông qua URI yêu cầu

Nếu bạn đã kiểm tra nhật ký máy chủ và thấy nhiều truy vấn như bên dưới:

Mã nguồn [Chọn]
https://www.example.com/asdf-crawl/request/?scanx=123
https://wwww.example2.net/sflkjfglkj-crawl/request/?scanx123445

Tất cả các yêu cầu này có thể có các tác nhân người dùng, địa chỉ IP và người giới thiệu khác nhau. Vì vậy, cách duy nhất để chặn các yêu cầu tương tự trong tương lai là nhắm mục tiêu vào chính chuỗi yêu cầu. Về cơ bản, bạn sẽ sử dụng .htaccess để chặn tất cả các yêu cầu khớp với cùng một mẫu đó. Thủ thuật của kỹ thuật chặn này là tìm ra mẫu tốt nhất. Lý tưởng nhất là bạn muốn tìm ra yếu tố phổ biến nhất cho loại yêu cầu bạn muốn chặn.

Trong ví dụ trên, chúng ta có các mẫu chung sau:

Mã nguồn [Chọn]
123
/request
crawl
scanx

Khi quyết định một mẫu để chặn, điều quan trọng là phải chọn một mẫu không được sử dụng bởi bất kỳ tài nguyên hiện có nào trên trang web của bạn. Đối với ví dụ này, chúng ta có thể chọn chặn tất cả các yêu cầu bao gồm chuỗi này: "crawl".

Để thực hiện việc này, bạn có thể sử dụng lệnh mod_alias bằng cách thêm đoạn mã sau vào tệp .hataccess ở thư mục gốc của trang web, tức là thư mục public_html.

Mã nguồn [Chọn]
# Block via Request URI
<IfModule mod_alias.c>
    RedirectMatch 403 /crawl/
</IfModule>

Sau đó, nếu bạn quyết định muốn chặn tất cả các yêu cầu có chứa chuỗi 'scanx', bạn có thể thêm chuỗi này vào truy vấn bằng cách sử dụng cú pháp sau:

Mã nguồn [Chọn]
# Block via Request URI
<IfModule mod_alias.c>
    RedirectMatch 403 /(crawl|scanx)/
</IfModule>

Hãy nhớ rằng, kỹ thuật này chỉ hoạt động khi mẫu đích được bao gồm trong phần chính của URI yêu cầu. Để chặn các mẫu này nếu được bao gồm trong phần chuỗi truy vấn của yêu cầu (tức là phần sau dấu chấm hỏi), bạn sẽ sử dụng mod_rewrite thay thế, như được hiển thị bên dưới:

Mã nguồn [Chọn]
# Block via Query String
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{QUERY_STRING} (crawl|scanx) [NC]
    RewriteRule (.*) - [F,L]
</IfModule>

Biểu thức chính quy (regex) với mod_rewrite hoạt động giống như với mod_alias. Khi mã này được đưa vào, tất cả các yêu cầu bao gồm một trong hai chuỗi bị cấm sẽ bị từ chối truy cập.

Hãy nhớ kiểm tra xem trang web của bạn có hoạt động bình thường không trước khi đưa tính năng này vào sử dụng!

4. Chặn thông qua User-Agent

Dưới đây chúng tôi sẽ trình bày cách chặn bot xấu thông qua tác nhân người dùng của chúng. Giả sử bạn nhận thấy một loạt các yêu cầu spam khó chịu đều báo cáo một trong các tác nhân người dùng sau:

  • EvilBotHere
  • SpamSpewer
  • SecretAgentAgent

Rõ ràng đây không phải là bot hợp pháp và có lẽ bạn không muốn chúng chiếm dụng tài nguyên lưu trữ của mình.

Để chặn mọi yêu cầu từ bất kỳ tác nhân người dùng (bot) nào trong số này, hãy thêm đoạn mã sau vào tệp .htaccess của bạn:

Mã nguồn [Chọn]
# Block via User Agent
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_USER_AGENT} (EvilBotHere|SpamSpewer|SecretAgentAgent) [NC]
    RewriteRule (.*) - [F,L]
</IfModule>

Lưu tệp và tải tệp lên thư mục public_html của tài khoản lưu trữ của bạn bằng cách sử dụng Trình quản lý tệp tích hợp của cPanel. Trước khi đưa vào hoạt động, bạn nên kiểm tra để đảm bảo trang web của mình vẫn hoạt động bình thường.

Bạn cũng có thể sử dụng công cụ trực tuyến miễn phí như Bots vs Browsers để tra cứu các bot cần chặn và kiểm tra xem chúng có bị chặn hay không bằng cách sử dụng công cụ kiểm tra của họ.

Nếu bạn muốn hoặc cần thêm bot vào danh sách đó, bạn có thể thực hiện bằng cách sử dụng dấu gạch ngang (hay còn gọi là |) giữa các tên bot, như thế này:

Mã nguồn [Chọn]
RewriteCond %{HTTP_USER_AGENT}
(EvilBotHere|SpamSpewer|SecretAgentAgent|AnotherOneHere|AnotherOneHere|AndSoOn) [NC]

5. Chặn qua Referrer

Nếu bạn thấy trang web của mình đang bị nhắm mục tiêu bởi những người đang đánh cắp tài nguyên và băng thông của trang web, bạn có thể dễ dàng chặn các yêu cầu từ những người giới thiệu cụ thể đó.

Ví dụ, giả sử bạn thấy các liên kết giới thiệu sau trong nhật ký của mình:

Mã nguồn [Chọn]
http://www.spamreferrer1.org/
http://bandwidthleech.com/
http://www.contentthieves.ru/

Bạn có thể sử dụng mod_rewrite tích hợp của Apache để chặn các referrer này. Để thực hiện việc này, hãy thêm mã sau vào .htaccess của trang web của bạn:

Mã nguồn [Chọn]
# Block via Referrer
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} ^http://(.*)spamreferrer1.org [NC,OR]
    RewriteCond %{HTTP_REFERER} ^http://(.*)bandwidthleech.com [NC,OR]
    RewriteCond %{HTTP_REFERER} ^http://(.*)contentthieves.ru [NC]
    RewriteRule (.*) - [F,L]
</IfModule>

Đoạn mã này thực hiện những điều sau:

  • Cho phép mod_rewrite nếu tính năng này chưa được bật.
  • Kiểm tra người giới thiệu xem có bất kỳ URL nào trong danh sách không.
  • Nếu người giới thiệu trùng khớp, người giới thiệu sẽ bị chặn bằng phản hồi 403 "Forbidden".

Bạn có thể dễ dàng thêm người giới thiệu mới vào danh sách bằng cách thêm RewriteCond tương tự.

Điều quan trọng cần nhớ là RewriteCond cuối cùng KHÔNG ĐƯỢC bao gồm cờ OR.

6. Chặn qua Địa chỉ IP

Khi bạn đang xử lý những người dùng cụ thể, việc chặn thông qua địa chỉ IP có thể rất tiện lợi. Thật không may, rất nhiều bot có phạm vi IP rất lớn và chúng không tiết lộ tất cả những gì chúng là, chưa kể đến proxy, proxy ngược, bộ nhớ đệm, giả mạo, v.v., vì vậy công cụ này chỉ có thể hữu ích cho những trường hợp cụ thể.

Nếu bạn muốn chặn người dùng dựa trên địa chỉ IP của họ, bạn có thể sử dụng mã sau:

Mã nguồn [Chọn]
# Block via IP Address
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REMOTE_ADDR} ^123.456.789.000
    RewriteRule (.*) - [F,L]
</IfModule>

Chỉ có vậy thôi. Hãy nhớ rằng bạn đang thoát khỏi dấu chấm bằng dấu gạch chéo ngược, .

Điều này cho Apache (hoặc Litespeed trong trường hợp của tôi) biết cách xử lý các dấu chấm theo nghĩa đen thay vì ký tự đại diện, đây là mặc định cho một dấu chấm không thoát. Thoát khỏi các dấu chấm đảm bảo chúng ta chỉ chặn địa chỉ IP đã chỉ định nên sẽ không có bất kỳ kết quả dương tính giả nào.

Nếu bạn muốn chặn nhiều hơn một IP, mã sẽ trông như thế này:

Mã nguồn [Chọn]
# Block via IP Address
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REMOTE_ADDR} ^123.456.789.000 [OR]
    RewriteCond %{REMOTE_ADDR} ^123.456.789.000 [OR]
    RewriteCond %{REMOTE_ADDR} ^123.456.789.000
    RewriteRule (.*) - [F,L]
</IfModule>

Như trong các kỹ thuật mod_rewrite trước đây mà chúng tôi đã đề cập ở đây, RewriteCond cuối cùng KHÔNG NÊN bao gồm cờ [OR]. Ngoài ra, mọi thứ đều đơn giản.

Để chặn một PHẠM VI địa chỉ IP, bạn chỉ cần bỏ qua octet cuối cùng hoặc bất kỳ octet nào cần thiết cho phạm vi đó, như trong mã bên dưới:

Mã nguồn [Chọn]
# Block via IP Address
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REMOTE_ADDR} ^123.           [OR]
    RewriteCond %{REMOTE_ADDR} ^111.222.      [OR]
    RewriteCond %{REMOTE_ADDR} ^444.555.777.
    RewriteRule (.*) - [F,L]
</IfModule>

Trong đoạn mã đó, chúng tôi sẽ chặn những nội dung sau:

  • Tất cả địa chỉ IP đều bắt đầu bằng 123.
  • Tất cả các địa chỉ IP đều bắt đầu bằng 111.222.
  • Tất cả các địa chỉ IP đều bắt đầu bằng 444.555.777.

Và đó là cách bạn chặn các dạng bot hoặc người dùng khác nhau khỏi trang web của mình bằng cách sử dụng .htaccess!