2 điểm bởi GN⁺ 2024-07-31 | 1 bình luận | Chia sẻ qua WhatsApp
  • Phía vận hành OpenStreetMap mỉa mai rằng thay vì gây tải bằng cách scraping lén lút, các công ty AI hãy quyên góp 10.000 USD, qua đó phơi bày chi phí truy cập dữ liệu và gánh nặng hạ tầng
  • Họ còn đề nghị rằng với khoản quyên góp 50.000 USD, có thể cung cấp cả cập nhật phát trực tiếp theo từng phút nhận trực tiếp từ OpenStreetMap.org
  • Lưu lượng scraping không phải ngoại lệ hiếm gặp, mà đã xảy ra ở mức hàng trăm yêu cầu mỗi giây vào các API endpoint đắt đỏ, từ nhiều IP và với User-Agent giả mạo
  • Đã có sẵn toàn bộ dữ liệu planet.osm, các phần thay đổi và dữ liệu theo từng châu lục, nên dùng dataset chính thức sẽ phù hợp hơn là cào web chậm chạp
  • Việc chặn rất khó do giả mạo User-Agent và thay đổi IP, nhưng chặn các crawler AI lớn cùng với giới hạn tốc độ (rate limit) khá rộng rãi có thể là biện pháp giảm thiệt hại thực tế

Đề xuất hãy quyên góp thay vì cào dữ liệu OpenStreetMap

  • Đã xuất hiện thông điệp kêu gọi các công ty AI đừng âm thầm scraping OpenStreetMap mà hãy quyên góp 10.000 USD
  • Đồng thời nói thêm rằng nếu quyên góp 50.000 USD thì có thể nhận cập nhật phát trực tiếp theo từng phút ngay từ OpenStreetMap.org
  • Trong phần bình luận, nhiều người liên tục nhắc lại rằng dữ liệu OpenStreetMap vốn đã được cung cấp theo những cách phù hợp hơn
    • Có toàn bộ dữ liệu planet.osm
    • Có cập nhật phần thay đổi
    • Cũng có dữ liệu theo từng châu lục
  • Nhiều phản hồi cho rằng cách cào trực tiếp từ website chậm và kém hiệu quả hơn so với bộ dữ liệu đầy đủ đã được cung cấp sẵn

Gánh nặng vận hành do lưu lượng scraping gây ra

  • Việc scraping OpenStreetMap không bị xem là “một kiểu kết hợp chưa từng thấy” mà là chuyện rất thường xuyên
    • Có trường hợp hàng trăm yêu cầu mỗi giây đổ vào các API endpoint đắt đỏ
    • Sử dụng nhiều IP
    • Giả mạo User-Agent
  • Chặn dựa trên User-Agent có những giới hạn rõ ràng
    • Dùng User-Agent mặc định của thư viện như python-requests/2.26.0
    • Có trường hợp ngụy trang thành trình duyệt hoặc googlebot
    • robots.txt bị đối xử như thể chỉ là tùy chọn
    • Bị chặn thì đổi IP hoặc User-Agent
  • Dù vậy, một số crawler AI vẫn có User-Agent riêng nên có thể phân biệt và chặn những bên gây hại lớn
    • Ví dụ được nhắc tới là Bytespyder
    • Mục đích không phải chặn mọi IP từng đào dữ liệu trong quá khứ, mà là ngăn những bên đang thực sự gây thiệt hại
    • Nếu đặt giới hạn tốc độ rất rộng rãi thì chỉ những lưu lượng đủ mức gây vấn đề mới bị hạn chế

