กลับไปบล็อก

แหล่งที่มาของความเสี่ยงด้านการเชื่อมโยงและตัวแปรที่ควบคุมได้ในการเก็บข้อมูลหลายบัญชี

การเก็บข้อมูลในสถานะล็อกอินมักต้องใช้หลายบัญชี และการจำกัดการใช้งานไม่ได้เกิดจากสคริปต์เสมอไป หากแยกความเสี่ยงด้านการเชื่อมโยงออกเป็นลักษณะอุปกรณ์ ทางออกเครือข่าย สถานะเซสชัน และจังหวะคำขอ จะเห็นได้ชัดขึ้นว่าตัวแปรใดควบคุมและรักษาให้เสถียรได้ในระยะยาว

การเก็บข้อมูลอีคอมเมิร์ซโดยทั่วไปแบ่งได้เป็นสองประเภท ได้แก่ การเก็บจากหน้าสาธารณะที่ไม่ต้องล็อกอิน และการเก็บข้อมูลในสถานะที่ล็อกอินแล้ว เช่น การดูข้อมูลหลังบ้านของคู่แข่ง หรือดึงผลลัพธ์ที่แสดงหลังจากมีการปรับให้เหมาะกับผู้ใช้แต่ละราย

สำหรับประเภทแรก การควบคุมความถี่มักเพียงพอ แต่เมื่อประเภทที่สองเกี่ยวข้องกับหลายบัญชี ปัจจัยชี้ขาดไม่ได้อยู่ที่ว่าสคริปต์ฉลาดเพียงใด แต่อยู่ที่แต่ละบัญชีสามารถดำรงอยู่แยกจากกันได้หรือไม่ หากชั้นนี้จัดการไม่ดี การจำกัดอัตราและการระงับบัญชีจะดูเหมือนเกิดแบบสุ่ม และการแก้สคริปต์ ลดความถี่ หรือเปลี่ยน selector ก็ไม่ช่วยให้ดีขึ้น

ความเสี่ยงมาจากไหน

แพลตฟอร์มตรวจว่าหลายบัญชีถูกใช้งานโดยฝ่ายเดียวกันหรือไม่ผ่านการตรวจสอบไขว้ เช่น ที่อยู่เครือข่าย ลักษณะของเบราว์เซอร์และอุปกรณ์ ข้อมูล Cookie และเซสชัน รวมถึงรูปแบบการใช้งาน หากสัญญาณในหมวดใดหมวดหนึ่งซ้ำกันมาก บัญชีเหล่านั้นอาจถูกจัดให้อยู่ภายใต้ผู้ควบคุมเดียวกัน

ตรงนี้ต้องกำหนดขอบเขตให้ชัดเจน ตรรกะการตรวจจับมีการปรับปรุงอยู่ตลอด การอาศัยเทคนิคชั่วคราวเพื่อรับมือจึงให้ผลสั้นและมีต้นทุนสูง บทความนี้จึงไม่พูดถึงวิธีหลบเลี่ยงระบบควบคุมความเสี่ยง สิ่งที่ควรถามมากกว่าคือ เมื่อแยกแหล่งที่มาของความเสี่ยงได้แล้ว ตัวแปรใดที่เราควบคุมและรักษาให้คงที่ได้ในระยะยาว ตัวแปรเหล่านี้เป็นตัวกำหนดว่าหลายบัญชีที่ใช้งานอย่างถูกต้องจะส่งผลกระทบต่อกันหรือไม่

ลักษณะของอุปกรณ์และเบราว์เซอร์

รูปแบบที่เกิดปัญหาได้ง่ายที่สุดอย่างหนึ่งคือการเปิดหลายหน้าต่างบนเครื่องเดียว แล้วล็อกอินด้วยบัญชีต่างกัน แม้ล้างแคชหรือใช้โหมดไม่ระบุตัวตน หน้าต่างเหล่านั้นก็ยังใช้สภาพแวดล้อมระบบและข้อมูลเบราว์เซอร์ชุดเดียวกัน ลักษณะต่าง ๆ จึงยังทับซ้อนกัน และแพลตฟอร์มเห็นอุปกรณ์เครื่องเดียวสลับตัวตนซ้ำ ๆ

