หยุด scripters จากการกระแทกเว็บไซต์ของคุณ


489

ฉันได้รับการยอมรับคำตอบ แต่น่าเศร้าที่ผมเชื่อว่าเรากำลังติดกับกรณีที่เลวร้ายสถานการณ์เดิมของเรา: ทุกคน CAPTCHA ในความพยายามในการซื้อของอึ คำอธิบายสั้น ๆ : การแคช / เว็บฟาร์มทำให้ไม่สามารถติดตามการเข้าชมและวิธีแก้ปัญหาใด ๆ (การส่งเว็บบีคอนที่ไม่ใช่แคชการเขียนลงในตารางรวม ฯลฯ ) ทำให้ไซต์ช้าลงกว่าบอท อาจมีฮาร์ดแวร์ราคาแพงบางอย่างจาก Cisco หรือสิ่งที่คล้ายกันซึ่งสามารถช่วยในระดับสูง แต่ก็ยากที่จะประเมินค่าใช้จ่ายหาก CAPTCHA ซึ่งทุกคนเป็นทางเลือก ฉันจะพยายามอธิบายเพิ่มเติมในภายหลังเช่นเดียวกับการล้างข้อมูลนี้สำหรับผู้ค้นหาในอนาคต (แม้ว่าคนอื่นจะยินดีที่จะลองเพราะมันเป็นชุมชน wiki)

สถานการณ์

นี่เป็นเรื่องเกี่ยวกับการขายถุงขยะใน woot.com ฉันเป็นประธานของ Woot Workshop ซึ่งเป็น บริษัท ย่อยของ Woot ที่ออกแบบเขียนคำอธิบายผลิตภัณฑ์พอดแคสต์โพสต์บล็อกและดูแลฟอรัม ฉันทำงานกับ CSS / HTML และแทบจะไม่คุ้นเคยกับเทคโนโลยีอื่น ๆ ฉันทำงานอย่างใกล้ชิดกับนักพัฒนาและได้พูดคุยผ่านคำตอบทั้งหมดที่นี่ (และความคิดอื่น ๆ อีกมากมายที่เราเคยมี)

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

บอตกำลังกระแทกหน้าแรกของเราหลายสิบครั้งต่อการคัดลอกหน้าจอที่สอง (และ / หรือสแกน RSS ของเรา) สำหรับการขายอึแบบสุ่ม ทันทีที่พวกเขาเห็นว่ามันเป็นต้นเหตุของขั้นตอนที่สองของโปรแกรมที่ลงชื่อเข้าใช้คลิกที่ฉันต้องการหนึ่งกรอกแบบฟอร์มและซื้ออึ

การประเมินผล

lc : บน stackoverflow และไซต์อื่น ๆ ที่ใช้วิธีนี้พวกเขาเกือบจะติดต่อกับผู้ใช้ที่ได้รับการรับรอง (เข้าสู่ระบบ) เนื่องจากงานที่พยายามทำนั้นต้องการ

ใน Woot ผู้ใช้นิรนาม (ไม่ได้เข้าสู่ระบบ) สามารถดูโฮมเพจของเรา ในคำอื่น ๆ บอทกระแทกสามารถไม่ได้ตรวจสอบ (และเป็นหลักไม่สามารถติดตามได้ยกเว้นโดยที่อยู่ IP)

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

โอ้การมีคนโทรมาหาเราจะเป็นสถานการณ์ที่เลวร้ายที่สุด เราให้พวกเขาโทรหาคุณได้ไหม

BradC : วิธีการของ Ned Batchelder นั้นดูดี แต่มันก็ถูกออกแบบมาอย่างแน่นหนาเพื่อกำจัดบ็อตที่สร้างขึ้นสำหรับเครือข่ายไซต์ ปัญหาของเราคือบอตถูกสร้างขึ้นมาโดยเฉพาะเพื่อเอาชนะเว็บไซต์ของเรา วิธีการเหล่านี้บางอย่างอาจใช้งานได้ในช่วงเวลาสั้น ๆ จนกว่าสคริปเตอร์จะพัฒนาบอทของพวกเขาเพื่อเพิกเฉยกับ honeypot, ขูดหน้าจอสำหรับชื่อป้ายกำกับที่อยู่ใกล้เคียงแทนรหัสแบบฟอร์มและใช้การควบคุมเบราว์เซอร์

 

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

 

novatrust : และฉันขอต้อนรับผู้ที่มีความสามารถพิเศษคนใหม่ของเรา เราเสนอฟีด RSSf เพื่ออนุญาตให้แอปของบุคคลที่สามสแกนเว็บไซต์ของเราเพื่อดูข้อมูลผลิตภัณฑ์ แต่ไม่ใช่ล่วงหน้าของ HTML ไซต์หลัก หากฉันตีความถูกต้องทางออกของคุณจะช่วยให้เป้าหมาย 2 (ปัญหาด้านประสิทธิภาพ) โดยเสียสละเป้าหมาย 1 อย่างสมบูรณ์และเพิ่งลาออกจากข้อเท็จจริงที่ว่าบอทจะซื้ออึส่วนใหญ่ ฉันโหวตให้คำตอบของคุณเพราะการมองดูในแง่ร้ายในย่อหน้าสุดท้ายของคุณรู้สึกถูกต้องสำหรับฉัน ดูเหมือนว่าจะไม่มีกระสุนเงินที่นี่

ส่วนที่เหลือของคำตอบโดยทั่วไปขึ้นอยู่กับการติดตาม IP ซึ่งดูเหมือนว่าทั้งสองจะไร้ประโยชน์ (ด้วย botnets / zombies / เครือข่ายคลาวด์) และเป็นอันตราย (จับผู้บริสุทธิ์หลายคนที่มาจากจุดหมายปลายทาง IP เดียวกัน)

มีแนวทาง / ความคิดอื่น ๆ อีกไหม? นักพัฒนาของฉันพูดอยู่เสมอว่า "มาทำ CAPTCHA" กันเถอะ แต่ฉันหวังว่าจะมีวิธีการรบกวนน้อยกว่าสำหรับมนุษย์จริง ๆ ทุกคนที่ต้องการอึของเรา

คำถามเดิม

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

คุณจบลงด้วย scripters และบอทที่พยายามเขียนโปรแกรม [a] เมื่อคุณขายไอเท็มกล่าวและ [b] ตรวจสอบให้แน่ใจว่าพวกเขาเป็นคนแรกที่ซื้อมัน สิ่งนี้ดูดได้สองเหตุผล:

  1. ไซต์ของคุณถูกโจมตีโดยผู้ที่ไม่ใช่มนุษย์ทำให้ทุกอย่างช้าลงสำหรับทุกคน
  2. ใบปลิวจบลงด้วยการ 'ชนะ' ผลิตภัณฑ์ทำให้ผู้ชมรู้สึกโกง

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

  • ประสบการณ์การใช้งานของผู้ใช้เป็นสิ่งที่มนุษย์ต้องการเพราะต้องถอดรหัส CAPTCHA เลือกแมวหรือแก้ปัญหาทางคณิตศาสตร์
  • หากการรับรู้ผลประโยชน์สูงพอและฝูงชนมีขนาดใหญ่พอบางกลุ่มจะหาทางไปรอบ ๆ การปรับแต่งใด ๆ ที่นำไปสู่การแข่งขันอาวุธ (นี่เป็นความจริงโดยเฉพาะอย่างยิ่งสิ่งที่บิดได้ง่ายกว่าคือรูปแบบ 'ความคิดเห็น' ที่ซ่อนอยู่จัดองค์ประกอบองค์ประกอบในรูปแบบใหม่ติดฉลากผิดข้อความ 'gotcha' ที่ซ่อนอยู่ทั้งหมดจะทำงานเพียงครั้งเดียวและจะต้องเปลี่ยนเพื่อต่อสู้กับเป้าหมาย .)
  • แม้ว่าสคริปเตอร์จะไม่สามารถ 'แก้ไข' การบิดของคุณ แต่ก็ไม่ได้ป้องกันพวกเขาจากการกระแทกหน้าแรกของคุณและจากนั้นส่งเสียงเตือนให้สคริปเตอร์กรอกคำสั่งด้วยตนเอง เนื่องจากพวกเขาได้รับประโยชน์จากการแก้ปัญหา [a] พวกเขาจะยังคงชนะ [b] เนื่องจากพวกเขาจะเป็นคนแรกที่มาถึงหน้าคำสั่งซื้อ นอกจากนี้ 1. ยังเกิดขึ้นทำให้เซิร์ฟเวอร์เกิดข้อผิดพลาดและประสิทธิภาพลดลงสำหรับทุกคน

อีกวิธีคือดู IP ที่กดปุ่มบ่อยเกินไปปิดกั้นจากไฟร์วอลล์หรือป้องกันมิให้สั่ง สิ่งนี้สามารถแก้ปัญหา 2. และป้องกัน [b] แต่ประสิทธิภาพที่ได้จากการสแกนหา IP นั้นมีขนาดใหญ่และน่าจะทำให้เกิดปัญหามากขึ้นเช่น 1 มากกว่า scripters ที่เกิดขึ้นด้วยตัวเอง นอกจากนี้ความเป็นไปได้ของเครือข่ายคลาวด์และซอมบี้สแปมทำให้การตรวจสอบ IP ไร้ประโยชน์อย่างเป็นธรรม

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

เป้าหมาย

  1. ขายสินค้าให้กับมนุษย์ที่ไม่ใช่สคริปต์
  2. ทำให้ไซต์ทำงานด้วยความเร็วที่บอตไม่ได้ทำให้ช้าลง
  3. อย่ารบกวนผู้ใช้ 'ปกติ' ด้วยงานใด ๆ ที่จะเสร็จสมบูรณ์เพื่อพิสูจน์ว่าเป็นมนุษย์

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

