Thứ Tư, 27 tháng 5, 2015

Những vấn đề cần lưu ý của web robot

Việc sử dụng các Robot tốn khá nhiều chi phí, đặc biệt là khi chúng được điều khiển từ xa trên internet. Phần này chúng ta sẽ cùng thảo luận về những hiểm hoạ do robot gây ra.


Quá tải mạng và server – Network resource and server load

Sau một khoảng thời gian dài, thường là một tháng, robot sẽ bắt đầu hoạt động một cách liên tục. Để tăng tốc nhiều robot được phóng ra đồng thời do đó cần có băng thông lớn. Tài nguyên mạng bị khai thác quá mức khi robot yêu cầu một lượng lớn thông tin trong khoảng thời gian quá ngắn (rapid fire). Kết quả là thiếu băng thông cho những ứng dụng khác. Server vừa phải phục vụ yêu cầu của robot vừa cung cấp dịch vụ cho user, do đó yêu cầu của robot tăng lên bao nhiêu thì dịch vụ sẽ giảm xuống bấy nhiêu.


Tác giả của một con robot đã thử nghiệm bằng cách cho thi hành 20 lượt truy cập đồng thời vào server của anh ta. Những lúc robot thu thập thông tin, server bị chậm lại. Trong vòng một tuần robot đã viếng thăm site này với một yêu cầu kinh khủng. Chỉ sau 170 lượt truy xuất liên tục, thử nghiệm thất bại do server bị quá tải.

Rapid fire thực sự là thảm hoạ. Hiệu quả truyền tải thông tin dạng này bằng giao thức web hay HTTP sụt giảm thấy rõ. Những giao thức mới đang được xem xét nhằm cứu vãn tình thế.
Sự cập nhật quá mức- Updating overhead


Người ta cho rằng các cơ sở dữ liệu do web robot tạo ra có thể được cập nhật tự động nhưng cho đến thời điểm này vẫn chưa có cơ chế kiểm soát sự thay đổi trên web một cách hiệu quả. Cập nhật thông tin rất quan trọng nhưng qúa thường xuyên là điều không cần thiết.


Xuất phát từ thực tế đó HTTP đưa ra kỹ thuật ‘if – Modified – Since’ giúp các user – agent xác định được thời điểm tài liệu thay đổi. Robot phát hiện điều này chỉ khi nó lưu lại các thông tin cũ nhưng sẽ tốn nhiều bộ nhớ & cần dữ liệu phức tạp.



Một trong những đặc tính phổ biến của robot là khả năng tiếp nhận các từ cần tìm trong khi vẫn thu thập dữ liệu. Tuy nhiên một số người cho rằng đặc tính này không đáng hoan nghênh bởi hai lý do :
Đầu tiên, các tác vụ tìm kiếm của người sử dụng cuối (end - user) góp phần đẩy server vào chỗ quá tải.
Thứ hai, không có cơ sở đảm bảo có mối quan hệ giữa các từ cần tìm, đúng chính tả và tối ưu đối với cơ sở dữ liệu. Ví dụ, nếu bộ tìm kiếm không hỗ trợ các toán tử boolean, một user cần dữ liệu về xe máy muốn có được thông tin đúng thay vì nhập vào cụm từ ‘Ford and garage’ phải nhập vào từ ‘car’. Nhưng người đó không hề ý thức được điều này.


Một khía cạnh nguy hiểm nữa bắt nguồn từ sự định hướng sai lầm của end – user. Một số người sử dụng công cụ của mình rất tốt như dự đoán được lượng tài liệu lớn nhất có thể có, biết chính xác nơi cần tìm dữ liệu, giới hạn thời gian sử dụng robot, trong khi đó một số khác lại lạm dụng khả năng của robot một cách vô tình hoặc cố ý. Vì vậy các tác giả viết robot đề nghị chỉ nên phân phát sản phẩm của mình cho những end-user ‘hiểu‘ được web robot và những khó khăn trong môi trường mạng.

Những tình huống không mong đợi – Bad implementations

Thay vì kiểm tra trên máy cục bộ trước, một số tác giả lần đầu tiên viết robot cho thử ngay trên các server thực sự, điều này làm đau đầu không ít nhà quản trị web (web master).

Truy xuất trùng lặp có thể xảy ra khi robot không lưu lại dấu vết những nơi nó đã đi qua hoặc nó không nhận diện được các URL mặc dù khác nhau về tên nhưng lại cùng dẫn đến một địa chỉ, ví dụ địa chỉ DSN & IP.


Đôi khi, robot lãng phí thời gian và tài nguyên chỉ để thu về những tài liệu mà sau đó phải vứt đi. Ví dụ hệ thống chỉ quan tâm đến file văn bản (text file) nhưng robot lại nhận cả những loại file khác như file hình ảnh, file thực thi, …


Trong môi trường mạng có những vùng gần như vô tận. Ví dụ, cứ mỗi lần phân tích một trang robot nhận về cùng một URL nhưng xa hơn một cấp, ‘/cgi-bin/pit/’, và tiếp tục ‘/cgi-bin/pit/a/’, ‘/cgi-bin/pit/a/a’, …. . Sự lặp lại không có điểm dừng này được gọi là các lỗ đen (black holes)
Tiêu chuẩn loại trừ robot


