ขายสคริปต์/ปลั๊กอิน/บอท ไม่ให้โดนแชร์ต่อ
วิธีขายสคริปต์ ปลั๊กอิน หรือบอท แบบกันการแชร์คีย์: จำกัดที่นั่งด้วย maxActivations + device fingerprint, heartbeat ยึดที่นั่งคืน และให้ลูกค้าย้ายเครื่องเองที่ /manage เพื่อลดงานซัพพอร์ต
สคริปต์ ปลั๊กอิน และบอท เป็นสินค้าที่ “ก๊อปง่ายที่สุด” — ไฟล์เดียวส่งต่อในกลุ่มไลน์ ได้ทั้งร้าน ถ้าคุณขายของพวกนี้ การมีแค่ “คีย์” ไม่พอ ต้องผูกคีย์กับเครื่องและคุม จำนวนที่นั่งให้รัดกุม บทความนี้สรุปชุดเครื่องมือที่ใช้ได้จริง
1. จำกัดที่นั่งด้วย max_activations + fingerprint
ตั้ง max_activations ใน policy ตามจำนวนเครื่องที่ลูกค้าควรใช้ได้ (เช่น 1 หรือ 2) แล้วให้แอป/สคริปต์ส่ง fingerprint ของเครื่องตอน activate เครื่องใหม่ที่เกินโควตาจะได้ SEAT_LIMIT_REACHED — คีย์ที่หลุดไปในกลุ่มจึงเปิดใช้ ต่อไม่ได้ เพราะที่นั่งเต็มแล้ว
import { KeyThaiClient } from "keythai";
const client = new KeyThaiClient({ apiKey: "kt_live_xxxxxxxxxxxx" });
const key = "KEYT-AB12-3C4D-5E6F-7G8H-9J0K";
// fingerprint เดิม → activate ซ้ำไม่กินที่นั่งเพิ่ม (idempotent)
const res = await client.activate(key, { fingerprint, platform: "windows" });
console.log(res.machine_count, "/", res.max_activations, "ที่นั่ง");
// เครื่องที่ 4 (เกิน max_activations) จะได้ error SEAT_LIMIT_REACHEDเพราะ activate เป็น idempotent ต่อ fingerprint ลูกค้าตัวจริงเปิดสคริปต์ซ้ำบนเครื่องเดิม จะไม่กินที่นั่งเพิ่ม รายละเอียดการสร้าง fingerprint อ่านที่ Device Fingerprint
2. บอทรันตลอด? ใช้ heartbeat ยึดที่นั่งคืน
บอทเทรด/บอทเกมมักรันค้างไว้ ถ้าลูกค้าเอาไปรันหลายเครื่องพร้อมกันด้วยคีย์เดียว ให้ใช้ floating license + heartbeat แอปส่งสัญญาณ “ยังออนไลน์” เป็นรอบ ๆ เครื่องไหนเงียบเกิน 3 เท่าของรอบ เซิร์ฟเวอร์ยึดที่นั่งคืน ทำให้รันเกินจำนวนที่นั่งพร้อมกัน ไม่ได้ SDK มี startAutoHeartbeat ทำให้อัตโนมัติ:
from keythai import KeyThaiClient, get_device_fingerprint
client = KeyThaiClient("kt_live_xxxxxxxxxxxx")
fp = get_device_fingerprint()
client.activate(key, fp) # ต้อง activate ให้มีที่นั่งก่อน
handle = client.start_auto_heartbeat(
key, fp,
interval_seconds=60, # None = ใช้ค่า policy heartbeat_interval_seconds ไม่งั้น 300s
on_beat=lambda res: print("beat ok"),
on_error=lambda exc: print("heartbeat ล้มเหลว:", exc),
)
# ... แอปทำงาน ...
handle.stop() # เรียกซ้ำได้ ไม่มีปัญหาอ่านเชิงลึกที่ Auto-Heartbeat และทำความเข้าใจ floating license ที่ Floating License คืออะไร
3. ให้ลูกค้าย้ายเครื่องเอง = ลดงานซัพพอร์ต
ลูกค้าเปลี่ยนคอม/ลงวินโดวส์ใหม่แล้วที่นั่งเต็มเป็นเคสซัพพอร์ตที่เจอบ่อยที่สุด เปิด selfServiceReset ใน policy แล้วบอกลูกค้าให้ไปที่หน้า /manage กรอกคีย์เพื่อปลดเครื่องเก่าเอง — คุณตั้ง resetMaxPer30d จำกัดจำนวนครั้งต่อ 30 วันเพื่อกันคนหมุนคีย์แชร์กันได้ด้วย
ผลรวม: คีย์หลุดก็แชร์ต่อไม่ได้ (ที่นั่งเต็ม), รันหลายเครื่องพร้อมกันไม่ได้ (heartbeat), และคุณแทบไม่ต้องตอบแชทเรื่องย้ายเครื่อง ขั้นต่อไปถ้าอยากต่อยอดเป็น “ขายอัตโนมัติ” ลองอ่าน ขาย License อัตโนมัติด้วย PromptPay