มันเป็นวิกิของชุมชนดังนั้นอย่าลังเลที่จะแทง แต่ส่วนใหญ่ฉันพยายามที่จะครอบคลุมทุกจุดให้ชัดเจนที่สุดเท่าที่ฉันจะพิจารณาได้ว่ามีสิ่งต่าง ๆ ที่ชัดเจนที่จะลองว่าเราได้ลองและลดราคาแล้ว
Dave Rutledge

ทำไมไม่เพียงแค่แคชผู้กระทำผิดซ้ำเพียงแค่ไม่อัปเดตหน้าใดก็ตามที่พวกเขาร้องขอซ้ำ ที่อยู่ IPv4 และ MAC รวม 32 + 48 บิต นั่นคือ 10MB สำหรับผู้ใช้ 1 ล้านคนไม่น่าจะมีปัญหา การรวมกันของ IPv4 และ MAC จะช่วยให้คุณสามารถติดตามผู้ใช้ทุกประเภทได้แม่นยำยิ่งขึ้น
John Leidegren

4
ฉันไม่เข้าใจจริงๆว่าทำไมคุณต้องให้ผู้ใช้ที่ไม่ระบุชื่อเห็นการขายอึ ทำไมไม่เพียงเสนอให้กับผู้ใช้ที่เข้าสู่ระบบ? หากคุณทำเช่นนั้นคุณจะไม่มีผู้ใช้ที่ไม่รู้จักตีหน้าบ่อยเกินไปจากนั้นอาจแบนผู้ใช้ที่ไม่ดี
Ryan Guill

1
ฉันคิดว่าบางคนขาดปัจจัยสำคัญที่นี่: บอทเหล่านี้ถูกตั้งค่าให้ล็อกอินและซื้อด้วย พวกเขารู้บัญชีที่ถูกต้องและสามารถเข้าสู่ระบบได้นอกจากนี้คนจริงที่ใช้ woot sit ในนาทีที่ไอเท็มกำลังจะมาถึงและกด F5 เพื่อโหลดซ้ำทุก 2-5 วินาที นั่นคือการใช้งานปกติของมนุษย์ที่ถูกต้อง
CodingWithSpike

คำตอบ:


229

วิธีการเกี่ยวกับการใช้บางอย่างเช่นนั้นทำกับ CAPTCHAs หรือไม่

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

หากพวกเขาล้มเหลวในการตรวจสอบ x ครั้งในแถว (พูด 2 หรือ 3) ให้ IP ที่หมดเวลาหรือการวัดอื่น ๆ จากนั้นเมื่อหมดเวลาให้ทิ้งข้อมูลเหล่านั้นกลับไปที่การตรวจสอบอีกครั้ง


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

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

นอกจากนี้อัตราต่อรองที่ X คนกำลังโหลดหน้าเดียวกันในเวลาเดียวกันจากหนึ่ง IP คืออะไร? หากสูงคุณอาจต้องใช้กลไกทริกเกอร์สำหรับสัญญาณเตือนบอทของคุณ


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

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

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

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


วิธีอื่น ๆ ในการปล่อยบล็อกนั้นไม่มีประสิทธิภาพเช่น: หมดเวลา (แต่พวกเขาจะได้รับการกระแทกเว็บไซต์ของคุณอีกครั้งหลังจากล้างซ้ำ) หมดเวลานาน (ถ้าเป็นคนพยายามซื้อผลิตภัณฑ์ของคุณจริง ๆ พวกเขาจะเป็น SOL และลงโทษสำหรับความล้มเหลวในการตรวจสอบ), อีเมล (ทำได้อย่างง่ายดายโดยบอท), แฟกซ์ (เดียวกัน) หรือเมล์หอยทาก (ใช้เวลานานเกินไป)

แน่นอนว่าคุณสามารถเพิ่มระยะเวลาการหมดเวลาต่อ IP แทนแต่ละครั้งที่ได้รับการหมดเวลา แค่ทำให้แน่ใจว่าคุณไม่ได้ลงโทษมนุษย์ที่แท้จริงโดยไม่ตั้งใจ


13
Google ใช้วิธีการเดียวกันนี้และมีที่อยู่ IP ต่อไปเท่านั้น ที่ทำงานบ่อยฉันจะได้ CAPTCHA ก่อนที่ฉันจะสามารถค้นหาใน Google ได้เพราะพวกเขาเห็นพฤติกรรมคล้ายบอทจากที่อยู่ IP เดียวกัน ฉันคิดว่าวิธีนี้ (CAPTCHA หลังจากพฤติกรรมเหมือนบอท) เป็นวิธีที่ดีที่สุดที่คุณจะได้รับ
Ross

7
ฉันเคย google ขอ CAPTCHA มาก่อน แต่มันเป็นความผิดของตัวเอง - ฉันใช้มันเป็นเครื่องคิดเลขทำผลรวมเกือบสิบเหมือนกัน
Marcus Downing

ตัวเลือก CAPTCHA ดูเหมือนจะเป็นผู้ชนะสำหรับฉัน คุณทำร้ายบอตอย่างหนักและถ้าคุณมีความสมดุลคุณไม่ควรใช้ผู้ใช้อย่างถูกกฎหมาย
xan

แทนที่จะล็อคผู้คนและใช้โทรศัพท์คุณสามารถสร้างที่อยู่อีเมลชั่วคราวเช่น cur92Siva@site.com แต่สร้างส่วนด้านหน้าด้วยภาพ
Sam

สิ่งนี้อาจใช้ได้เช่นกันเว้นแต่ว่าบอทเพิ่งจะคุ้นเคยกับระบบและสามารถคัดกรองที่อยู่อีเมล จุดของฉันกับการโทรเป็นจริงบังคับให้มนุษย์มีปฏิสัมพันธ์และต้องการให้ผู้ใช้อธิบายตัวเองโดยตรงด้วยเสียงของพวกเขา เจ้าของ ธ ​​ปท. อาจไม่ต้องการทำเช่นนั้น
lc

193

คุณต้องหาวิธีที่จะทำให้บอทซื้อของที่มีราคาสูงเกินไป: 12mm wingnut: $ 20 ดูจำนวนบอทที่ถ่ายได้ก่อนที่ผู้เขียนสคริปต์จะตัดสินใจว่าคุณกำลังเล่นเกมอยู่

ใช้กำไรเพื่อซื้อเซิร์ฟเวอร์เพิ่มและชำระแบนด์วิดท์


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

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

4
สิ่งนี้มีค่าในคอเมดีอย่างจริงจังจนกว่าคุณจะโกรธสคริปต์ตัวเล็กที่เกิดขึ้นมีทักษะมากกว่าการคัดลอก woot และทำให้คุณเกิดปัญหาจริงเพราะคุณได้ฉีกเขาออก
MattBelanger

2
หากสคริปต์ตัวเล็กโกรธพวกเขาก็อาจเปิดเผยตัวเองมากพอที่คุณจะแท็กพวกเขาและมอบให้พวกเขาเพื่อการบังคับใช้กฎหมาย
46714 Jacco

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

162

วิธีแก้ปัญหาของฉันคือทำให้การขูดหน้าจอไร้ค่าโดยการหน่วงเวลาประมาณ 10 นาทีสำหรับ 'บอทและสคริปต์

นี่คือวิธีที่ฉันจะทำ:

  • เข้าสู่ระบบและระบุ Hitters ซ้ำ ๆ

คุณไม่จำเป็นต้องบันทึกที่อยู่ IP ทุกครั้งในทุก Hit ติดตามหนึ่งในทุก ๆ 20 ครั้งหรือมากกว่านั้น ผู้กระทำผิดซ้ำจะยังคงปรากฏในการติดตามเป็นครั้งคราวสุ่ม

  • เก็บแคชของหน้าของคุณไว้ก่อนหน้านี้ประมาณ 10 นาที

  • เมื่อผู้ตีซ้ำ / บอตเข้าชมไซต์ของคุณให้พวกเขาใช้หน้าแคชเก่า 10 นาที

พวกเขาจะไม่ทราบทันทีว่าพวกเขากำลังรับไซต์เก่า พวกเขาจะสามารถขูดและทุกอย่าง แต่พวกเขาจะไม่ชนะการแข่งขันอีกต่อไปเพราะ "คนจริง" จะมีเวลาเริ่มต้น 10 นาที

ประโยชน์ที่ได้รับ:

  • ไม่มีความยุ่งยากหรือปัญหาสำหรับผู้ใช้ (เช่น CAPTCHAs)
  • ดำเนินการอย่างสมบูรณ์ในฝั่งเซิร์ฟเวอร์ (ไม่มีการพึ่งพา Javascript / Flash)
  • การแสดงหน้าแคชที่เก่ากว่านั้นควรมีประสิทธิภาพการทำงานน้อยกว่าหน้าสด คุณอาจลดภาระให้กับเซิร์ฟเวอร์ของคุณด้วยวิธีนี้!

ข้อเสีย

  • ต้องติดตามบางที่อยู่ IP
  • ต้องเก็บและรักษาแคชของหน้าเก่า

คุณคิดอย่างไร?


1
ประณามมัน ฉันใช้เวลาหนึ่งชั่วโมงครึ่งในการเขียนแบบเวกเตอร์ห้าแบบของฉันสำหรับ woot และหลังจากที่คิดมานานและยากกว่าการตอบโต้ที่ห้าของฉัน (throttle botnet) ฉันต้องยอมรับความพ่ายแพ้ มันไม่ทำงาน และส่วนที่เหลือของการแก้ปัญหาที่ยาวนานชั่วโมงของฉันคือ - อันนี้อันนี้ abelenky ฉันปลายหมวกของฉันกับคุณ
Jens Roland

