Anonim

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

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

ข้อมูลเลขหน้า Ajaxified

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

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

สุ่มเอาท์พุทเทมเพลต

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

HoneyPot

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

  • สร้างไฟล์ใหม่บนเซิร์ฟเวอร์ของคุณชื่อ gotcha.html
  • ในไฟล์ robots.txt ของคุณเพิ่มสิ่งต่อไปนี้:
    ตัวแทนผู้ใช้: *
    ไม่อนุญาต: /gotcha.html

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

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

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

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

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

ทางเลือก

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

อย่าทำผิดพลาด

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

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