1 bình luận

 
GN⁺ 2024-07-31
Ý kiến trên Hacker News
  • Các công ty bị ảnh hưởng ngày càng khó chịu với đội quân crawler AI. Những crawler này không tuân thủ các thông lệ scraping tốt như tôn trọng robots.txt, dùng API công khai, hay tránh giờ cao điểm
    Đây không chỉ là vấn đề bản quyền, mà chi phí hạ tầng cũng tăng lên vì lưu lượng scraping quá mức. Trạng thái cuối cùng sẽ là gì? AI giờ đã có thể vượt CAPTCHA, nên cuộc chạy đua vũ trang trong phòng thủ bot có vẻ như về cơ bản đã thua rồi

    • Mục tiêu không phải là khiến việc scraping trở nên bất khả thi, mà là khiến nó trở nên đắt đỏ. Con người không gửi yêu cầu nhanh như bot, nên ngay cả bot giả làm người cuối cùng cũng sẽ bị giới hạn tốc độ
      Rồi sẽ dẫn đến việc cần có tài khoản, các tài khoản đó bị theo dõi, và những tài khoản khớp với các mẫu nhất định sẽ bị xóa. Điều này không chặn được scraping, nhưng điểm cốt lõi không phải là chặn mà là làm cho nó chậm và tốn kém. Đến một thời điểm nào đó, nếu trả phí bản quyền hợp lý hơn là giả làm người thì cuộc chạy đua vũ trang cũng sẽ biến mất
      Câu hỏi liệu phòng thủ có thể đủ tốt để khiến người ta thấy không đáng đánh nhau nữa khó hơn nhiều so với câu hỏi liệu bot ngẫu nhiên có thể giả làm người và gửi vài yêu cầu hay không
    • Cuối cùng có lẽ sẽ đi đến điểm mà những thứ như truy cập API trở thành danh sách cho phép. Để xác minh không phải bot, có thể phải tạo ra quan hệ thực sự với người thật trong công ty thật
      Mọi cách khác đều có thể bị giả mạo, nên thậm chí có thể bao gồm cả gặp mặt trực tiếp. Rốt cuộc, điều này giống như quay lại thế giới kinh doanh kiểu thập niên 1960. Nhờ các kỹ sư đã rút tấm thảm dưới chân mọi người
    • Không rõ các công ty AI có đang nghĩ đến đích đến cuối cùng hay không. Về phía con người, có vẻ chúng ta sẽ có một Internet kiểu rừng tối
      Giờ đây người ta không còn mặc định rằng phần lớn là tốt và chỉ cần truy lùng chặn phần độc hại. Thay vào đó, người ta sẽ giả định chỉ những phần được nhóm đồng nghiệp mà mình tin tưởng phê chuẩn một cách rõ ràng mới là tốt, còn lại đều là độc hại. Nếu bị tổn hại vì niềm tin đó, ta sẽ cắt bỏ mối quan hệ tin cậy ấy và tìm cách khiến kiểu vệ sinh niềm tin này vận hành được
      So với Internet hiện tại, suy nghĩ đầu tiên là “cái đó sẽ không thể mở rộng đến quy mô toàn cầu”. Nhưng thực ra cũng không cần như vậy. Những vấn đề mà máy tính phải giải quyết vốn dĩ đều là các vấn đề cục bộ
    • Câu trả lời là tương tác dựa trên API có xác thực
      Trước đây, website vốn đã có một API nội bộ riêng để tự do phân phối nội dung cho bất kỳ ai gửi yêu cầu. Giờ đây website nên trở thành giao diện đơn giản cho người dùng, giao tiếp với các API bên ngoài để hiển thị nội dung, và quyền truy cập API phải là trách nhiệm của người dùng
      Thông tin đáng để lấy phải được khóa sau xác thực. Nhờ OAuth qua các nhà cung cấp lớn, việc xác thực đã trở nên cực kỳ dễ dàng
      Những ai định trả tiền cho con người hoặc dịch vụ trả phí để trích xuất nội dung thì đúng ra nên dùng một API được đóng gói tử tế và có mức giá hợp lý
      Cuối cùng, robots.txt cần phải được cưỡng chế bằng luật. Không có khác biệt gì giữa việc ăn cắp hàng trong cửa hàng và ăn cắp nội dung từ website
      AI và lòng tham đã giết chết sự tự do cởi mở của Internet
    • Có lẽ sẽ xuất hiện những hòn đảo xác thực chỉ dành cho người được mời dựa trên niềm tin. Trông giống như kết cục mà sự tập trung hóa vô tội vạ của Internet tất yếu dẫn đến
  • Tôi là chủ tịch OpenStreetMap Foundation
    Dữ liệu OpenStreetMap được cung cấp miễn phí với số lượng lớn tại https://planet.openstreetmap.org. Chúng tôi khuyến nghị dùng nguồn đó thay vì scrape website
    Việc scraping tạo gánh nặng lớn lên các tài nguyên được tài trợ bằng quyên góp. Chúng tôi có chặn các IP scraping, nhưng ngay cả việc đó cũng tốn công và thời gian
    Nếu bạn tôn trọng thời gian và tài nguyên của chúng tôi, điều đó sẽ giúp duy trì dịch vụ miễn phí và dễ tiếp cận cho mọi người

    • Tôi tò mò không biết chính xác họ chặn các IP scraping như thế nào. Có vẻ một số scraper đơn giản là bối rối và không biết có cách tốt hơn để lấy dữ liệu OSM
      Nếu phản hồi bằng mã lỗi 403 thì họ chỉ đổi địa chỉ IP mà thôi
      Cách tiếp cận hiệu quả hơn có thể là trả về phản hồi kèm hướng dẫn đến nơi tải xuống dữ liệu hàng loạt hoặc liên kết tới hướng dẫn xử lý dump OSM
  • Một instance OpenStreetMap theo đúng nghĩa đen có thể tự dựng trong 10 phút. Chỉ cần một lệnh docker run đơn giản
    Tất nhiên việc lập chỉ mục sẽ mất chút thời gian, nhưng xét theo tài nguyên của họ thì cũng không thể mất lâu. Đây đơn giản là lòng tham vô lý

    • Trước đây vì tò mò tôi đã thử Headway trong thời gian rất ngắn. Đây là một trong những lựa chọn dựa trên Docker dễ nhất cho “toàn bộ stack”
      Nhưng nó không chạy ngay được và có vấn đề phát sinh. Có quá nhiều bộ phận chuyển động nên cũng chẳng lạ. Cách vòng qua có thể không phải chuyện lớn, nhưng nói rằng có thể làm cho mọi thứ chạy ổn định chỉ trong 10 phút thì rất đáng nghi
    • Không, khá là đau đầu đấy
    • Cần có liên kết. Lần cuối tôi thử thì phức tạp hơn thế nhiều
  • Đã từng cần dữ liệu OSM, nhưng rốt cuộc không tìm ra đúng cách để dùng
    Để lấy được dữ liệu cần thiết, phải tải về một tệp khổng lồ 100GB ở định dạng mơ hồ và dùng các thư viện xa lạ. Thông tin thì phân tán, cũng có HTTP API nhưng либо bị hạn chế, либо bị giới hạn tốc độ, và cũng không rõ dùng như vậy có được phép hay không
    Tôi hiểu là do mình thiếu hiểu biết, và tôi biết ơn vì dự án này tồn tại, nhưng nếu xét theo tiêu chuẩn thời nay khi lập trình viên mong đợi một API mượt mà thì trải nghiệm sử dụng không tốt
    Cuối cùng tôi đã dùng một dự án miễn phí cung cấp dữ liệu OSM đã được chuyển đổi sẵn sang đúng dạng mình cần

    • Ở mức độ nào đó thì đó là thiết kế có chủ đích. Để cung cấp một API mượt mà thì cần một mô hình tài chính đủ để thuê nhân sự vận hành lưu trữ và duy trì API đó
      OSM Foundation chủ ý giữ quy mô nhỏ và không làm việc đó. Thay vào đó, họ khuyến khích một hệ sinh thái phi tập trung nơi bất kỳ ai cũng có thể lấy dữ liệu và xây dịch vụ trên đó. Có dịch vụ thương mại lẫn sở thích cá nhân, có trả phí lẫn miễn phí
      Cách này hoạt động rất tốt, và cá nhân tôi thấy nó tốt hơn cách tiếp cận tối đa hóa dựa trên ngân sách lớn của Wikimedia Foundation
    • Nếu đang nói đến bản dump dữ liệu định dạng protobuf tương đối gần đây, thì đây là một định dạng nhị phân được tối ưu hóa rất cao
      OrganicMaps dùng trực tiếp các tệp này để lưu và tra cứu cả một quốc gia ngay trên máy cục bộ. Ở định dạng này, tại thời điểm viết, bản dump của Pháp chỉ có 4.3GB
      Ngoài ra, thay vì tải toàn bộ bản đồ, bạn có thể dùng một trong rất nhiều mirror như Geofabrik để chỉ lấy phần mình quan tâm
      [0] https://download.geofabrik.de/
    • Tôi tò mò không biết có thể đề xuất định dạng hay thư viện nào bớt xa lạ hơn cho dữ liệu địa lý ở quy mô hành tinh hay không
      Trước đây tôi cũng từng tải planet.osm về và có lẽ đã parse nó bằng osmosis trên máy desktop. Tôi chưa từng dùng định dạng hay công cụ đó ở nơi nào khác, nhưng cũng không có nhiều đối thủ cung cấp lượng dữ liệu địa không gian lớn để dùng tự do như OSM. Tôi muốn biết trong những trường hợp như vậy thì cái gì được xem là cách làm đã thành thông lệ
    • Chỉ cần vào https://www.openstreetmap.org/ và nhấn “Export” ở góc trên bên trái. Bạn có thể chọn một vùng hình chữ nhật nhỏ, rồi nhấn “Manually select a different area”
      Bạn có thể tải tệp .osm trực tiếp ngay trong trình duyệt
      Nếu đúng là chỉ cần một điểm duy nhất, thì trong các biểu tượng bản đồ bên phải có mục “Query features”, là mũi tên có dấu hỏi. Dùng nó để bấm vào từng đối tượng địa lý riêng lẻ và lấy dữ liệu
    • Việc dùng một dự án miễn phí cung cấp dữ liệu OSM đã được chuyển đổi sẵn sang đúng định dạng cần thiết có vẻ đã đủ gần với “đúng cách” rồi
      Các nhà phát triển cốt lõi của OSM có thể tập trung để frontend OSM hiện có cung cấp dữ liệu ở định dạng tối ưu. Nếu bạn cần dữ liệu được chuyển sang các định dạng phổ biến khác, thì việc hệ sinh thái đã có những dự án làm điều đó miễn phí là một điều tốt
  • Tôi là tác giả bài gốc. Bài toot đó là phản ứng mỉa mai tôi đăng sau khi áp dụng giới hạn tốc độ và chặn một nhóm trình scraper độc hại khác đang liên tục đánh mạnh vào website và map API. robots.txt đã bị phớt lờ
    Dữ liệu OpenStreetMap có thể được tải xuống miễn phí. Chúng tôi công bố nó theo từng phút tại https://planet.openstreetmap.org/, đồng thời cũng cung cấp dữ liệu qua AWS S3 và torrent
    Nếu bạn mới bắt đầu, tốt hơn nên bắt đầu từ các bản trích xuất khu vực nhỏ hơn: https://wiki.openstreetmap.org/wiki/Planet.osm

  • Chỉ cần sao chép kho lưu trữ nén của tôi thì xong trong vài giây, nhưng các AI scraper lại thích gửi yêu cầu cho từng revision của mọi tệp .c thông qua giao diện web
    Chúng tải về cả những tính năng trang trí vô dụng với chúng
    Tôi cấu hình giao diện web đó bằng cgi, nên việc scrape sẽ mất còn lâu hơn tuổi của vũ trụ mới xong. Nhưng trong thời gian đó, chúng vẫn lãng phí điện và tài nguyên của tôi

  • Như ai đó gần đây đã chỉ ra, Aaron Swartz từng bị đe dọa có thể phải vào tù vì scraping. Trong khi giờ đây, hàng trăm tỷ đô la đang được đầu tư vào các mô hình ngôn ngữ lớn AI được tạo ra bằng scraping

    • Vì các tập đoàn lớn có thể scrape bạn, còn bạn thì không thể scrape các tập đoàn lớn
    • Sao phải kéo đến cả mô hình ngôn ngữ lớn AI? Scrape và lập chỉ mục là toàn bộ những gì Google Search làm
    • Luật lệ là dành cho người khác, còn với tôi là ngoại lệ. Lúc nào cũng vậy
    • Aaron không có đội quân luật sư như các tập đoàn lớn
      Anh ấy lấy các bài báo khoa học và công khai chúng, đó rõ ràng là vi phạm bản quyền
      Còn mô hình ngôn ngữ lớn thì không sao chép nguyên văn tác phẩm gốc, nên vẫn nằm trong vùng xám về việc có phải tác phẩm phái sinh hay không
      Phán quyết của các thẩm phán cũng không thống nhất
    • Chẳng phải anh ấy đã scrape tài liệu nằm sau tường phí sao?
  • Cứ đưa planet.osm lên torrent là được. Chỉ cho phép “scraping” thông qua torrent thôi
    Như vậy các scraper sẽ phải tự chia nhau gánh tải mạng. Có lẽ tất cả đều nằm trên cùng một instance AWS, nên tốc độ mạng còn có thể tốt hơn

    • Dữ liệu của chúng tôi đã được phát hành qua torrent rồi: https://planet.openstreetmap.org
      Dữ liệu, bao gồm cả các bản cập nhật theo từng phút, cũng được cung cấp qua các public S3 bucket (EU và US) do AWS Open Data Sponsorship Program hỗ trợ
  • Trước đây trong một buổi phỏng vấn kỹ thuật, người phỏng vấn bảo tôi thiết kế một hệ thống scrape Wikipedia tiếng Anh hằng ngày. Tôi nói, “Ta sẽ bắt đầu bằng cách tải archive nén bằng gzip”
    Hóa ra người phỏng vấn không biết có thể làm thế, và lại mong đợi một lời giải thích về một hệ thống phức tạp tải từng trang một, có multithreading, URL chuẩn hóa, kiểm tra trang đã ghé thăm, retry, v.v.
    Dù vậy, họ vẫn cho tôi điểm A cho bài đó, và cuối cùng tôi cũng được nhận vào công ty ấy

  • Một honeypot cho các công ty AI thì sao? Tạo ra một vòng lặp vô hạn của nội dung được sinh ra một cách ngớ ngẩn
    Hãy tưởng tượng các bài đăng Twitter với những tweet nhân tạo gắn ở cuối

    • Rồi đột nhiên OpenStreetMap sẽ không còn open đến thế nữa. Giống OpenAI vậy, ha ha