7
เพื่อสร้างสิ่งนี้: ใส่ IP ลงในแฮชการนับ LRU ในหน่วยความจำ (เพิ่มขึ้นและกดไปด้านบนทุกครั้งที่ IP กลับมา) เพิ่มการวิเคราะห์พฤติกรรมด้วยข้อมูล IP ย้อนกลับกิจกรรมภาพ / js / คุกกี้ ไต่ระดับการตอบสนองของคุณด้วยการโจมตีที่ไม่ดีลดผลกระทบของการปฏิเสธที่ผิดพลาดให้น้อยที่สุด
SquareCog

1
(ต่อ :) และเทคนิคของฉันไม่ได้ปิด / ห้ามใคร มันแค่ให้ข้อมูลล่าช้า ไม่มีใครในสำนักงานที่อาจได้รับรางวัล แต่นั่นไม่ใช่ปัญหาจากมุมมองการบริการลูกค้า / การเข้าถึง
abelenky

18
@bruceatk: หากคุณให้หน้าเฉพาะบอทพิเศษพวกเขาในที่สุดพวกเขาก็จะเรียนรู้ที่จะตรวจจับมันและเรียนรู้ที่จะหลอกลูกค้าปกติให้แม่นยำยิ่งขึ้น โดยให้หน้าเก่าพวกเขาจะไม่มีความคิดว่าพวกเขากำลังรับข้อมูลเก่า ข้อมูลเก่าถูกต้องตามกฎหมาย! มันไร้ประโยชน์เพียงเพื่อการแข่งขัน / เพื่อการแข่งขัน
abelenky

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

54

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

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

เทคนิคนี้เป็นวิธีที่ฉันป้องกันสแปมบอทในเว็บไซต์นี้ มันได้ผล. วิธีที่อธิบายไว้ที่นี่ไม่ได้ดูเนื้อหาเลย

แนวคิดอื่น ๆ :

  • สร้าง กลไกการแจ้งเตือนอัตโนมัติอย่างเป็นทางการ (ฟีด RSS? Twitter?) ที่ผู้คนสามารถสมัครรับข้อมูลเมื่อผลิตภัณฑ์ของคุณวางจำหน่าย สิ่งนี้ช่วยลดความต้องการของผู้คนในการสร้างสคริปต์
  • เปลี่ยนเทคนิคการทำให้งงของคุณ ก่อนที่รายการใหม่จะลดราคา ดังนั้นแม้ว่าผู้ตีพิมพ์สามารถเพิ่มการแข่งขันทางด้านอาวุธได้พวกเขาจะอยู่ข้างหลังหนึ่งวันเสมอ

แก้ไข: เพื่อให้ชัดเจนโดยสิ้นเชิงบทความของเน็ดด้านบนอธิบายวิธีการป้องกันการซื้อสินค้าโดยอัตโนมัติโดยป้องกันไม่ให้ ธ ปท. ดำเนินการผ่านแบบฟอร์มเพื่อส่งคำสั่งซื้อ เทคนิคของเขาจะไม่เป็นประโยชน์ในการป้องกันบอทจากการขูดหน้าจอโฮมเพจเพื่อพิจารณาว่าเมื่อไรที่ Bandoleer of Carrots ขาย ฉันไม่แน่ใจว่าการป้องกันนั้นเป็นไปได้จริง ๆ

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

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

  • การประทับเวลา
  • ที่อยู่ IP ของลูกค้า
  • รหัสรายการของรายการบล็อกที่มีการแสดงความคิดเห็นและ
  • ความลับ.

นี่คือวิธีที่คุณสามารถใช้งานได้ที่ WOOT.com:

เปลี่ยนค่า "ความลับ" ที่ใช้เป็นส่วนหนึ่งของแฮชในแต่ละครั้งที่รายการใหม่เริ่มขาย ซึ่งหมายความว่าหากใครบางคนกำลังออกแบบ BOT เพื่อซื้อสินค้าอัตโนมัติมันจะทำงานจนกว่ารายการถัดไปจะวางจำหน่าย !!

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

อีกกลยุทธ์ที่เขาพูดถึงคือการเปลี่ยนเทคนิค honeypot เป็นครั้งคราว (อีกครั้งให้เปลี่ยนเมื่อรายการใหม่ลดราคา):

  • ใช้คลาส CSS (สุ่มแน่นอน) เพื่อตั้งค่าเขตข้อมูลหรือองค์ประกอบที่มีการแสดง: ไม่มี
  • สีฟิลด์เดียวกัน (หรือคล้ายกันมาก) พื้นหลังของหน้า
  • ใช้การวางตำแหน่งเพื่อย้ายฟิลด์ออกจากพื้นที่ที่มองเห็นของหน้า
  • ทำให้องค์ประกอบเล็กเกินไปที่จะแสดงฟิลด์ honeypot ที่มีอยู่
  • ปล่อยให้ฟิลด์มองเห็นได้ แต่ใช้การวางตำแหน่งเพื่อปกปิดองค์ประกอบด้วยการซ่อนเร้น
  • ใช้ Javascript เพื่อให้การเปลี่ยนแปลงเหล่านี้มีผลทำให้บอตต้องใช้เครื่องมือ Javascript แบบเต็ม
  • ปล่อยให้ honeypots ปรากฏเช่นเขตข้อมูลอื่น แต่บอกผู้คนว่าอย่าใส่อะไรลงไปในนั้น

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

สองสามครั้งต่อเดือน

หากคุณยอมรับคำตอบนี้คุณจะให้ฉันหัวต่อเมื่อครบกำหนดหรือไม่? :)


+1 สำหรับ RSS ทำเพื่อให้ผู้ใช้ถูกต้องตามกฎหมายได้รับรางวัล
Marcus Downing

RSS ดูเหมือนเป็นทางออกที่ดี แต่นั่นอาจส่งผลเสียต่อรายได้โฆษณาที่ฉันคาดเดาว่าเว็บไซต์นี้จะขึ้นอยู่กับ?
TM

1
ฉันไม่เข้าใจแนวคิด "ปินเนอร์" นี่เป็นเพียงส่วนเพิ่มเติมของข้อมูลที่อยู่ภายใน html <form>และส่งเมื่อส่งหรือไม่ เพราะบอทนั้นสามารถขูดได้ง่ายเช่นกัน
Ponkadoodle

44

ถาม: คุณจะหยุดไม่ให้สคริปเตอร์กระแทกไซต์ของคุณนับร้อยครั้งได้อย่างไร
ตอบ: คุณทำไม่ได้ ไม่มีวิธีการป้องกันพฤติกรรมนี้โดยตัวแทนภายนอก

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

ทางออกระยะยาวที่ทำงานได้เพียงอย่างเดียวคือเปลี่ยนเกมเพื่อให้ไซต์ไม่เป็นมิตรกับบอตหรือน่าสนใจน้อยกว่าสำหรับ scripters

คุณจะทำอย่างไร นั่นเป็นคำถามที่แตกต่าง! ;-)

...

ตกลงตัวเลือกบางตัวได้รับ (และปฏิเสธ) ด้านบน ฉันไม่คุ้นเคยกับเว็บไซต์ของคุณโดยดูเพียงครั้งเดียว แต่เนื่องจากผู้คนสามารถอ่านข้อความในภาพและบอตไม่สามารถทำได้อย่างง่ายดายเปลี่ยนการประกาศเป็นภาพ ไม่ใช่ CAPTCHAเพียงภาพ -

  • สร้างภาพ (แคชแน่นอน) เมื่อมีการร้องขอหน้า
  • เก็บชื่อแหล่งที่มาของภาพไว้เหมือนกันดังนั้นจึงไม่ทำให้เกมหายไป
  • เวลาส่วนใหญ่ของภาพจะมีข้อความธรรมดาอยู่ในนั้นและจัดแนวให้ปรากฏเป็นส่วนหนึ่งของหน้า HTML แบบอินไลน์
  • เมื่อเกมเป็น 'เปิด' ภาพจะเปลี่ยนเป็นข้อความประกาศ
  • ข้อความประกาศเผย URL และ / หรือรหัสที่ต้องป้อนด้วยตนเองเพื่อรับรางวัล แคปต์ช่าโค้ดถ้าคุณชอบ แต่นั่นอาจไม่จำเป็น
  • เพื่อความปลอดภัยเพิ่มเติมรหัสสามารถเป็นโทเค็นที่สร้างขึ้นเพียงครั้งเดียวโดยเฉพาะสำหรับคำขอ / IP / ตัวแทนเพื่อให้การร้องขอซ้ำ ๆ สร้างรหัสที่แตกต่างกัน หรือคุณสามารถสร้างรหัสสุ่มจำนวนมาก (แผ่นข้อมูลแบบครั้งเดียว) ไว้ล่วงหน้าหากการสร้างตามความต้องการนั้นเสียภาษีมากเกินไป

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

ดำเนินการต่อเพื่อเปลี่ยนเกมเป็นระยะ ๆ ต่อไปแม้ว่าจะไม่มีบอททริกเกอร์มันก็เพียง แต่จะทำให้เสียเวลาของ Scripters ในที่สุด Scripters น่าเบื่อเกมและไปที่อื่น ... เราหวัง ;-)

หนึ่งข้อเสนอแนะสุดท้าย: เมื่อคำขอสำหรับหน้าหลักของคุณเข้ามาใส่ไว้ในคิวและตอบสนองต่อการร้องขอในกระบวนการแยกต่างหาก (คุณอาจต้องแฮ็ค / ขยายเว็บเซิร์ฟเวอร์เพื่อทำสิ่งนี้ แต่อาจเป็นไปได้ว่า คุ้มค่า) หากคำขออื่นจาก IP / เอเจนต์เดียวกันเข้ามาขณะที่คำขอแรกอยู่ในคิวให้เพิกเฉย การทำเช่นนี้จะทำให้โหลดจากบ็อตโดยอัตโนมัติ

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


