การป้องกันการขูดไซต์

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

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

ข้อมูล paginated ที่ถูกบีบอัด

หากคุณมีข้อมูลเป็นส่วนใหญ่และคุณกำลังแยกส่วนข้อมูลของคุณโดยการใส่หมายเลขอื่นลงในตอนท้ายของ URL นั่นคือ http://www.domain.com/category/programming/2 - จากนั้นคุณจะทำ งานของโปรแกรมรวบรวมข้อมูลที่ง่ายกว่ามาก ปัญหาแรกคือในรูปแบบที่สามารถระบุตัวได้ง่ายดังนั้นการตั้งค่าของขูดหลวมบนหน้าเว็บเหล่านี้เป็นเรื่องง่ายเช่นวงกลม ปัญหาที่สองไม่ว่าจะเป็น URL ของหน้าเว็บที่ตามมาในหมวดหมู่มากกว่าที่จะเป็นไปได้ว่าจะมีลิงก์ถัดไปและหน้าที่เชื่อมโยงไปก่อนหน้านี้

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

สุ่มออกเทมเพลต

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

HoneyPot

นี้สวยเรียบร้อยในความเรียบง่ายของ ฉันได้พบกับวิธีการนี้ในหลาย ๆ หน้าเกี่ยวกับการป้องกันการขูดไซต์

  • สร้างไฟล์ใหม่บนเซิร์ฟเวอร์ของคุณที่ชื่อว่า gotcha.html
  • ในไฟล์ robots.txt ของคุณให้เพิ่มข้อมูลต่อไปนี้:
    User-agent: *
    ไม่อนุญาต: /gotcha.html
    นี้จะบอกหุ่นยนต์และแมงมุมออกมีการจัดทำดัชนีเว็บไซต์ของคุณเพื่อทำดัชนีไฟล์ gotcha.html โปรแกรมรวบรวมข้อมูลเว็บแบบปกติจะเคารพความประสงค์ของไฟล์ robots.txt และไม่สามารถเข้าถึงไฟล์นั้นได้ Google และ Bing คุณอาจต้องการใช้ขั้นตอนนี้และรอ 24 ชั่วโมงก่อนที่จะไปที่ขั้นตอนถัดไป เพื่อให้มั่นใจว่าโปรแกรมรวบรวมข้อมูลจะไม่ถูกบังโดยบังเอิญจากการที่มีการรวบรวมข้อมูลระหว่างกลางเมื่อคุณอัปเดตไฟล์ robots.txt ของคุณ
  • วางลิงก์ไปที่ gotcha.html บางแห่งในเว็บไซต์ของคุณ ไม่ว่าที่ไหน ผมขอแนะนำในส่วนท้าย แต่ให้แน่ใจว่าลิงก์นี้ไม่ปรากฏใน CSS แสดง: ไม่มี;
  • ตอนนี้ล็อก IP / ข้อมูลทั่วไปของ perp ที่เข้าเยี่ยมชมหน้านี้และบล็อกพวกเขา อีกวิธีหนึ่งคือคุณอาจมีสคริปต์เพื่อให้ข้อมูลที่ไม่ถูกต้องและเป็นขยะ หรืออาจเป็นข้อความส่วนตัวที่ดีจากคุณไปยังพวกเขา

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

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

เขียนข้อมูลลงในภาพได้ทันที

ค้นหาเขตข้อมูลขนาดเล็กไม่จำเป็นต้องเป็นสตริงที่ยาวมากเพราะอาจทำให้การจัดรูปแบบหน้าทำได้ยากขึ้น ส่งข้อมูลนี้ภายในภาพฉันรู้สึกค่อนข้างมั่นใจว่ามีวิธีการในภาษาเขียนโปรแกรมทุกภาษาเพื่อเขียนข้อความลงในรูปภาพแบบไดนามิก (ใน php, imagettftext) นี่อาจเป็นผลดีที่สุดกับค่าตัวเลขเนื่องจากตัวเลขมีความได้เปรียบด้าน SEO ที่ไม่สำคัญมากนัก

ทางเลือก

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

อย่าทำผิดพลาดนี้

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

ดูเพิ่มเติมที่