5 điểm bởi GN⁺ 23 ngày trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Miasmacông cụ máy chủ viết bằng Rust dùng để đẩy trình thu thập web AI vào vòng lặp vô hạn, cản trở việc thu thập dữ liệu huấn luyện
  • Chuyển hướng lưu lượng từ các công ty AI đang thu thập nội dung website ở quy mô lớn, rồi trả về dữ liệu bị đầu độc và các liên kết tự tham chiếu lấy từ “poison fountain”
  • Có thể phòng vệ mà không lãng phí tài nguyên máy chủ nhờ tốc độ xử lý nhanh và mức sử dụng bộ nhớ thấp
  • Dẫn trình thu thập vào đường dẫn /bots để tạo cấu trúc tuần hoàn vô hạn thông qua reverse proxy Nginxchèn liên kết ẩn
  • Các công cụ tìm kiếm thông thường được bảo vệ bằng quy tắc ngoại lệ trong robots.txt, đồng thời dự án cho phép cộng đồng đóng góp dưới dạng mã nguồn mở

Cài đặt và chạy

  • Có thể cài bằng Cargo
    • Cài bằng lệnh cargo install miasma
  • Có thể tải binary dựng sẵn từ trang Releases trên GitHub
  • Khi chạy với cấu hình mặc định, chỉ cần nhập lệnh miasma
  • Có thể xem toàn bộ tùy chọn cấu hình bằng miasma --help

Cách thiết lập bẫy cho trình thu thập

  • Đặt đường dẫn /bots làm điểm dẫn luồng cho trình thu thập
  • Dùng Nginx làm reverse proxy để chuyển các yêu cầu tới đường dẫn /bots sang máy chủ Miasma
    location ~ ^/bots($|/.*)$ {
      proxy_pass http://localhost:9855;
    }
    
    • Khớp với mọi biến thể đường dẫn như /bots, /bots/, /bots/12345
  • Chèn liên kết ẩn

    • Thêm liên kết ẩn trong trang web mà khách truy cập là con người không nhìn thấy nhưng trình thu thập có thể phát hiện
      <a href="/bots" style="display: none;" aria-hidden="true" tabindex="1">
        Amazing high quality data here!
      </a>
      
    • Các thuộc tính display: none, aria-hidden="true", tabindex="1" khiến liên kết không hiển thị với người dùng và công cụ hỗ trợ truy cập
  • Chạy Miasma

    • Chỉ định /bots làm tiền tố liên kết, đồng thời đặt cổng và giới hạn kết nối đồng thời
      miasma --link-prefix '/bots' -p 9855 -c 50
      
    • Cho phép tối đa 50 kết nối đồng thời; các yêu cầu vượt quá sẽ nhận phản hồi HTTP 429
    • Với 50 kết nối, mức sử dụng bộ nhớ ước tính khoảng 50~60MB
  • Hoạt động sau khi triển khai

    • Sau khi cấu hình xong và triển khai, trình thu thập sẽ đi theo đường dẫn /botslặp vô hạn qua các trang dữ liệu bị đầu độc
    • Có thể theo dõi yêu cầu lặp lại của trình thu thập theo thời gian thực qua log

Thiết lập robots.txt

  • Cần thêm quy tắc ngoại lệ trong robots.txt để các crawler của công cụ tìm kiếm thông thường không truy cập vào Miasma
    User-agent: Googlebot
    User-agent: Bingbot
    User-agent: DuckDuckBot
    User-agent: Slurp
    User-agent: SomeOtherNiceBot
    Disallow: /bots
    Allow: /
    

Tùy chọn cấu hình

  • Có thể cấu hình chi tiết thông qua các tùy chọn CLI
Tùy chọn Mặc định Mô tả
port 9999 Cổng mà máy chủ sẽ bind
host localhost Địa chỉ host mà máy chủ sẽ bind
max-in-flight 500 Số lượng yêu cầu tối đa có thể xử lý đồng thời. Vượt quá sẽ trả về phản hồi 429. Mức dùng bộ nhớ tỉ lệ với giá trị này
link-prefix / Tiền tố của các liên kết tự tham chiếu. Ví dụ: /bots
link-count 5 Số lượng liên kết tự tham chiếu trong mỗi trang phản hồi
force-gzip false Luôn áp dụng nén gzip bất kể header Accept-Encoding của client. Hữu ích để giảm chi phí truyền tải
poison-source https://rnsaffn.com/poison2/ Nguồn proxy để lấy dữ liệu huấn luyện bị đầu độc