1
ฉันจะทำให้แน่ใจว่าการเปลี่ยนแปลง "ข้อความเริ่มต้น" ยัง วิธีนี้จะช่วยป้องกันไม่ให้แอปพลิเคชั่นการขูดเปรียบเทียบภาพกับภาพก่อนหน้าและรอการเปลี่ยนแปลงที่สำคัญ +1 ความคิดที่ดี.
Frank Krueger

1
การแก้ไข "ข้อเสนอแนะสุดท้าย": หากคำขอที่สองมาจากที่อยู่ในขณะที่คำขอก่อนหน้าจากที่อยู่เดียวกันรอการอนุมัติให้ยกเลิกการร้องขอแรกและใส่ที่สองลงในคิว สิ่งนี้จะทำหน้าที่เป็นบทลงโทษสำหรับการทุบไซต์แทนที่จะปล่อยให้โหลดหน้าเว็บ
Dave Sherohman

@ [Frank Krueger]: ฉันคิดว่าฉันพูดถึงเรื่องนี้ แต่เมื่ออ่านอีกครั้งฉันคิดว่าฉันทำไม่ได้ - ขอบคุณที่ชี้ให้เห็น! นอกจากนี้ยังอาจจะมีประโยชน์ที่จะมีการเปลี่ยนแปลงภาพข้อความเริ่มต้นเพียงไม่กี่พิกเซลยุ่งกับการเปรียบเทียบและ / หรือสร้างลายน้ำแบบมองไม่เห็นเกือบจะยุ่งอีกด้วยบอท
Steven A. Lowe

@ [Dave Sherohman]: ทำได้ แต่นั่นอาจทำให้คิวปั่น อาจเป็นการดีกว่าที่จะละทิ้งคำร้องขอใหม่เพื่อกำจัดภาระในทันที - การทดสอบ / การทำโปรไฟล์จะบอกได้ว่าสิ่งใดดีกว่า แต่ขอขอบคุณสำหรับคำแนะนำที่ดี!
Steven A. Lowe

ทนไม่ได้ที่คุณบอกให้เขายอมแพ้โดยพื้นฐานฉันรู้ว่าคุณคิดว่าเป็นไปไม่ได้ แต่ฉันไม่เห็นด้วย หากมีความตั้งใจจะมีวิธีเสมอ การอนุญาตให้พ่ายแพ้ได้อย่างง่ายดายนั้นน่าเบื่อจริง ๆ และน่าเศร้าถ้าโปสเตอร์ดั้งเดิมกำลังอ่านมันเป็นไปได้ที่จะทำ แต่วิธีการแก้ปัญหาจะต้องได้รับการออกแบบเองหลังจากการวิเคราะห์บันทึกการจราจรคุณสามารถป้องกันวิธีปัจจุบันและพิสูจน์อนาคตได้ วิธีการที่ไม่ได้ใช้ อีกทั้ง JavaScript การควบคุมเว็บเบราเซอร์เรียกใช้ JavaScript แบบเรียลไทม์ไม่จำเป็นต้องใช้เอ็นจิ้นอื่น - พวกเขาสามารถยุ่งกับ Dom และเรียกใช้ JavaScript ของตัวเอง! ขออภัย
Erx_VB.NExT.Coder

30

ฉันไม่รู้ว่ามันเป็นไปได้อย่างไร: ... ก้าวร้าว

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

แนวคิดอื่นคือการใช้ราคาสุ่มลดลงในช่วงระยะเวลาการขายถุงอึ ใครจะซื้อถุงสุ่มอึ $ 150 เมื่อคุณชัดเจนว่ามันมีค่าเพียง $ 20 ไม่มีใคร แต่บอท overzealous แต่หลังจากนั้น 9 นาทีต่อมาคือ $ 35 ดอลลาร์ ... จากนั้น 17 นาทีต่อมาก็คือ $ 9 หรืออะไรก็ตาม

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

ทั้งหมดนี้ถือว่าคุณต้องการฉี่ลอร์ดบอทบางตัวซึ่งอาจไม่แนะนำ 100%


อย่าคิดว่าการฉ้อฉลขุนนางบ็อตเป็นสิ่งที่ต้องการ แต่คุณมีความคิดที่น่าสนใจที่นี่
Shawn Miller

7
ฉันเห็นด้วยและฉันชอบความคิดที่เกิดขึ้นซ้ำ ๆ ของการหลอกบอทในการซื้อของปลอม เป็นการคืนทุนและเนื่องจากพวกเขาทำลาย ToS ไปแล้วพวกเขาจึงแทบจะไม่บ่น
นิโคลัส Flynt

22

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

เนื่องจากดูเหมือนว่าเจ้าของ ธ ​​ปท. กำลังทำกำไร (หรืออาจทำกำไร) เคล็ดลับคือการทำให้สิ่งนี้ไม่เป็นประโยชน์สำหรับพวกเขาด้วยการสนับสนุนพวกเขาซื้ออึ

ก่อนเสมอมี "ถุง 'o อึ"

ประการที่สองตรวจสอบให้แน่ใจว่าอึมักจะเป็นอึ

ประการที่สามหมุนอึบ่อย

ง่ายใช่ไหม

คุณจะต้องถาวร "ทำไมบางครั้งอึของเราถึงอึ?" ลิงก์ถัดจากข้อเสนอเพื่ออธิบายมนุษย์สิ่งที่เกิดขึ้น

เมื่อบอทเห็นว่ามีอึและซื้ออึอัตโนมัติผู้รับจะรู้สึกแย่มากที่พวกเขาจ่ายเงิน $ 10 สำหรับไม้จิ้มฟันที่เสีย แล้วถุงขยะที่ว่างเปล่า แล้วก็มีสิ่งสกปรกจากก้นรองเท้าของคุณ

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

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

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


15
  1. ขายสินค้าให้กับมนุษย์ที่ไม่ใช่สคริปต์

  2. ทำให้ไซต์ทำงานด้วยความเร็วที่บอตไม่ได้ทำให้ช้าลง

  3. อย่ารบกวนผู้ใช้ 'ปกติ' ด้วยงานใด ๆ ที่จะเสร็จสมบูรณ์เพื่อพิสูจน์ว่าเป็นมนุษย์

คุณอาจไม่อยากได้ยินสิ่งนี้ แต่ # 1 และ # 3 ไม่สามารถเกิดขึ้นพร้อมกันได้

บนอินเทอร์เน็ตไม่มีใครรู้ว่าคุณเป็นสุนัข

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

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


+1 สำหรับถ้าพวกเขาต้องการมัน captcha จะไม่หยุดพวกเขา ... และสำหรับการ์ตูน
Martin

13

วิธีที่ Woot ใช้ในการต่อสู้กับปัญหานี้คือการเปลี่ยนเกม - อย่างแท้จริง เมื่อพวกเขานำเสนอรายการที่ต้องการพิเศษขายพวกเขาทำให้ผู้ใช้เล่นวิดีโอเกมเพื่อสั่งซื้อ

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

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


โมเดลธุรกิจทั้งหมดของคุณอ้างอิงจาก "มาก่อนได้ก่อน" คุณไม่สามารถทำสิ่งที่สถานีวิทยุทำ (พวกเขาไม่ได้เป็นผู้เรียกคนแรกอีกต่อไปพวกเขาทำให้ผู้ชนะอันดับที่ 5 หรือ 20 หรือ 13) ไม่ตรงกับคุณสมบัติหลักของคุณ

ไม่ไม่มีวิธีการนี้โดยไม่เปลี่ยนประสบการณ์การสั่งซื้อสำหรับผู้ใช้จริง

สมมติว่าคุณใช้กลยุทธ์เหล่านี้ทั้งหมด หากฉันตัดสินใจว่านี่เป็นสิ่งสำคัญฉันจะให้ 100 คนทำงานร่วมกับฉันเราจะสร้างซอฟต์แวร์เพื่อทำงานบนคอมพิวเตอร์แยกต่างหาก 100 เครื่องและเข้าชมไซต์ของคุณ 20 ครั้งต่อวินาที (5 วินาทีระหว่างการเข้าถึงสำหรับผู้ใช้แต่ละคน / คุกกี้ / บัญชี / ที่อยู่ IP)

คุณมีสองขั้นตอน:

  1. ดูหน้าแรก
  2. การสั่งซื้อ

คุณไม่สามารถวางแคปต์ชาบล็อก # 1 - ที่จะสูญเสียลูกค้าจริง ("อะไรฉันต้องแก้แคปต์ชาทุกครั้งที่ต้องการดู woot ล่าสุด!?")

ดังนั้นกลุ่มเล็ก ๆ ของฉันจึงจับเวลาด้วยกันดังนั้นเราจะได้รับเช็ค 20 ครั้งต่อวินาทีและใครก็ตามที่เห็นการเปลี่ยนแปลงครั้งแรกจะแจ้งเตือนคนอื่น ๆ ทั้งหมด (โดยอัตโนมัติ) ซึ่งจะโหลดหน้าแรกอีกครั้งตามลิงค์คำสั่งและดำเนินการธุรกรรม ( ซึ่งอาจเกิดขึ้นโดยอัตโนมัตินอกจากว่าคุณจะใช้ captcha และเปลี่ยนมันสำหรับทุก wootoff / boc)

คุณสามารถใส่ captcha ไว้หน้า # 2 และในขณะที่คุณไม่ชอบทำนั่นอาจเป็นวิธีเดียวที่จะทำให้แน่ใจว่าแม้ว่าบอทจะดูหน้าแรกผู้ใช้จริงจะได้รับผลิตภัณฑ์

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

ขั้นแรกกำจัดบ็อตธรรมดา

