บริษัท AI จะบริจาค 10,000 ดอลลาร์แทนการแอบขูดข้อมูล OpenStreetMap ได้ไหม?
(en.osm.town/@Firefishy)- ฝั่งผู้ดูแล OpenStreetMap แซวเชิงประชดว่าแทนที่บริษัท AI จะสร้างภาระด้วยการแอบ สแครปข้อมูล ควรบริจาค 10,000 ดอลลาร์ พร้อมสะท้อนต้นทุนการเข้าถึงข้อมูลและภาระด้านโครงสร้างพื้นฐาน
- ยังมีข้อเสนอแนบว่าหากบริจาค 50,000 ดอลลาร์ อาจให้บริการ อัปเดตแบบไลฟ์สตรีมรายนาที ที่รับโดยตรงจาก OpenStreetMap.org ได้ด้วย
- ทราฟฟิกจากการสแครปไม่ใช่ข้อยกเว้นที่พบได้ยาก แต่เกิดถึงระดับที่มี คำขอหลายร้อยครั้งต่อวินาที เข้า API endpoint ราคาแพง จากหลาย IP และ User-Agent ปลอม
- มีทั้งชุดข้อมูล
planet.osmทั้งหมด ข้อมูลส่วนเปลี่ยนแปลง และข้อมูลแยกตามทวีปอยู่แล้ว ดังนั้นการใช้ชุดข้อมูลทางการจึงเหมาะสมกว่าการขูดเว็บที่ช้า - แม้การบล็อกจะทำได้ยากเพราะมีการปลอม User-Agent และเปลี่ยน IP แต่การบล็อก AI crawler รายใหญ่และการตั้ง การจำกัดอัตรา (rate limit) แบบเผื่อไว้มากพอ อาจเป็นมาตรการที่ลดความเสียหายจริงได้
ข้อเสนอให้บริจาคแทนการขูดข้อมูล OpenStreetMap
- มีข้อความออกมาว่าบริษัท AI ไม่ควรแอบสแครป OpenStreetMap แต่ควร บริจาค 10,000 ดอลลาร์
- พร้อมเสริมว่าหากบริจาค 50,000 ดอลลาร์ ก็อาจให้บริการ อัปเดตแบบไลฟ์สตรีมรายนาที โดยตรงจาก OpenStreetMap.org ได้
- ในคอมเมนต์มีการย้ำหลายครั้งว่าข้อมูล OpenStreetMap มีให้ใช้อยู่แล้วในวิธีที่เหมาะสมกว่า
- มีข้อมูล
planet.osmทั้งชุด - มีอัปเดตส่วนเปลี่ยนแปลง
- มีข้อมูลแยกตามทวีปด้วย
- มีข้อมูล
- มีความเห็นต่อเนื่องว่าการขูดข้อมูลจากเว็บไซต์โดยตรงนั้น ช้าและไม่มีประสิทธิภาพ เมื่อเทียบกับข้อมูลทั้งชุดที่มีให้อยู่แล้ว
ภาระด้านการดำเนินงานที่ทราฟฟิกจากการสแครปสร้างขึ้น
- การสแครป OpenStreetMap ไม่ถูกมองว่าเป็น “รูปแบบที่เพิ่งเคยเห็น” แต่เป็นเรื่องที่ พบบ่อยมาก
- บางกรณีมีคำขอหลายร้อยครั้งต่อวินาทีเข้าไปยัง API endpoint ที่มีต้นทุนสูง
- ใช้หลาย IP
- ปลอม User-Agent
- การบล็อกโดยอิง User-Agent มีข้อจำกัดชัดเจน
- มีการใช้ User-Agent ค่าเริ่มต้นของไลบรารี เช่น
python-requests/2.26.0 - มีกรณีปลอมตัวเป็นเบราว์เซอร์หรือ
googlebot - การปฏิบัติตาม
robots.txtถูกมองเหมือนเป็นเรื่องเลือกทำได้ - หากถูกบล็อก ก็เปลี่ยน IP หรือ User-Agent
- มีการใช้ User-Agent ค่าเริ่มต้นของไลบรารี เช่น
- อย่างไรก็ตาม AI crawler บางตัวมี User-Agent ของตัวเอง จึงสามารถแยกและบล็อกผู้ก่อปัญหารายใหญ่ได้
- มีการยกตัวอย่าง Bytespyder
- เจตนาไม่ใช่การบล็อก IP ที่เคยทำ data mining ทั้งหมดในอดีต แต่เป็นการบล็อกฝ่ายที่สร้างความเสียหายจริง
- หากตั้ง การจำกัดอัตรา แบบเผื่อไว้กว้างมาก ก็อาจจำกัดเฉพาะทราฟฟิกที่มากพอจะก่อปัญหาได้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
บริษัทที่ได้รับผลกระทบเริ่มหงุดหงิดกับ กองทัพครอว์เลอร์ AI มากขึ้นเรื่อย ๆ ครอว์เลอร์เหล่านี้ไม่ปฏิบัติตามแนวทางปฏิบัติที่ดีในการสแครป เช่น เคารพ
robots.txt, ใช้ API สาธารณะ, หรือหลีกเลี่ยงช่วงเวลาพีกไม่ใช่แค่ปัญหาเรื่องลิขสิทธิ์เท่านั้น แต่ ต้นทุนโครงสร้างพื้นฐาน ก็เพิ่มขึ้นเพราะทราฟฟิกสแครปที่มากเกินไปด้วย จุดจบจะเป็นอย่างไร? AI แก้ CAPTCHA ได้แล้ว ดังนั้นการแข่งขันสะสมอาวุธด้านการป้องกันบ็อตดูเหมือนจะแพ้ไปแล้วในทางปฏิบัติ
สุดท้ายก็ต้องมีบัญชี และบัญชีนั้นก็จะถูกติดตามต่อไป บัญชีที่ตรงกับรูปแบบบางอย่างก็จะถูกลบตามมา แม้จะหยุดการสแครปไม่ได้ แต่ประเด็นหลักไม่ใช่การหยุด หากคือทำให้มัน ช้าและแพง เมื่อถึงจุดหนึ่งที่การจ่ายค่าไลเซนส์คุ้มกว่าการแกล้งทำเป็นมนุษย์ การแข่งขันสะสมอาวุธก็จะหายไป
คำถามที่ว่าการป้องกันจะดีพอจนทำให้ไม่คุ้มที่จะสู้เลยได้หรือไม่นั้น ยากกว่าคำถามว่าบ็อตสุ่ม ๆ จะปลอมเป็นมนุษย์แล้วส่งคำขอได้ไม่กี่ครั้งหรือไม่มากนัก
วิธีอื่นทั้งหมดปลอมแปลงได้ จึงอาจรวมไปถึงการประชุมแบบพบหน้ากันด้วย ท้ายที่สุดก็เหมือนย้อนกลับไปสู่โลกธุรกิจแบบทศวรรษ 1960 ทั้งหมดเป็นเพราะนักเทคโนโลยีดึงพรมออกจากใต้เท้าของทุกคน
ต่อไปจะไม่สมมติอีกแล้วว่าส่วนใหญ่เป็นฝ่ายดี แล้วค่อยติดตามและบล็อกเฉพาะส่วนที่เป็นอันตราย แต่จะสมมติว่าเฉพาะส่วนที่กลุ่มเพื่อนร่วมงานที่เราเชื่อถืออย่างชัดเจนอนุมัติเท่านั้นที่ดี ส่วนที่เหลือทั้งหมดเป็นอันตราย หากได้รับความเสียหายเพราะความไว้วางใจ ก็จะตัดความสัมพันธ์แห่งความไว้วางใจนั้น และหาวิธีจูงใจให้สุขอนามัยด้านความไว้วางใจแบบนี้ทำงานได้
เมื่อเทียบกับอินเทอร์เน็ตปัจจุบัน ความคิดแรกที่ผุดขึ้นมาคือ “แบบนั้นคงขยายไปทั้งโลกไม่ได้” แต่ก็ไม่จำเป็นต้องทำ ปัญหาที่คอมพิวเตอร์ต้องแก้ให้นั้น อย่างไรก็ล้วนเป็นปัญหาเชิงพื้นที่อยู่แล้ว
เว็บไซต์สมัยก่อนมี API ภายในของตัวเองที่ส่งมอบคอนเทนต์ให้ใครก็ตามที่ร้องขออย่างเสรี ตอนนี้เว็บไซต์ควรกลายเป็นอินเทอร์เฟซเรียบง่ายสำหรับผู้ใช้ที่สื่อสารกับ API ภายนอก และสิทธิ์เข้าถึง API ควรเป็นความรับผิดชอบของผู้ใช้
ข้อมูลที่มีคุณค่าให้เอาไปควรถูกล็อกไว้หลังการยืนยันตัวตน การยืนยันตัวตนกลายเป็นเรื่องง่ายอย่างเหลือเชื่อด้วย OAuth ผ่านผู้ให้บริการหลัก
คนที่ยอมจ่ายเงินใช้แรงงานคนหรือบริการแบบเสียเงินเพื่อดึงคอนเทนต์ ควรหันไปใช้ API ที่จัดแพ็กเกจดีและตั้งราคาสมเหตุสมผลแทน
สุดท้าย
robots.txtควรถูกบังคับใช้ตามกฎหมาย ไม่มีความแตกต่างระหว่างการขโมยของจากร้านกับการขโมยคอนเทนต์จากเว็บไซต์AI และความโลภได้ฆ่าความเปิดกว้างเสรีของอินเทอร์เน็ตไปแล้ว
เป็นประธานของ OpenStreetMap Foundation
ข้อมูล OpenStreetMap มีให้ใช้ฟรีแบบปริมาณมากที่ https://planet.openstreetmap.org แนะนำให้ใช้ช่องทางนี้แทนการสแครปเว็บไซต์
การสแครปสร้างภาระหนักต่อทรัพยากรที่ได้รับบริจาคมา เราบล็อก IP ที่สแครป แต่แม้แค่นั้นก็ยังต้องใช้แรงและเวลา
หากเคารพเวลาและทรัพยากรของเรา ก็จะช่วยให้บริการยังคงฟรีและเข้าถึงได้สำหรับทุกคน
หากตอบกลับด้วยรหัสข้อผิดพลาด
403พวกเขาก็แค่เปลี่ยนที่อยู่ IP เท่านั้นแนวทางที่มีประสิทธิภาพกว่าอาจเป็นการส่งคำตอบที่มีคำแนะนำตำแหน่งดาวน์โหลดปริมาณมาก หรือลิงก์ไปยังคู่มือการประมวลผล dump ของ OSM
อินสแตนซ์ OpenStreetMap สามารถตั้งขึ้นเองได้จริง ๆ ภายใน 10 นาที แค่คำสั่ง
docker runง่าย ๆ ก็พอแน่นอนว่าการทำดัชนีจะใช้เวลาบ้าง แต่เมื่อคิดถึงทรัพยากรฝั่งนั้นแล้ว ก็คงไม่นานหรอก นี่เป็นแค่ ความโลภ ที่ไร้เหตุผล
แต่ไม่ได้ทำงานได้ทันทีและเกิดปัญหา ซึ่งก็ไม่น่าแปลกใจเพราะมีชิ้นส่วนที่เคลื่อนไหวเยอะมาก การหาทางเลี่ยงอาจไม่ใช่เรื่องใหญ่ แต่คำกล่าวว่าทำให้ทุกอย่างทำงานอย่างเสถียรได้ภายใน 10 นาทีนั้นน่าสงสัยมาก
ครั้งหนึ่งเคยต้องใช้ ข้อมูล OSM แต่สุดท้ายก็หาวิธีที่ถูกต้องไม่เจอ
ถ้าจะเอาข้อมูลที่ต้องการ ต้องดาวน์โหลดไฟล์ขนาดยักษ์ 100GB ในฟอร์แมตที่คลุมเครือ แล้วใช้ไลบรารีที่ไม่คุ้นเคย ข้อมูลกระจัดกระจาย และแม้จะมี HTTP API ก็มีข้อจำกัดหรือมีการจำกัดอัตราการเรียกใช้ แถมยังไม่ชัดเจนว่าใช้แบบนี้ได้หรือไม่
ยอมรับว่าเป็นความไม่รู้ของตัวเอง และก็ขอบคุณที่โปรเจกต์นี้มีอยู่ แต่ถ้าวัดด้วยมาตรฐานยุคที่นักพัฒนาคาดหวัง API ที่ใช้งานลื่นไหลแล้ว ความสะดวกในการใช้งานยังไม่ดีนัก
สุดท้ายจึงใช้โปรเจกต์ฟรีที่ให้ข้อมูล OSM ซึ่งแปลงล่วงหน้าไว้แล้วในรูปแบบที่ต้องการ
OSM Foundation ตั้งใจคงขนาดองค์กรให้เล็ก และไม่ทำงานแบบนั้น แต่สนับสนุนระบบนิเวศแบบกระจายศูนย์แทน ที่ใครก็สามารถนำข้อมูลไปสร้างบริการบนข้อมูลนั้นได้ มีทั้งเชิงพาณิชย์และงานอดิเรก ทั้งแบบเสียเงินและฟรี
วิธีนี้ทำงานได้ดีมาก และโดยส่วนตัวผมคิดว่าดีกว่าแนวทางแบบมุ่งใช้งบประมาณก้อนใหญ่ของ Wikimedia Foundation
OrganicMaps ใช้ไฟล์เหล่านี้โดยตรงเพื่อเก็บและค้นหาข้อมูลทั้งประเทศไว้ในเครื่องได้ ในฟอร์แมตนี้ ณ เวลาที่เขียน ดัมป์ของฝรั่งเศสมีขนาดเพียง 4.3GB
อีกอย่าง แทนที่จะดาวน์โหลดแผนที่ทั้งใบ ก็สามารถใช้มิเรอร์จำนวนมากอย่าง Geofabrik เพื่อดาวน์โหลดเฉพาะส่วนที่สนใจได้
[0] https://download.geofabrik.de/
ผมเองก็เคยดาวน์โหลด
planet.osmแล้วน่าจะพาร์สด้วยosmosisบนเดสก์ท็อปมาก่อน แม้จะไม่เคยใช้ฟอร์แมตหรือเครื่องมือนั้นที่อื่น แต่ก็ไม่ได้มีคู่แข่งมากนักที่ให้ใช้ข้อมูลภูมิสารสนเทศปริมาณมหาศาลได้อย่างเสรีแบบ OSM เลยสงสัยว่าในกรณีแบบนี้ อะไรคือแนวทางที่ถือว่าเป็นมาตรฐานที่ยอมรับกันสามารถรับไฟล์
.osmได้จากเบราว์เซอร์โดยตรงถ้าต้องการแค่จุดเดียวตามตัวอักษร ก็มี “Query features” ซึ่งเป็นลูกศรที่มีเครื่องหมายคำถามในไอคอนแผนที่ด้านขวา ใช้คลิกวัตถุภูมิประเทศแต่ละรายการเพื่อดูข้อมูลได้
นักพัฒนาหลักของ OSM สามารถโฟกัสกับการทำให้ฟรอนต์เอนด์ OSM ที่มีอยู่ให้ข้อมูลในฟอร์แมตที่เหมาะสมที่สุดได้ หากต้องการข้อมูลที่แปลงเป็นฟอร์แมตยอดนิยมอื่น การที่มีโปรเจกต์ในระบบนิเวศทำสิ่งนั้นให้ฟรีอยู่แล้วก็เป็นเรื่องดี
ผมคือผู้เขียนโพสต์ต้นทาง ทูตนั้นเป็นปฏิกิริยาเชิงประชดหลังจากเราเพิ่งตั้ง rate limit และบล็อก สแครปเปอร์อันตราย อีกชุดหนึ่งที่โจมตีเว็บไซต์และ API แผนที่อย่างรุนแรง
robots.txtถูกเมินข้อมูล OpenStreetMap ดาวน์โหลดได้ฟรี เราเผยแพร่เป็นรายนาทีที่ https://planet.openstreetmap.org/ และยังให้ข้อมูลผ่าน AWS S3 กับทอร์เรนต์ด้วย
ถ้าเพิ่งเริ่มต้น ควรเริ่มจากชุดข้อมูลย่อยของพื้นที่ที่เล็กกว่านี้ก่อน: https://wiki.openstreetmap.org/wiki/Planet.osm
ถ้าแค่ clone คลังเก็บที่บีบอัดของผมก็เสร็จในไม่กี่วินาที แต่พวก AI scraper กลับชอบขอทุก revision ของไฟล์
.cทุกไฟล์ทีละรายการผ่านเว็บอินเทอร์เฟซรวมถึงฟีเจอร์ตกแต่งที่ไม่มีประโยชน์กับพวกเขาทั้งหมดด้วย
เว็บอินเทอร์เฟซนั้นผมตั้งค่าไว้ด้วย
cgiดังนั้นการสแครปคงใช้เวลานานกว่าอายุของจักรวาลกว่าจะเสร็จ แต่ระหว่างนั้นก็ยังผลาญไฟฟ้าและทรัพยากรของผมอย่างที่มีคนเพิ่งชี้ไว้ Aaron Swartz เคยถูกขู่ว่าอาจติดคุกเพราะการสแครป แต่ตอนนี้ โมเดลภาษา AI ขนาดใหญ่ ที่สร้างจากการสแครปกลับได้รับเงินลงทุนหลายแสนล้านดอลลาร์
เขานำบทความวิชาการไปเผยแพร่ต่อสาธารณะ ซึ่งเป็นการละเมิดลิขสิทธิ์อย่างชัดเจน
โมเดลภาษาขนาดใหญ่อยู่ในพื้นที่สีเทาว่าไม่ได้คัดลอกข้อความต้นฉบับแบบตรงตัว แต่เป็นงานดัดแปลงหรือไม่
ผู้พิพากษาแต่ละคนก็ตัดสินแตกต่างกัน
เอา
planet.osmไปปล่อยเป็น ทอร์เรนต์ ก็พอ ควรอนุญาตให้ “สแครป” ผ่านทอร์เรนต์เท่านั้นแบบนั้นพวกสแครปเปอร์จะช่วยกันแบ่งภาระเครือข่ายเอง บางทีทุกคนอาจอยู่บน AWS instance เดียวกันด้วยซ้ำ ความเร็วเครือข่ายก็น่าจะดีขึ้น
ข้อมูลรวมถึงอัปเดตรายชุดนาที ยังมีให้ผ่านบัคเก็ต S3 สาธารณะ (EU และ US) ที่ได้รับการสนับสนุนจาก AWS Open Data Sponsorship Program ด้วย
เมื่อก่อนในการสัมภาษณ์งานสายเทคนิค ผู้สัมภาษณ์ให้ผมออกแบบระบบที่สแครป Wikipedia ภาษาอังกฤษทุกวัน ผมบอกว่า “เริ่มจากดาวน์โหลด archive ที่บีบอัดด้วย gzip ก่อนครับ”
ปรากฏว่าผู้สัมภาษณ์ไม่รู้ว่าทำแบบนั้นได้ และคาดหวังให้ผมอธิบายระบบซับซ้อนที่ดาวน์โหลดทีละหน้า รวมถึง multithreading, URL มาตรฐาน, การตรวจสอบหน้าที่เคยเยี่ยมชมแล้ว, การ retry ฯลฯ
ถึงอย่างนั้นเขาก็ให้ A กับโจทย์นั้น และสุดท้ายผมก็ได้เข้าทำงานที่บริษัทนั้น
ถ้าทำ honeypot สำหรับบริษัท AI ล่ะ? สร้างลูปไม่รู้จบของคอนเทนต์ที่สร้างขึ้นแบบโง่ ๆ
ลองนึกถึงโพสต์ Twitter ที่มีทวีตสังเคราะห์ต่อท้ายไปเรื่อย ๆ