Hướng dẫn chặn User Agent/Bot thông qua .htaccess

Tác giả: 13/09/2024

Trong thời đại số hiện nay, việc bảo vệ website khỏi các bot độc hại và truy cập không mong muốn là vô cùng quan trọng. Một trong những phương pháp phổ biến để chặn các User Agent và bot là sử dụng file .htaccess. Trong bài viết này, chúng tôi sẽ hướng dẫn chi tiết cách chặn User Agent/Bot thông qua file .htaccess, giúp bạn tăng cường bảo mật và tối ưu hóa hiệu suất website. Hãy cùng khám phá cách làm hiệu quả và dễ dàng này!

Ví dụ ở đây website của mình thường bị một số Bot bên dưới scan/scawler vào website. Ở đây mình không nói Bot này là Bot xấu hay tốt, vì nó còn tuỳ thuộc vào từng website. Nên bài viết này mình chỉ hướng dẫn các bạn cách chặn chúng, và bạn chỉ áp dụng cho các Bot mà bạn muốn chặn thôi nhé.

[28/Dec/2023:16:19:51 +0700] "GET /san-pham/dong-co-buoc-5-pha-loai-truc-rong-autonics-ah8k-m566/ HTTP/2" 200 30010 "-" "Mozilla/5.0 (compatible;AhrefsBot/7.0; +http://ahrefs.com/robot/)"
[28/Dec/2023:16:19:59 +0700] "GET /product-tag/a22nl-mma-tya-p102-yc/ HTTP/1.1" 200 1229 "-" "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
AhrefsBotAhrefsBot
[06/Oct/2023:07:36:31 +0700] "GET /robots.txt HTTP/1.1" 404 1238 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"

Dưới đây là hướng dẫn chi tiết về cách chặn User Agent hoặc Bot thông qua file .htaccess. Việc này rất hữu ích để bảo vệ website khỏi các bot độc hại hoặc các User Agent không mong muốn truy cập.

Hướng dẫn thực hiện

Bước 1: Truy cập vào File .htaccess

Đầu tiên các bạn hãy truy cập vào đường dẫn Document root của website cần chặn Bot, ở đây website mình đang cần chặn là  36220.titmit.xyz , thì mình sẽ truy cập như sau:

Bước 2: Thêm cấu hình chặn

Ở đây bạn có thể sử dụng 1 trong 2 cách tuỳ ý thích của mình, vì về cơ bản chúng đều có chức năng chặn Bot.

Cách 1:

Lưu ý: Nếu bạn muốn thêm Bot vào danh sách chặn, thì các Bot sẽ cách nhau bởi dấu gạch đứng |

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "AhrefsBot/7.0|SemrushBot/7~bl|YandexBot/3.0" [NC]
RewriteRule .* - [F,L]

Cách 2:

Lưu ý: Nếu bạn muốn thêm Bot vào danh sách chặn, thì bạn chỉ cần thêm dòng SetEnvIfNoCase User-Agent “tên_bot” bad_bots là được.

# Block Bot
SetEnvIfNoCase User-Agent "AhrefsBot/7.0" bad_bots
SetEnvIfNoCase User-Agent "SemrushBot/7~bl" bad_bots
SetEnvIfNoCase User-Agent "YandexBot/3.0" bad_bots
<Location />
Order Allow,Deny
Deny from env=bad_bots
Allow from all
</Location>

Dưới đây là hình ảnh minh hoạ khi mình chèn vào .htaccess.

Bước 3: Kiểm tra truy cập của Bot

Để kiểm tra xem Bot đã được chặn thành công hay chưa, bạn có thể kiểm tra access_log của website. Nếu thấy mã trả về là 403 như log bên dưới là đã chặn thành công.

[28/Dec/2023:16:32:47 +0700] "GET /product-tag/ebn104c-15a-30ma/ HTTP/2" 403 23966 "-" "Mozilla/5.0 (compatible; AhrefsBot/7.0;+http://ahrefs.com/robot/)"

Nếu Hosting của bạn có hỗ trợ Terminal hoặc bạn sử dụng VPS, thì bạn có thể kiểm tra nhanh bằng lệnh bên dưới:

curl -A "YandexBot/3.0" -I https://36220.titmit.xyz  

Tổng kết

Như vậy ở trên mình đã hướng dẫn bạn chi tiết cách chặn Bot scan/scawler vào website của mình, từ đó hạn chế việc website bị thu thập dữ liệu từ các Bot xấu và đồng thời giúp giảm tải tài nguyên cho Hosting/VPS.

Chúc các bạn thực hiện thành công.