คุณต้องมีไฟร์วอลล์ที่สามารถปรับเปลี่ยนได้ซึ่งจะคอยดูการร้องขอและถ้ามีคนทำสิ่งที่เห็นได้ชัด - การรีเฟรชมากกว่าหนึ่งวินาทีใน IP เดียวกันจากนั้นใช้กลยุทธ์เพื่อทำให้ช้าลง (แพ็คเก็ตดร็อปส่งกลับปฏิเสธหรือ 500 ข้อผิดพลาด ฯลฯ ) )

สิ่งนี้จะทำให้การรับส่งข้อมูลของคุณลดลงและเปลี่ยนแปลงกลยุทธ์ที่ผู้ใช้บอทใช้

ประการที่สองทำให้เซิร์ฟเวอร์เร็วอย่างเห็นได้ชัด

คุณไม่อยากได้ยินเรื่องนี้ ... แต่ ...

ฉันคิดว่าสิ่งที่คุณต้องการคือโซลูชันที่กำหนดเองโดยสมบูรณ์จากล่างขึ้นบน

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

Apache, lighthttpd และอื่น ๆ ล้วนแล้วแต่ยอดเยี่ยมสำหรับการยืดหยุ่น แต่คุณใช้เว็บไซต์วัตถุประสงค์เดียวและคุณต้องสามารถทำได้มากกว่าเซิร์ฟเวอร์ปัจจุบันที่สามารถทำได้ (ทั้งในการจัดการปริมาณการใช้งานและการแก้ไขบอทอย่างเหมาะสม )

ด้วยการให้บริการหน้าเว็บแบบสแตติกส่วนใหญ่ (อัปเดตทุก ๆ 30 วินาทีหรือมากกว่านั้น) บนเซิร์ฟเวอร์ที่กำหนดเองคุณไม่เพียง แต่จะสามารถจัดการจำนวนคำร้องขอและปริมาณการใช้งานได้ 10 เท่า (เพราะเซิร์ฟเวอร์ไม่ได้ทำอะไรอื่นนอกจากรับคำขอ เพจจากหน่วยความจำไปยังบัฟเฟอร์ TCP / IP) แต่จะให้คุณเข้าถึงตัวชี้วัดที่อาจช่วยให้คุณบอตช้าลง ตัวอย่างเช่นโดยการเชื่อมโยงที่อยู่ IP คุณสามารถบล็อกการเชื่อมต่อมากกว่าหนึ่งต่อวินาทีต่อ IP มนุษย์ไม่สามารถไปได้เร็วกว่านั้นและแม้แต่คนที่ใช้ที่อยู่ IP NATED เดียวกันก็จะถูกบล็อกไม่บ่อยนัก คุณต้องการบล็อกช้า - ออกจากการเชื่อมต่อเพียงอย่างเดียวเป็นวินาทีเต็มก่อนที่จะยกเลิกเซสชันอย่างเป็นทางการ สิ่งนี้สามารถป้อนเข้าสู่ไฟร์วอลล์เพื่อให้บล็อกระยะยาวแก่ผู้ที่กระทำผิดอย่างร้ายแรง

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

ข้อสรุป

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

คุณสามารถเพิ่มบล็อกสำหรับบอทแบบง่าย ๆ ซึ่งจะยกระดับบาร์และลดจำนวนคนที่มายุ่งกับมัน นั่นอาจจะเพียงพอ

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

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

ทุกครั้งที่ฉันคิดถึง "อืมแล้วจะทำยังไงดี ... " ฉันสามารถตอบโต้ด้วยกลยุทธ์บอทที่เหมาะสมได้เสมอ

แม้ว่าคุณจะทำให้หน้าแรกเป็น captcha เพื่อไปที่หน้าการสั่งซื้อ ("ปุ่มสั่งซื้อของรายการนี้เป็นสีฟ้าที่มีประกายสีชมพูอยู่ที่ไหนสักแห่งในหน้านี้") บอทก็จะเปิดลิงก์ทั้งหมดบนหน้าและใช้อย่างใดอย่างหนึ่งมา กลับมาพร้อมกับหน้าการสั่งซื้อ นั่นเป็นเพียงวิธีที่จะไม่ชนะ

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

อดัม


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

(ต่อ) ตัวอย่างเช่นหากมีผู้ใช้จริงไม่กี่คนที่นี่และไม่สามารถรับข้อเสนอพิเศษได้จริง ๆ แล้วไม่ใช่ผู้แจกไพ่รายใหญ่ ในระบบรับรองความถูกต้องมันเป็นดีลเลอร์ - คุณไม่ต้องการให้ผู้ใช้ถูกป้องกันไม่ให้เข้าสู่ระบบ
Jens Roland

(ต่อ) สิ่งนี้หมายความว่าคุณสามารถออกแบบระบบ Woot ให้เข้มงวดกว่าการตอบโต้แบบดั้งเดิมของสแปมบอทและด้วยเหตุนี้คุณจึงสามารถป้องกันบอทได้อย่างมีประสิทธิภาพ
Jens Roland

( แต่ตอนนี้ที่ผมได้รับมันความคิดบางอย่างมากขึ้นผมไม่สามารถคิดหาทางว่างานที่จะยังขัดขวาง distributd / บ็อตเน็ต 'โจมตี')
Jens Roland

11

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

แนวคิดอื่นคือถ้าคุณมีปริมาณการขายที่ จำกัด อย่างแท้จริงทำไมคุณไม่เปลี่ยนจากวิธีการมาก่อนได้ก่อน แน่นอนว่าการโฆษณาเป็นส่วนหนึ่งของแผนการตลาดของคุณ

มีตัวเลือกอื่น ๆ อีกมากมายและฉันมั่นใจว่าคนอื่น ๆ จะนึกถึงตัวเลือกที่แตกต่างกัน:

  • คิวการสั่งซื้อ (ระบบสั่งซื้อล่วงหน้า) - สคริปต์บางตัวอาจยังคงอยู่ที่ด้านหน้าของคิว แต่อาจเร็วกว่าที่จะป้อนข้อมูลด้วยตนเอง

  • ระบบล็อตเตอรี่ (ทุกคนที่พยายามสั่งให้เข้าสู่ระบบ) - วิธีนี้ผู้คนที่มีสคริปต์มีโอกาสเดียวกับที่ไม่มี

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

  • การประมูล (เครดิตไปที่ David Schmitt สำหรับสิ่งนี้ความคิดเห็นเป็นของตัวเอง) - ผู้คนยังคงสามารถใช้สคริปต์เพื่อปากซ่อมในนาทีสุดท้าย แต่ไม่เพียง แต่เปลี่ยนโครงสร้างราคาเท่านั้นผู้คนคาดหวังว่าจะต่อสู้กับผู้อื่น . นอกจากนี้คุณยังสามารถทำสิ่งต่าง ๆ เพื่อ จำกัด จำนวนการเสนอราคาในช่วงเวลาที่กำหนดทำให้โทรศัพท์ของผู้คนล่วงหน้าเพื่อรับรหัสการอนุญาต ฯลฯ


1
ขอบคุณ. ดูฉันรู้ว่ามีคนอื่น
lc

ระบบล็อตเตอรี่ใด ๆ ที่เพิ่งได้รับการโหลดมากเกินไปเพื่อเพิ่มโอกาสในความโปรดปรานของบอท
Andy Dent

ไม่ใช่ถ้าคุณ จำกัด ที่อยู่หนึ่งรายการต่อคน / ครัวเรือน / (ทางกายภาพ) ที่อยู่จะไม่
lc

11

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

ฉันคิดว่าต้องใช้ความคิดที่แตกต่าง

  • อย่าพยายามหยุดบอทจากการใช้เว็บไซต์ของคุณ
  • อย่าไปแก้ไขที่ใช้งานได้ทันทีเล่นเกมยาว

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

บันทึกเวลาที่คุณเผยแพร่ข้อเสนอและเวลาที่บัญชีเลือกซื้อ

สิ่งนี้จะช่วยให้คุณบันทึกว่าลูกค้ากำลังซื้อของอย่างรวดเร็วเพียงใด

เปลี่ยนแปลงเวลาของวันที่คุณเผยแพร่ข้อเสนอ

ตัวอย่างเช่นมีหน้าต่าง 3 ชั่วโมงเริ่มต้นในเวลาที่ชัดเจนของวัน (เที่ยงคืน?) เฉพาะบอทและฤาษีเท่านั้นที่จะรีเฟรชหน้าเป็นเวลา 3 ชั่วโมงเพื่อรับออเดอร์ภายในไม่กี่วินาที ไม่เปลี่ยนแปลงเวลาพื้นฐานเพียงขนาดของหน้าต่าง

เมื่อเวลาผ่านไปภาพจะปรากฏ

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

02: คุณสามารถดูเวลาที่ใช้สำหรับข้อเสนอได้เช่นกันหากหน้าต่างนั้นเป็นเวลา 1 ชั่วโมงผู้ซื้อบางรายก่อนหน้านี้จะเป็นมนุษย์ มนุษย์แทบจะไม่รีเฟรชเป็นเวลา 4 ชั่วโมง หากเวลาที่ผ่านไปค่อนข้างสอดคล้องกันระหว่างการประกาศ / ซื้อโดยไม่คำนึงถึงระยะเวลาของหน้าต่างแสดงว่าเป็นบอต หากเวลาเผยแพร่ / ซื้อสั้นสำหรับหน้าต่างขนาดเล็กและใช้เวลานานขึ้นสำหรับหน้าต่างบานใหญ่นั่นถือว่าเป็นฤาษี!

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

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

ประมวลผลคำสั่งในคิว:

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

  1. ใบสั่งซื้อของคุณถูกส่งไปแล้วและอยู่ในคิว
  2. ประมวลผลคำสั่งซื้อของคุณแล้ว
  3. ส่งคำสั่งซื้อของคุณแล้ว

