ArachneControl – ระบบเก็บข้อมูลโอเพนซอร์สที่ให้เซิร์ฟเวอร์ควบคุมเบราว์เซอร์จากระยะไกลเพื่อทำการเก็บข้อมูล
(github.com/TaewonyNet)เป็นระบบเก็บข้อมูลแบบ self-hosted ที่เก็บข้อมูลผ่าน เซสชันเบราว์เซอร์จริงของผู้ใช้ โดย สิ่งที่จะเก็บและวิธีการเก็บนั้นเซิร์ฟเวอร์จะเผยแพร่แบบไดนามิกขณะรันไทม์ ใช้แพตเทิร์น Command-Execute-Report ที่เซิร์ฟเวอร์ควบคุมไคลเอนต์ (เบราว์เซอร์) จากระยะไกล
มันแก้ปัญหา 3 อย่างที่ต้องเจอทุกครั้งเมื่อเขียนครอว์เลอร์ใหม่ — ภาระ/การบล็อกของแบ็กเอนด์เป้าหมาย, กำแพงล็อกอิน, และการต้องกระจายไคลเอนต์ใหม่ทุกครั้งที่ลอจิกการเก็บข้อมูลเปลี่ยน — ด้วยการออกแบบตั้งแต่ต้น
- Zero-Footprint: ไม่ยิงคำขอไปยังเซิร์ฟเวอร์เป้าหมายโดยตรง แต่ให้ เบราว์เซอร์ของผู้ใช้ที่ล็อกอินอยู่แล้ว เป็นผู้เก็บข้อมูลแทน → เข้าถึงด้านในกำแพงล็อกอินได้เหมือนมนุษย์จริง และหลีกเลี่ยงภาระ/การบล็อกจากแบ็กเอนด์
- การควบคุมแบบไดนามิกจากเซิร์ฟเวอร์: ลงทะเบียน bookmarklet ครั้งเดียวแล้วคงเดิมตลอดไป กฎการเก็บข้อมูล (selector·action·extract) จะถูกเซิร์ฟเวอร์เผยแพร่เป็น type command → เปลี่ยนลอจิกเมื่อไรไม่ต้องกระจายไคลเอนต์ใหม่เลย สร้าง TS type อัตโนมัติจาก Pydantic แหล่งเดียว
- สร้าง recipe ได้ด้วยการคลิก: ใน WebUI เมื่อคลิกองค์ประกอบจะสร้าง selector อัตโนมัติ และบันทึก recipe สำหรับ extract จากลำดับ action (click·drag·scroll·swipe) ห้าม eval
script(ใช้ allowlist) - บันทึกข้อมูลแบบไม่สูญหาย: write-ahead (commit แบบ synchronous แล้วค่อยตอบ 202) + idempotent + กู้คืนอัตโนมัติเมื่อรีสตาร์ต
- ควบคุมผ่าน MCP agent: เปิดเผย live pipe เป็นเครื่องมือ MCP (มี host allowlist·rate-limit·op TTL guard) แต่ ไม่ได้มีเป้าหมายเพื่อหลบเลี่ยงบอตหรือทำ mass scraping
- secure-by-default: เปิดใช้การยืนยันตัวตนผู้ดูแลระบบเป็นค่าเริ่มต้น (โทเคนอัตโนมัติแบบ Jupyter), มีขอบเขตการรัน eval(
script) จากการตอบสนองของเซิร์ฟเวอร์และ external beacon(beacon), และไม่ใช้ fingerprinting - ไม่มีค่าใช้จ่ายและพกพาได้: SQLite + คิวในหน่วยความจำ + FastAPI เดียว ไม่พึ่งบริการเสียเงินภายนอกเลย
uvทำให้ทำซ้ำได้โดยไม่ขึ้นกับ OS MIT
การเก็บข้อมูลจากเว็บไซต์สาธารณะจำเป็นต้องมี URL สาธารณะเพราะข้อจำกัดของ Browser Private Network Access โดยสามารถข้ามได้ด้วยการเปิด temporary tunnel ของ cloudflared ผ่าน ENABLE_TUNNEL=1 (จากการทดสอบจริง: เก็บข้อมูลจากเว็บข่าวจริงสำเร็จ)
ยังไม่มีความคิดเห็น