Trong quá trình xử lý robot không thể tự quyết định tài liệu nào được lập chỉ mục, tài liệu nào không do đó nó lấy tất cả những gì có thể. Thậm chí dù xác định được tài liệu vô ích thì nó cũng đã bỏ ra một chi phí đáng kể cho hoạt động thu thập. Tiêu chuẩn loại trừ robot ra đời. Các chuẩn này chẳng những chỉ ra URL nào cần tránh mà còn cảnh báo robot về các lỗ đen.
File robot.txt


Robot.txt là một file cấu trúc được đặt tại thư mục gốc của server, gồm 2 trường User-agent và Disallow.
User-agent : cho biết robot nào sẽ bị kiểm soát.
Disallow : cho biết robot có được phép kết nối vào URL này hay không.


Xét các ví dụ sau :
Bảng 1 : Ví dụ về chuẩn loại trừ robot dùng file robot.txt


Ví dụ

Ý nghĩa


# / robots.txt file for http://webcrawler.com/

Ký tự # bắt đầu một chú thích


User-agent: webcrawler

Disallow:

Robot có tên là webcrawler có thể đi đến bất cứ trang nào của site


User-agent: lycra

Disallow: /

Robot có tên là lycra bị cấm trên tất cả các trang của site


User-agent: *

Disallow: /tmp

Disallow: /logs

Mọi robot đều không được truy xuất vào 2 thư mục tmp và logs

Thẻ META dành cho robot – Robot META tag


META tag là sự mở rộng của chuẩn loại trừ robot, hỗ trợ cho tác giả của những trang web không có quyền admin.
Bảng 2 : Thông tin về META tag trong chuẩn loại trừ robot


Vị trí

Nằm trong phần HEAD của file HTML


Cú pháp


Tên trường

Ý nghĩa


Meta

Thẻ báo hiệu bắt đầu


Name

Tên robot sẽ bị kiểm soát


Content

Cờ định hướng cho robot, các cờ này có thể kết hợp với nhau & được phân cách bằng dấu phẩy.



Sau đây là bảng các giá trị Meta Tags thường được các Webmaster sử dụng :
Bảng 3 : Giá trị các cờ của thuộc tính Content trong META tag


Các cờ của thuộc tính Content

Ý nghĩa


[NO]INDEX

Robot không nên lập chỉ mục cho trang này.


[NO]FOLLOW

Robot không nên lấy các liên kết ở trang này


ALL = INDEX, FOLLOW

Robots lập chỉ mục và lấy các liên kết từ trang này.


NONE= NOINDEX, NOFOLLOW

Robots không lập chỉ mục và không lấy chỉ số từ trang này.

Nhược điểm của file robot.txt


Người ta cho rằng việc liệt kê các trang hoặc các thư mục trong file robot.txt sẽ là nguyên nhân thu hút sự chú ý từ các ‘vị khách không mời‘. Thực ra chuẩn loại trừ robots chỉ là dấu hiệu cảnh báo, không là biện pháp cấm robots cho nên việc tuân theo hay không hoàn toàn là vấn đề tự nguyện. Tuy nhiên ta vẫn có cách khắc phục :

Một là :
Tạo một thư mục chứa tất cả các file quan trọng.
Trường Disallow chỉ liệt kê tên thư mục vừa tạo.
Cấu hình server sao cho các trang không chứa đường dẫn đến thư mục này.


Đáng buồn trên thực tế cách này không đạt được kết quả mong đợi do một trong các nguyên nhân sau :
Các server có robot không bị cấm có thể dẫn đường các robot bị cấm khác đến những file này.
Các file quan trọng có thể nằm trong log file (file được tự do truy xuất)
Khi cấu hình lại server, admin có thể ‘quên‘ các thư mục này phải cấm robot!


…………………………………………

Hai là: chứng thực (athorization). Đây là biện pháp hữu hiệu, được sử dụng trong nhiều lĩnh vực, đặc biệt trong những môi trường mà sự an toàn dữ liệu trở nên rất cần thiết.

Tóm tắt :



Có thể nói web robot là con dao 2 lưỡi, sử dụng đúng sẽ giải quyết được nhiều vấn đề, sử dụng sai sẽ để lại những hậu quả khó đoán. Sau đây là tóm tắt cho những vấn đề cần lưu ý của web robot.


  1. Tránh lãng phí tài nguyên
  2. Chỉ tải về những tài liệu cần thiết.
  3. Nếu hệ thống chỉ quan tâm đến các file text (.html, .htm, .xml, …), web robot nên bỏ qua các liên kết dẫn đến những file thực thi (.exe, …), file ảnh (.gif, .bmp, …).
  4. Bỏ qua các trường dữ liệu hệ thống không dùng đến.
  5. Đừng lấy về các trang giống nhau nhiều hơn một lần.
  6. Tránh cập nhật lại các site cũ quá thường xuyên bằng cách :
  7. Ghi nhớ những địa chỉ web robot đã duyệt qua.
  8. Dựa vào trường LastModified, trường head. Nếu các trường này khác với dữ liệu ta đã có thì đó là những thông tin cần ghi nhận.
  9. Không nên duyệt hết một site, chỉ cần duyệt đến một độ sâu (deep link) cần thiết.
  10. Tránh làm quá tải server
  11. Duy trì một khoảng thời gian đợi giữa các lần truy xuất liên tiếp.
  12. Kết nối với server vào những thời điểm thích hợp. Tham khảo ý kiến của admin để biết thông tin này.
  13. Kiểm tra web robot trên máy cục bộ, sửa lỗi trươc khi chạy trên server thực sự.
  14. Tuân theo các luật loại trừ robot.

Không có nhận xét nào:

Đăng nhận xét