ผู้ใช้คิดว่าพวกเขาอยู่ในคิวที่ยุติธรรม ประมวลผลคิวของคุณทุก ๆ 1 ชั่วโมงเพื่อให้ผู้ใช้ปกติได้สัมผัสกับคิวเพื่อไม่ให้เกิดความสงสัย ประมวลผลคำสั่งซื้อจากบัญชี bot และ hermit เท่านั้นเมื่ออยู่ในคิวสำหรับ "เวลาสั่งซื้อโดยเฉลี่ยของมนุษย์ + x ชั่วโมง" ลดบอทอย่างมีประสิทธิภาพต่อมนุษย์


นั่นหมายความว่าอย่างไร? :-)
Peter Morris

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

10

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

คุณสามารถทำเช่นเดียวกันสำหรับการสั่งซื้อ คุณสามารถทดลองกับการเปลี่ยนแปลงเล็กน้อยเกี่ยวกับฟังก์ชันการทำงาน / ประสิทธิภาพ API จนกว่าคุณจะได้รับผลกระทบที่ต้องการ

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


8

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


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

7

ก่อนอื่นให้ฉันสรุปสิ่งที่เราต้องทำที่นี่ ฉันรู้ว่าฉันแค่ถอดความคำถามเดิม แต่สิ่งสำคัญคือเราต้องได้รับ 100% ตรงนี้เพราะมีคำแนะนำที่ดีมากมายที่ได้รับ 2 หรือ 3 จาก 4 ถูกต้อง แต่เมื่อฉันจะแสดงคุณจะต้อง วิธีการหลายแง่มุมที่ครอบคลุมความต้องการทั้งหมด

ข้อกำหนดที่ 1: กำจัด 'bot slamming':

'การกระแทกอย่างรวดเร็ว' ของหน้าแรกของคุณกำลังส่งผลกระทบต่อประสิทธิภาพการทำงานของไซต์ของคุณและเป็นสาเหตุหลักของปัญหา 'การกระแทก' นั้นมาจากบ็อต IP เดียวและที่คาดคะเนมาจากบอตเน็ต เราต้องการกำจัดทั้งสองอย่าง

ข้อกำหนดที่ 2: อย่ายุ่งกับประสบการณ์ของผู้ใช้:

เราสามารถแก้ไขสถานการณ์บอทได้อย่างมีประสิทธิภาพโดยใช้ขั้นตอนการตรวจสอบที่น่ารังเกียจเช่นการโทรหาผู้ปฏิบัติงานมนุษย์การแก้ปัญหา CAPTCHAs หรือสิ่งที่คล้ายกัน แต่นั่นก็เหมือนกับการบังคับให้ผู้โดยสารเครื่องบินบริสุทธิ์ การจับผู้ก่อการร้ายที่โง่เขลา โอ้รอ - เราทำอย่างนั้นจริง ๆ แต่มาดูกันว่าเราไม่สามารถทำได้บน woot.com หรือไม่

ข้อกำหนดที่ 3: หลีกเลี่ยง 'การแข่งขันทางอาวุธ':

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

ข้อกำหนดที่ 4: การป้องกันบอท 'alarm' บอท:

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


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

  1. ผู้ใช้จำนวนน้อยจะต้องข้ามห่วง
  2. ผู้ใช้จำนวนเล็กน้อยจะไม่สามารถรับข้อเสนอพิเศษได้

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

มาตรการแรก: การควบคุมปริมาณผู้ใช้ที่ใช้:

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

มาตรการที่สอง: การควบคุมปริมาณ IP บางรูปแบบตามที่แนะนำโดยเกือบทุกคน:

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

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

มาตรการที่สาม: ปิดบังเค้นด้วยคำตอบที่แคช:

ด้วยบอตแบบ single-IP ที่มีไฟลุกลามอย่างรวดเร็วเรายังคงต้องจัดการกับบ็อตเดี่ยว-IP ที่ช้าเช่น บอทที่ถูกปรับแต่งเป็นพิเศษเพื่อ 'บินใต้เรดาร์' โดยการเว้นวรรคร้องขอห่างกันเล็กน้อยกว่าการป้องกันปริมาณ

หากต้องการแสดงบอต IP แบบช้าช้าไร้ประโยชน์เพียงใช้กลยุทธ์ที่แนะนำโดย abelenky: แสดงหน้าแคชที่มีความยาว 10 นาทีไปยัง IP ทั้งหมดที่ถูกพบในช่วง 24 ชั่วโมงที่ผ่านมา (หรือมากกว่านั้น) ด้วยวิธีนี้ IP ทุกตัวจะได้รับ 'โอกาส' ต่อวัน / ชั่วโมง / สัปดาห์ (ขึ้นอยู่กับช่วงเวลาที่คุณเลือก) และจะไม่มีความรำคาญใด ๆ เกิดขึ้นกับผู้ใช้งานจริงที่เพิ่งกดปุ่ม 'โหลดซ้ำ' ยกเว้นว่าพวกเขาจะไม่ชนะ ข้อเสนอ

ความงามของวัดนี้คือว่าเป็นยังกระทง 'บอทปลุก' ตราบใดที่พวกเขาไม่ได้มาจากบ็อตเน็ต

(ฉันรู้ว่าคุณอาจต้องการมากกว่านี้หากผู้ใช้จริงได้รับอนุญาตให้รีเฟรชซ้ำแล้วซ้ำอีก แต่ไม่มีวิธีบอกมนุษย์รีเฟรชสแปมจากบอทคำขอส่งสแปมแยกกันโดยไม่มี CAPTCHA หรือคล้ายกัน)

มาตรการที่สี่: reCAPTCHA:

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

แน่นอนว่าจุดที่น่าสนใจคือเมื่อบอตทุกตัวติดอยู่ในเน็ตของคุณในขณะที่ CAPTCHA นั้นมีผู้ใช้งานจริงเพียงเล็กน้อยเท่านั้น

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

มาตรการที่ห้า: อึเหยื่อ:

คริสโตเฟอร์มาฮันมีความคิดที่ฉันชอบ แต่ฉันจะใส่ความคิดที่แตกต่าง ทุกครั้งที่คุณกำลังเตรียมข้อเสนอใหม่ ๆ ให้เตรียมข้อเสนออีกสองข้อไว้เช่นกันซึ่งไม่มีมนุษย์คนใดจะเลือกได้เช่นเดียวกับ Wingate 12mm ราคา $ 20 เมื่อข้อเสนอปรากฏขึ้นที่หน้าให้ใส่ 'ข้อเสนอ' ทั้งสามไว้ในภาพเดียวกันพร้อมตัวเลขที่ตรงกับข้อเสนอแต่ละข้อ เมื่อผู้ใช้ / บอทสั่งสินค้าจริงพวกเขาจะต้องเลือก (ปุ่มตัวเลือก) ซึ่งเสนอให้และเนื่องจากบอทส่วนใหญ่จะเดาได้เพียงสองในสามกรณีบอทจะซื้อไร้ค่า ขยะ.

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

มาตรการที่หก: การควบคุมปริมาณบ็อตเน็ต:

[ลบ]

โอเค ............ ตอนนี้ฉันใช้เวลาส่วนใหญ่คิดถึงเรื่องนี้แล้วลองใช้วิธีที่แตกต่างกัน .... ความล่าช้าทั่วโลก .... โทเค็นที่อิงกับคุกกี้ .. รอคิวการให้บริการ ... 'การควบคุมปริมาณคนแปลกหน้า' .... และมันก็ไม่ทำงาน มันไม่ได้ ฉันรู้เหตุผลหลักว่าทำไมคุณถึงไม่ยอมรับคำตอบใด ๆ เพราะไม่มีใครเสนอวิธีที่จะป้องกันการโจมตีแบบกระจาย / ซอมบี้ / เน็ต / บอตเน็ต .... ดังนั้นฉันจึงอยากจะถอดรหัส ฉันเชื่อว่าฉันถอดรหัสปัญหา botnet สำหรับการตรวจสอบสิทธิ์ในเธรดอื่นอื่นดังนั้นฉันจึงหวังอย่างยิ่งสำหรับปัญหาของคุณเช่นกัน แต่วิธีการของฉันไม่ได้แปลสิ่งนี้ คุณมี IP เท่านั้นที่จะผ่านไปได้และบ็อตเน็ตที่ใหญ่พอจะไม่เปิดเผยตัวเองในการวิเคราะห์ใด ๆ ตามที่อยู่ IP

คุณก็มีแล้ว : มาตรการที่หกของฉันไม่มีค่าเลย ไม่มีอะไร ซิป เว้นแต่ว่า botnet มีขนาดเล็กและ / หรือเร็วพอที่จะติดอยู่ในเค้น IP ปกติฉันไม่เห็นการวัดที่มีประสิทธิภาพเทียบกับ botnets ที่ไม่เกี่ยวข้องกับการตรวจสอบโดยมนุษย์อย่างชัดเจนเช่น CAPTHAs ฉันขอโทษ แต่ฉันคิดว่าการรวมห้ามาตรการข้างต้นเป็นทางออกที่ดีที่สุดของคุณ และคุณอาจทำได้ดีด้วยเคล็ดลับการแคชเพียง 10 นาทีของ abelenky


ระบุไว้เป็นอย่างดี ขอบคุณสำหรับข้อมูลของคุณ
Shawn Miller

ไม่ได้ 3. หมายความว่าคุณกำลังแสดงหน้าเก่าให้กับ AOL ทั้งหมดโดยสมมติว่าบอตสองสามอันมาจากกลุ่ม IP ของ AOL
Andy Dent

@Andy: เฉพาะเมื่อผู้ใช้ AOL ทุกคนใช้ที่อยู่ IP เดียวกันกับที่บอทใช้ในขณะที่สแปม
Jens Roland

6

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

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

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


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