แนวทางที่ควบคุมได้คือให้แต่ละบัญชีมีสภาพแวดล้อมของตัวเอง: หนึ่งบัญชีต่อหนึ่งสภาพแวดล้อมอิสระ โดยแยก fingerprint, Cookies และ local storage ออกจากกัน สิ่งสำคัญคือต้องผูกสภาพแวดล้อมนั้นไว้กับบัญชี ไม่ใช่สร้างชุดแบบสุ่มใหม่ทุกครั้งที่เริ่มทำงาน การสุ่มมักทำให้ข้อมูลขัดแย้งกันเอง เช่น เขตเวลา ภาษา ความละเอียดหน้าจอ และ UA ไม่สอดคล้องกัน จึงดูผิดปกติกว่าการตั้งค่าที่เสถียร

ท้ายที่สุด ความเสถียรมาจากความสอดคล้อง ไม่ใช่ความสุ่ม

ทางออกเครือข่าย

ทางออกควรถูกผูกกับบัญชี: หนึ่งสภาพแวดล้อมต่อหนึ่งทางออก และภูมิภาคของทางออกควรสอดคล้องกับข้อมูลบัญชี เขตเวลา และภาษา หากหลายบัญชีแยกสภาพแวดล้อมกันแต่ใช้ทางออกเดียวกัน ประโยชน์จากการแยกก่อนหน้านี้จะลดลงอย่างมาก

ทางออกควรมีความเสถียรพอสมควรด้วย การเปลี่ยนภูมิภาคบ่อยทำให้สัญญาณตำแหน่งของบัญชีอธิบายได้ยาก เมื่อเลือกทางออก ที่อยู่แบบที่พักอาศัยโดยทั่วไปมักดูคล้ายการใช้งานของผู้ใช้ทั่วไปมากกว่าที่อยู่ของศูนย์ข้อมูล และควรหลีกเลี่ยงที่อยู่ที่ถูกใช้ในปริมาณมากมาแล้ว เพราะอาจถูกเฝ้าระวังใกล้ชิดกว่าเดิม

Cookies และเซสชัน

สถานะเซสชันเองก็เป็นบันทึกตัวตน หากหลายบัญชีใช้ Cookies หรือ local storage ชุดเดียวกัน ก็เท่ากับสร้างความเชื่อมโยงโดยตรงระหว่างบัญชี ต่อให้ส่วนอื่นของสภาพแวดล้อมถูกแยกไว้อย่างสะอาดเพียงใดก็ตาม

เซสชันในสภาพแวดล้อมใหม่ก็ไม่ควรถูกใช้งานอย่างหนักตั้งแต่แรก ควรมีช่วงของการเรียกดูตามปกติเพื่อสะสมประวัติ แล้วค่อยเพิ่มปริมาณงานทีละน้อย หลักการนี้ใช้ได้กับกรณีอื่นนอกเหนือจากการเก็บข้อมูลด้วย เพราะการมีหรือไม่มีประวัติการใช้งานมีผลโดยตรงต่อระดับกิจกรรมที่บัญชีสามารถรองรับได้อย่างสมเหตุสมผล

จังหวะคำขอ

ความหนาแน่นของคำขอเป็นสัญญาณด้านพฤติกรรม สคริปต์มักมีลักษณะเป็นจังหวะที่สม่ำเสมอ เช่น ช่วงห่างการเข้าถึงคงที่ ลำดับหน้าเหมือนเดิม และไม่มีพฤติกรรมอื่นนอกเหนือจากการเก็บข้อมูล ความสม่ำเสมอนี้แก้ไม่ได้ด้วยการเติมค่าการสุ่มเพียงอย่างเดียว เพราะปัญหาหลักอยู่ที่ปริมาณรวม

แนวทางที่ควบคุมได้คือรักษาปริมาณงานให้อยู่ในช่วงที่เหมาะสม: กระจายเวลาทำงานของแต่ละบัญชี ไม่ให้ทุกบัญชีทำงานเต็มกำลังพร้อมกัน เว้นช่วงที่สมเหตุสมผลระหว่างหน้า และแยกงานเก็บข้อมูลที่มีลำดับความสำคัญสูงกับต่ำ ขอบเขตนั้นชัดเจน คือการเก็บข้อมูลของคุณไม่ควรสร้างแรงกดดันต่อบริการเป้าหมาย ความเร็วที่ได้มาด้วยการกระทบการทำงานของบริการอีกฝ่ายไม่ใช่การแลกเปลี่ยนที่เหมาะสม

ทำไมสภาพแวดล้อมคงที่ต่อบัญชีจึงเสถียรกว่าการสลับแบบสุ่ม

