Các công ty AI, thay vì âm thầm cào OpenStreetMap, quyên góp 10.000 USD thì sao?
(en.osm.town/@Firefishy)- 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
- Có toàn bộ dữ liệu
- 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.txtbị đối xử như thể chỉ là tùy chọn- Bị chặn thì đổi IP hoặc User-Agent
- Dùng User-Agent mặc định của thư viện như
- 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
Ý 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
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
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
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ộ
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.txtcầ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ừ websiteAI và lòng tham đã giết chết sự tự do cởi mở của Internet
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
Nếu phản hồi bằng mã lỗi
403thì họ chỉ đổi địa chỉ IP mà thôiCá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ảnTấ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ý
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
Đã 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
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
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/
Trước đây tôi cũng từng tải
planet.osmvề và có lẽ đã parse nó bằngosmosistrê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ệBạn có thể tải tệp
.osmtrực tiếp ngay trong trình duyệtNế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
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
.cthông qua giao diện webChú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ôiNhư 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
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
Cứ đưa
planet.osmlên torrent là được. Chỉ cho phép “scraping” thông qua torrent thôiNhư 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, 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