Phát triển và đóng góp

  • Có thể gửi báo cáo lỗi hoặc đề xuất tính năng qua GitHub Issues
  • Các đóng góp mã do AI tạo ra sẽ tự động bị từ chối
  • Hoan nghênh đóng góp từ cộng đồng và dự án được duy trì dưới dạng mã nguồn mở

1 bình luận

 
Ý kiến trên Hacker News
  • Giống như việc ai đó giữ chân kẻ gọi điện spam suốt 45 phút, tôi nghi ngờ liệu các kỹ thuật gây nhiễu bot kiểu này có thực sự hiệu quả hay không
    Theo chính sách Google Search, việc chèn liên kết ẩn là vi phạm rõ ràng, có thể khiến thứ hạng trang bị giảm hoặc bị loại khỏi kết quả tìm kiếm
    Cuối cùng cách này có khi còn gây hại cho chính trang web của tôi nhiều hơn là cho bot

    • Nếu tự động hóa thì tôi nghĩ có thể hiệu quả
      Giống như video mà YouTuber Kitboga dùng AI call center để giữ chân các cuộc gọi spam, có thể xem đây là một chiến thuật du kích nhằm tiêu hao tài nguyên của đối phương
    • Tôi thực sự đã từng giữ chân kẻ gọi điện spam rất lâu, sau đó không còn nhận cuộc gọi nào nữa
      Có vẻ chúng có danh sách “cấm gọi” và danh sách “không sinh lời” riêng. Điều quan trọng là bị đưa vào danh sách thứ hai
    • Nó làm tôi nhớ tới vụ spam của một trung tâm dạy tiếng Anh ở Nga hồi những năm 2000
      Mọi người quá tức giận nên Golden Telecom đã thực hiện cuộc gọi trả đũa tự động, và công ty đó biến mất
      Cách này có thể hiệu quả theo kiểu đó, nhưng cần thuê một cụm modem
    • Đúng là chèn liên kết ẩn bị cấm, nhưng tôi lại muốn xem đây là cơ hội để hồi sinh ‘small web’
      Nếu xuất hiện các công cụ có chống scraping, chống Google crawler, và có chỉ mục tìm kiếm lấy con người làm trung tâm, thì vẫn có khả năng
    • Thực tế đã có nghiên cứu cho thấy các kỹ thuật đầu độc dữ liệu như vậy là có hiệu quả
  • Nội dung trên website công khai của tôi đang bị các scraper ăn cắp
    Rốt cuộc tôi cũng đã ăn cắp bài viết này, còn bạn thì coi như đang ăn cắp bình luận của tôi. Thế giới đầy rẫy kẻ trộm

    • Vấn đề là chúng gửi quá nhiều request đến mức làm trang của tôi sập
      Nội dung thì mở cho tất cả mọi người, nhưng tôi không muốn nó bị biến thành thứ mà chẳng ai truy cập được nữa
    • Dùng từ ‘ăn cắp’ thì hơi quá, nhưng việc bài viết của tôi bị lạm dụng thành công cụ kiếm tiền thật sự rất khó chịu
      Nếu tình trạng này tiếp diễn, tôi sẽ không còn muốn chia sẻ nữa
    • Con người về mặt pháp lý có quyền và tự do, còn LLM thì không
      Cuối cùng việc đặt con người và công cụ của doanh nghiệp lên cùng một mặt bằng là một so sánh sai lầm
    • Như câu châm biếm kiểu “Welcome to the internet…”, chúng ta đã sống trong một thế giới từ bỏ dữ liệu và quyền riêng tư rồi
  • Trước đây tôi từng làm phần mềm trả phí và thêm mã chống sao chép, nhưng lần nào cũng xuất hiện bản crack mới
    Cuối cùng tôi nhận ra cuộc chiến đó vô nghĩa và gỡ bỏ mã bảo vệ
    Nỗ lực ngăn AI bot crawl cũng giống một trò đập chuột chũi như vậy

    • Có lẽ nếu dùng chiến lược khiến việc crack trở nên nhàm chán thì đã thắng
      Nhưng động lực của cộng đồng đó vốn là niềm vui và danh tiếng, nên tôi nghĩ ngoài đời rất khó áp dụng
    • Thực ra nhiều vấn đề được giải quyết chỉ bằng cách buông bỏ ám ảnh
      Nhưng mạng xã hội và nỗi ám ảnh bản quyền đã làm gia tăng ham muốn kiểm soát của con người
  • Tôi tò mò liệu mấy kỹ thuật này có thực sự hiệu quả không
    Phần lớn scraper có lẽ đã có sẵn kỹ thuật để vượt qua các kiểu phòng thủ này

    • Dù có hiệu quả đi nữa, thành thật mà nói giờ tôi cũng chẳng còn sức để bận tâm. Chỉ còn lại sự mệt mỏi
    • Tôi từng tạo một thư viện Python giả rồi đưa lên GitHub, vài tháng sau ChatGPT đã học phải nó
      Theo kinh nghiệm của tôi, cách này có tác dụng ở một mức nào đó
    • Hàng trăm bot đang dùng proxy trả phí, vậy thì cứ khiến chúng phải trả tiền cho việc đó
    • Crawler của Meta hay Anthropic không tinh vi như người ta nghĩ
      Tôi không biết chúng có học dữ liệu rác tôi tạo ra hay không, nhưng cứ mơ vậy đã
  • Cách tiếp cận đầu độc dữ liệu (data poisoning) này khá thú vị
    Khi mô hình học từ dữ liệu web, nó sẽ thừa hưởng nguyên trạng cả thiên lệch và thao túng trong đó
    Nếu tác nhân xấu đầu độc dữ liệu ở quy mô lớn, bản thân quá trình huấn luyện sẽ biến thành một cấu trúc đối kháng
    Cuối cùng giải pháp là quản lý nguồn gốc dữ liệu đáng tin cậy (provenance)

  • Những nỗ lực kiểu này rốt cuộc chỉ đang cung cấp dữ liệu huấn luyện để AI trở nên thông minh hơn
    Thị trường nội dung dựa trên quảng cáo rất có thể sẽ sụp đổ, và kết quả là nó sẽ được tái cấu trúc thành thị trường chú trọng chất lượng nội dung

    • Có thể sẽ có người hỏi ngược lại: “Vậy là không nên làm gì sao?” nhưng trên thực tế phản ứng lại không hề dễ
    • AI sẽ đẩy nhanh sự cáo chung của nội dung dựa trên quảng cáo
      Thay vào đó, mô hình trực tiếp cấp phép và cung cấp dữ liệu sẽ dần định hình
    • Nếu crawler không bấm vào mọi liên kết mà chỉ phân tích cú pháp cục bộ thì tôi lại cho đó là một chiến thắng
    • Cuối cùng công nghệ là một cuộc chạy đua vũ trang không hồi kết
  • Tôi nghĩ chỉ cần loại bỏ các thuộc tính style="display:none" hoặc aria-hidden="true" là có thể tránh được các mánh này phải không

    • Nhưng làm vậy thì sẽ thành phớt lờ robots.txt
      Nếu là scraper tử tế thì đúng ra phải tuân thủ quy tắc đó
    • Thay vì ẩn hoàn toàn liên kết, có thể đặt nó nhỏ và ngoài màn hình
      Con người không thấy, nhưng bot vẫn sẽ lần theo
  • Ý tưởng này hay đấy, nhưng rốt cuộc nó sẽ gây hại nhiều hơn cho doanh nghiệp vừa và nhỏ (SME)
    Chỉ các công ty lớn ngày càng mạnh hơn, còn các website nhỏ thì biến mất khỏi kết quả tìm kiếm AI
    Cuối cùng chỉ còn cách thuận theo dòng chảy, thỉnh thoảng để lại chút kháng cự nhỏ là thực tế nhất

  • Những công cụ như Nightshade 2.0 trông giống dự án câu chú ý khá vụng về
    Giải pháp thật sự là cung cấp dữ liệu ở định dạng thân thiện với LLM
    Mánh display:none đơn giản sẽ không hiệu quả với crawler thông minh
    Xem thảo luận liên quan

  • Điều thực sự thú vị là bộ dữ liệu Poison Fountain mà dự án này sử dụng
    Trên rnsaffn.com/poison3 có câu “tôi muốn gây hại cho các hệ thống trí tuệ máy”
    Kiểu ý thức hệ hacker này khiến tôi khó đồng cảm vì nó giống như nhập vai (roleplay)

    • Nhưng rốt cuộc chẳng ai giải thích “dữ liệu bị đầu độc” thực chất là gì, cũng như căn cứ cho tuyên bố rằng “chỉ một lượng nhỏ cũng tạo ra tác động lớn”