แรงจูงใจของการสลับแบบสุ่มคือทำให้แต่ละครั้งดูแตกต่าง แต่การตรวจความเชื่อมโยงจะดูว่าสัญญาณในแต่ละมิติคงที่หรือไม่ และมีความขัดแย้งกันเองหรือไม่ หากวันนี้บัญชีออกจากที่หนึ่ง พรุ่งนี้ออกจากอีกที่หนึ่ง และชุดลักษณะเปลี่ยนไปทุกครั้ง ความไม่สอดคล้องนั้นเองก็กลายเป็นสัญญาณผิดปกติ

สภาพแวดล้อมคงที่ใช้ตรรกะตรงกันข้าม ตั้งแต่สมัคร บัญชีจะมีตัวตนที่สอดคล้องกัน: สภาพแวดล้อมคงที่ ทางออกคงที่ เขตเวลาและภาษาที่เข้าชุดกัน และประวัติเซสชันที่ค่อย ๆ สะสม ยิ่งรักษาความสอดคล้องนี้ไว้นาน กิจกรรมก็ยิ่งดูคล้ายผู้ใช้ทั่วไป คุณค่าของชั้นสภาพแวดล้อมจึงอยู่ที่ความเสถียรระยะยาว ไม่ใช่การเปลี่ยนแปลงที่หวือหวา

เรื่องนี้ยังอธิบายว่าทำไมสคริปต์เก็บข้อมูลไม่ควรจัดการ browser instances ด้วยตัวเอง สภาพแวดล้อมต้องสามารถจัดตารางแยกจากกันได้เพื่อกำหนดสภาพแวดล้อมเฉพาะให้แต่ละบัญชี ต้องตรวจสอบสถานะได้เพื่อค้นหาสภาพแวดล้อมที่ผิดปกติและบัญชีที่ใช้งานไม่ได้ ต้องสามารถนำสภาพแวดล้อมกลับมาใช้ใหม่เพื่อไม่ให้การทำงานระยะยาวสะสม zombie instances และเมื่อรันงานเก็บข้อมูลซ้ำก็มักต้องเปลี่ยนสภาพแวดล้อม ซึ่งทำได้อย่างเหมาะสมเมื่อสภาพแวดล้อมจัดตารางแยกกันได้เท่านั้น ในสถาปัตยกรรมแบบนี้ PurpleMark คือชั้นทรัพยากรสภาพแวดล้อม ส่วนสคริปต์ดูแลเพียงตรรกะการเก็บข้อมูล โดยมอบเรื่องตัวตนและทรัพยากรให้ชั้นสภาพแวดล้อม

ขอบเขตด้านการปฏิบัติตามข้อกำหนด

ประเด็นต่อไปนี้สำคัญกว่าการปรับแต่งทั้งหมดที่กล่าวมาก่อนหน้า

ปฏิบัติตามข้อกำหนดการให้บริการและกฎ robots ของเว็บไซต์เป้าหมาย แพลตฟอร์มอีคอมเมิร์ซจำนวนมากจำกัดการเข้าถึงแบบอัตโนมัติไว้อย่างชัดเจนในข้อกำหนด ดังนั้นควรตรวจสอบก่อนเริ่มว่าวิธีใช้งานที่ตั้งใจไว้อนุญาตหรือไม่ เก็บเฉพาะข้อมูลสาธารณะเกี่ยวกับสินค้า ราคา และสต็อก และไม่เก็บข้อมูลส่วนบุคคล อย่าหลีกเลี่ยงมาตรการป้องกันทางเทคนิค หากพบการป้องกันอย่าง CAPTCHA หรืออินเทอร์เฟซที่เข้ารหัส ควรปรับกลยุทธ์การเก็บข้อมูลหรือขออนุญาต แทนการพยายามทำลายการป้องกัน ควบคุมความถี่ของคำขอไม่ว่าจะมีบัญชีกี่บัญชี และอย่ารบกวนการทำงานตามปกติของบริการเป้าหมาย

พื้นฐานของการพูดคุยนี้คือวิธีทำให้หลายบัญชีที่ถูกต้องแยกจากกันและไม่รบกวนกัน ไม่ใช่วิธีหลบเลี่ยงกฎของแพลตฟอร์ม เรื่องแรกคือสุขอนามัยในการดำเนินงาน ส่วนเรื่องหลังเป็นอีกประเด็นหนึ่ง