คนธรรมดาที่มาเยี่ยมจะไม่ทำให้เกิดความล่าช้ามีเพียงคนเดียวเท่านั้นที่ร้องขอจำนวนที่ไม่สมเหตุสมผล ความคิดที่เป็นลิ้นเล็กน้อยในแก้ม แต่ฉันสามารถเห็นมันทำงานถ้ากลุ่มเป้าหมายที่จะใช้ในการแฟลชเกมเล็ก ๆ น้อย ๆ :)
พอลดิกสัน

ความคิดความบันเทิง (และใกล้จะเข้าใจผิด) แต่ฉันจะหงุดหงิด (โดยเฉพาะอย่างยิ่งในช่วงของความบ้าคลั่ง Bag Of Canaries) และนั่นจะต้องมีการประมวลผลมากขึ้นบนเซิร์ฟเวอร์ของพวกเขาเพื่อทำการตรวจสอบ (ซึ่งเป็นปัญหาใหญ่) นอกจากนี้บอทยังสามารถระเบิดฟองสบู่ได้อีกด้วย คุณต้องเปลี่ยนกฎบ่อยๆ
Groxx

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

นอกจากนี้อย่าลืมแนวคิดที่จะ จำกัด ปริมาณการใช้งาน หน้าอาจจะบอกว่า "เรากำลังยุ่งมากถ้าคุณอยู่ในรีบเล่นเกมนี้เป็นเวลา 30 วินาทีหรือลองอีกครั้งในไม่กี่นาที ...
พอลดิกสัน

5

มีโซลูชันอื่น ๆ / ดีกว่าสองสามโพสต์แล้ว แต่เพื่อความสมบูรณ์ฉันคิดว่าฉันพูดถึงเรื่องนี้:

หากความกังวลหลักของคุณคือการเสื่อมประสิทธิภาพและคุณกำลังดูการตอกที่แท้จริงคุณก็ต้องรับมือกับการโจมตี DoS และคุณควรพยายามจัดการกับมัน วิธีการหนึ่งที่ใช้กันทั่วไปคือการทิ้งแพ็กเก็ตจาก IP ในไฟร์วอลล์หลังจากมีการเชื่อมต่อจำนวนมากต่อวินาที / นาที / ฯลฯ ตัวอย่างเช่นไฟร์วอลล์ Linux มาตรฐาน iptables มีฟังก์ชั่นการจับคู่การทำงานมาตรฐาน 'hashlimit' ซึ่งสามารถใช้เชื่อมโยงคำขอการเชื่อมต่อต่อหน่วยเวลากับที่อยู่ IP

แม้ว่าคำถามนี้อาจจะเหมาะสำหรับ SO-derivate ถัดไปที่กล่าวถึงใน SO-podcast ล่าสุด แต่ก็ยังไม่ได้เปิดตัวดังนั้นฉันเดาว่ามันโอเคที่จะตอบ :)

แก้ไข:
ตามที่ระบุไว้โดย novatrust ยังคงมี ISP ที่ไม่ได้กำหนด IP ให้กับลูกค้าของพวกเขาดังนั้นอย่างมีประสิทธิภาพลูกค้าสคริปต์ของ ISP ดังกล่าวจะปิดการใช้งานลูกค้าทั้งหมดจาก ISP นั้น


น่าเสียดายที่ผู้ให้บริการอินเทอร์เน็ตบางรายมีที่อยู่ IP การออกจากที่ใช้ร่วมกัน ตัวอย่างเช่น AOL มีคอลเลกชันที่ จำกัด ของ IP ที่สมาชิกปรากฏภายใต้: webmaster.info.aol.com/proxyinfo.html โซลูชันของคุณจะกำหนดจำนวนผู้ใช้ที่ จำกัด สำหรับ ISP จำนวนมาก
Robert Venables

ว้าวฉันกลัวมาก สิ่งนี้ยังคงเกิดขึ้น?
falstro

วัวศักดิ์สิทธิ์ ฉันเดาว่า AOL จะไม่สามารถเข้าถึงเว็บไซต์ของฉันได้
Karl

5

เขียน reverse-proxy บนเซิร์ฟเวอร์ apache หน้าแอปพลิเคชันของคุณซึ่งใช้ Tarpit (Wikipedia Article)เพื่อลงโทษบอท มันจะจัดการรายการที่อยู่ IP ที่เชื่อมต่อในไม่กี่วินาทีที่ผ่านมา คุณตรวจพบคำขอจำนวนมากจากที่อยู่ IP เดียวจากนั้นเลื่อนการร้องขอเหล่านั้นออกไปก่อนที่จะชี้แจง

แน่นอนว่ามนุษย์หลายคนสามารถมาจากที่อยู่ IP เดียวกันหากพวกเขาใช้การเชื่อมต่อเครือข่าย NAT แต่ไม่น่าเป็นไปได้ที่มนุษย์จะคำนึงถึงเวลาตอบสนองของคุณที่จะเป็น 2mS ถึง 4mS (หรือแม้แต่ 400mS) ในขณะที่บอทจะถูกขัดขวาง โดยความล่าช้าที่เพิ่มขึ้นค่อนข้างเร็ว


4
  1. ระบุฟีด RSS เพื่อไม่ให้แบนด์วิดธ์ของคุณหมด
  2. เมื่อซื้อให้ทุกคนรอเวลาแบบสุ่ม สูงสุด 45 วินาทีหรือบางอย่างขึ้นอยู่กับสิ่งที่คุณกำลังมองหา ข้อ จำกัด ด้านเวลาของคุณคืออะไร
  3. ให้ทุกคน 1 นาทีเพื่อใส่ชื่อของพวกเขาสำหรับการวาดภาพแล้วเลือกคนแบบสุ่ม ฉันคิดว่านี่เป็นวิธีที่ยุติธรรมที่สุด
  4. ตรวจสอบบัญชี (รวมบางครั้งในเซสชั่นและเก็บไว้หรือไม่) และเพิ่มความล่าช้าในบัญชีที่ดูเหมือนว่าพวกเขาจะต่ำกว่าเกณฑ์ความเร็วของมนุษย์ อย่างน้อยก็จะทำให้บอทถูกโปรแกรมให้ช้าลงและแข่งขันกับมนุษย์

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

หากดูเหมือนภาพวาดเขาก็ต้องจัดการกับกฎหมายการพนัน ไม่คุ้มค่า
jmucchiello

4

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

หากเราสามารถยอมรับหลักฐานว่าเราสามารถกำหนดค่าใช้จ่ายสำหรับผู้เยี่ยมชม woot ใหม่เอี่ยมบนหน้าแรกของเขาฉันคิดว่าฉันมีทางออกที่เป็นไปได้ สำหรับการขาดชื่อที่ดีกว่าฉันจะเรียกวิธีนี้อย่างหลวม ๆ ว่า "การเยี่ยมชม DMV"

สมมติว่ามีตัวแทนจำหน่ายรถยนต์ที่ให้บริการรถใหม่ที่แตกต่างกันในแต่ละวันและในบางวันคุณสามารถซื้อรถสปอร์ตที่แปลกใหม่ในราคา $ 5 ต่อคัน (จำกัด 3) และค่าใช้จ่ายปลายทาง $ 5

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

ดังนั้นผู้เข้าชมครั้งแรก (เรียกเขาว่าบ๊อบ) กับตัวแทนจำหน่ายรถคันนี้ถูกปฏิเสธไม่ให้เข้าและถูกส่งไปยังสำนักงาน DMV (ซึ่งตั้งอยู่ในทำเลสะดวกถัดจากประตูถัดไป) เพื่อขอรับใบขับขี่

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

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

ใบขับขี่ในโลกนี้แทบจะเป็นไปไม่ได้ที่จะปลอมแปลง

การเยี่ยมชม DMV เกี่ยวข้องกับการขอรับแบบฟอร์มใบสมัครเป็นครั้งแรกที่คิว "เริ่มที่นี่" บ๊อบจะต้องนำแอปพลิเคชันที่เสร็จสมบูรณ์ไปที่หน้าต่าง # 1 ซึ่งข้าราชการคนแรกของหลายคนจะใช้แอปพลิเคชันของเขาประมวลผลและหากทุกอย่างเป็นไปตามลำดับประทับตราแอปพลิเคชันสำหรับหน้าต่างและส่งเขาไปที่หน้าต่างถัดไป บ็อบไปจากหน้าต่างหนึ่งไปอีกหน้าต่างรอให้แต่ละขั้นตอนของการสมัครผ่านไปจนในที่สุดเขาก็ถึงจุดจบและได้รับใบขับขี่ของเขา

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

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

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

คำอธิบายทางเทคนิคเล็กน้อยเพิ่มเติม:

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

วิธีนี้อาจต้องใช้การประมวลผลฝั่งไคลเอ็นต์ AJAX-y ผู้เข้าชมใหม่ที่ตบแบรนด์จะได้รับ "ยินดีต้อนรับผู้ใช้ใหม่!" หน้าเต็มของข้อความและกราฟิกที่ (โดยการควบคุมปริมาณที่เหมาะสมฝั่งเซิร์ฟเวอร์) ใช้เวลาไม่กี่วินาทีในการโหลดอย่างสมบูรณ์ ขณะที่สิ่งนี้เกิดขึ้น (และผู้เข้าชมกำลังยุ่งอยู่กับการอ่านหน้าต้อนรับ) โทเค็นการระบุของเขากำลังถูกประกอบขึ้นอย่างช้าๆ

สมมติว่าสำหรับการอภิปรายโทเค็น (aka "ใบขับขี่) ประกอบด้วย 20 ชิ้นเพื่อให้ได้รับแต่ละอันต่อเนื่องรหัสฝั่งไคลเอ็นต์จะต้องส่งคำขอที่ถูกต้องไปยังเซิร์ฟเวอร์เซิร์ฟเวอร์ประกอบด้วยการหน่วงเวลาโดยเจตนา (สมมติว่า 200 มิลลิวินาที) ก่อนที่จะส่งชิ้นถัดไปพร้อมกับ 'ตราประทับ' ที่จำเป็นในการทำคำขอก้อนถัดไป (เช่นแสตมป์ที่จำเป็นต้องไปจากหน้าต่าง DMV หนึ่งไปยังถัดไป) ทั้งหมดบอกว่าประมาณ 4 วินาทีจะต้องผ่านไปให้เสร็จสิ้น chunk-challenge-response-chunk-challenge-response -...- กระบวนการ chunk-challenge-response-completion

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

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

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

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


4

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

นี่คือความคิดที่จะทำให้การเขียนบอตยากขึ้น:

  • ต้องใช้ฟังก์ชันจาวาสคริปต์ Javascript ทำให้ความเจ็บปวดในการเขียนบอทมากขึ้น อาจต้องมี captcha หากพวกเขาไม่ได้เรียกใช้จาวาสคริปต์เพื่ออนุญาตให้ผู้ใช้ที่ไม่ใช่จาวาสคริปต์ที่แท้จริง (ขั้นต่ำ)

  • เวลาที่การกดแป้นพิมพ์เมื่อพิมพ์ลงในแบบฟอร์ม (อีกครั้งผ่านทาง javascript) ถ้าไม่ใช่มนุษย์ก็ให้ปฏิเสธ มันเป็นความเจ็บปวดที่เลียนแบบการพิมพ์ของมนุษย์ในบอท

  • เขียนรหัสของคุณเพื่ออัปเดต ID ฟิลด์ของคุณทุกวันด้วยค่าสุ่มใหม่ สิ่งนี้จะบังคับให้พวกเขาอัพเดทบอททุกวันซึ่งเป็นความเจ็บปวด

  • เขียนรหัสของคุณเพื่อสั่งซื้อฟิลด์ของคุณใหม่ทุกวัน (เห็นได้ชัดว่าในบางวิธีที่ไม่สุ่มให้กับผู้ใช้ของคุณ) หากพวกเขาใช้คำสั่งซื้อภาคสนามสิ่งนี้จะนำพาพวกเขาขึ้นมาและบังคับการบำรุงรักษารายวันให้กับรหัส bot

  • คุณสามารถก้าวต่อไปและใช้เนื้อหา Flash ได้ Flash เจ็บปวดอย่างยิ่งที่จะเขียนบอทต่อต้าน

โดยทั่วไปถ้าคุณเริ่มคิดว่าไม่ป้องกันพวกเขา แต่ทำให้มันทำงานได้มากขึ้นคุณอาจบรรลุเป้าหมายที่คุณต้องการ


บางครั้งมนุษย์มีส่วนร่วมในการพิมพ์ที่ไม่ใช่มนุษย์ - - ตัวเติมแบบฟอร์ม
Loren Pechtel

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

4

ติดหน่วงเวลา 5 นาทีสำหรับประกาศผลิตภัณฑ์ทั้งหมดสำหรับผู้ใช้ที่ไม่ลงทะเบียน ผู้ใช้ทั่วไปจะไม่สังเกตเห็นสิ่งนี้และผู้ใช้ที่ไม่ได้ตั้งใจจะลงทะเบียน แต่อย่างใด


3

ฉันไม่เห็นภาระอันยิ่งใหญ่ที่คุณเรียกร้องจากการตรวจสอบ IP ที่เข้ามา ในทางตรงกันข้ามฉันได้ทำโครงการสำหรับหนึ่งในลูกค้าของฉันซึ่งวิเคราะห์บันทึกการเข้าถึง HTTP ทุกห้านาที (อาจเป็นแบบเรียลไทม์ แต่เขาไม่ต้องการสิ่งนั้นด้วยเหตุผลบางอย่างที่ฉันไม่เคยเข้าใจอย่างสมบูรณ์) และ สร้างกฎไฟร์วอลล์เพื่อบล็อกการเชื่อมต่อจากที่อยู่ IP ใด ๆ ที่สร้างคำขอมากเกินไปเว้นแต่ที่อยู่จะได้รับการยืนยันว่าเป็นของเครื่องมือค้นหาที่ถูกต้องตามกฎหมาย (google, yahoo และอื่น ๆ )

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

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


3

แนวทางของฉันคือการมุ่งเน้นไปที่การแก้ปัญหาที่ไม่ใช้เทคโนโลยี (มิฉะนั้นคุณจะเข้าสู่การแข่งขันอาวุธที่คุณจะสูญเสียหรืออย่างน้อยก็ใช้เวลาและเงินเป็นจำนวนมาก) ฉันจะมุ่งเน้นไปที่ส่วนการเรียกเก็บเงิน / การจัดส่ง - คุณสามารถหาบอทได้โดยการค้นหาการจัดส่งหลายครั้งไปยังที่อยู่เดียวกันหรือโดยการเรียกเก็บเงินหลายครั้งในวิธีการชำระเงินเดียว คุณสามารถทำสิ่งนี้ข้ามหลาย ๆ สัปดาห์ได้ดังนั้นหากผู้ใช้ได้รับไอเท็มก่อนหน้า (โดยการตอบกลับอย่างรวดเร็วจริงๆ) เขาอาจได้รับ "แต้มต่อ" ในเวลานี้

สิ่งนี้จะมีผลข้างเคียง (เป็นประโยชน์ฉันคิดว่า แต่ฉันผิดตลาดที่ฉลาดสำหรับกรณีของคุณ) อาจขยายวงคนที่โชคดีและซื้อ woot


3

โซลูชันทางเทคนิคล้วนได้รับการเสนอ ฉันจะแนะนำอีกมุมมองหนึ่งของปัญหา

ตามที่ผมเข้าใจมันบอทจะตั้งขึ้นโดยคนอย่างแท้จริงพยายามที่จะซื้อกระเป๋าที่คุณกำลังขาย ปัญหาคือ -

  1. คนอื่นที่ไม่ใช้บอทควรได้รับโอกาสซื้อและคุณจะได้รับกระเป๋าในจำนวน จำกัด
  2. คุณต้องการดึงดูดคนมายังเว็บไซต์ของคุณและเพียงแค่ขายกระเป๋า

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

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

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

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

ในสาระสำคัญสิ่งที่ฉันแนะนำคือพยายามมองปัญหาว่าเป็นสังคมออนไลน์ไม่ใช่ปัญหาทางเทคนิค

Asaf


2

ตัวแทนผู้ใช้บล็อกเวลาที่ร้องขอจำนวนมากต่อนาที เช่นหากคุณมีคนขอหน้าทุก ๆ 5 วินาทีเป็นเวลา 10 นาทีพวกเขาอาจไม่ใช่ผู้ใช้ ... แต่มันอาจเป็นเรื่องยากที่จะทำให้ถูกต้อง

หากพวกเขาเริ่มการแจ้งเตือนให้เปลี่ยนเส้นทางทุกคำขอไปยังหน้าแบบสแตติกที่มี DB-IO น้อยที่สุดเท่าที่จะเป็นไปได้พร้อมกับข้อความแจ้งให้พวกเขารู้ว่าพวกเขาจะได้รับอนุญาตอีกครั้งใน X นาที

เป็นสิ่งสำคัญที่จะเพิ่มว่าคุณควรใช้สิ่งนี้กับคำขอสำหรับหน้าและละเว้นคำขอทั้งหมดสำหรับสื่อ (js, รูปภาพ, ฯลฯ )


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

หากคุณใช้การตรวจสอบ IP ด้วยตัวคุณเอง (เช่นในฐานข้อมูลของคุณจากสคริปต์ PHP หรืออะไรก็ตาม) มันจะค่อนข้างแพง รับไฟร์วอลล์เพื่อทำเพื่อคุณและกลายเป็นไปได้มากขึ้น
rmeador

rmeador: ดูเหมือนว่าเป็นการยากที่จะตรวจสอบว่าคำขอนั้นสำหรับ HTML หรือสื่ออื่น ๆ หรือไม่ หากคุณมีสิ่งภายนอก 20 รายการบนหน้าเว็บคุณกำลังดูคำขออย่างน้อย 21 รายการสำหรับผู้ใช้ใหม่ใน 1-2 วินาที
Oli

2

การป้องกัน DoS จะเอาชนะ # 2 ของเป้าหมายของ @davebug ที่กล่าวไว้ข้างต้น "รักษาไซต์ด้วยความเร็วที่ไม่ทำให้บ็อตช้าลง" แต่คงไม่จำเป็นต้องแก้ # 1, "ขายไอเท็มให้กับมนุษย์ที่ไม่ใช่สคริปต์"

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


2

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


2

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

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

ยิ่งไปกว่านั้นหากข้อเสนอนั้นสามารถปฏิเสธได้ จากนั้นคุณยังสามารถทำข้อเสนอบนเซิร์ฟเวอร์มารยาท แต่เมื่อบอทกรอกแบบฟอร์มกล่าวว่า "ขออภัยคุณไม่เร็วพอ" :) จากนั้นพวกเขาจะคิดว่าพวกเขายังคงอยู่ในเกม


2

คุณจะรู้ได้อย่างไรว่ามีสคริปเตอร์วางคำสั่งซื้อ?

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

หากคุณมีวิธีตอบคำถามนี้แสดงว่าคุณมีชุดคุณลักษณะที่คุณสามารถใช้เพื่อกรองสแครปเตอร์


2

ลองหันปัญหาไปที่หัวของมัน - คุณมีบอทที่ซื้อของที่คุณต้องการให้คนซื้อจริง ๆ แล้วทำอย่างไรกับโอกาสที่บอทจะซื้อของที่คุณไม่ต้องการให้ซื้อของจริง

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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.