จะเป็นพลเมืองที่ดีได้อย่างไรเมื่อรวบรวมข้อมูลเว็บไซต์?


83

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

นอกเหนือจากการให้เกียรติrobots.txtมีกฎหรือแนวทางปฏิบัติเป็นลายลักษณ์อักษรหรือไม่เป็นลายลักษณ์อักษรที่ฉันควรจะปฏิบัติตามเพื่อ (ก) หลีกเลี่ยงการปรากฏตัวที่เป็นอันตรายและอาจถูกแบนและ (b) ไม่ทำให้เกิดปัญหาใด ๆ สำหรับเจ้าของเว็บไซต์ / เว็บมาสเตอร์

ตัวอย่างบางอย่างที่ฉันสามารถนึกได้ซึ่งอาจจะสำคัญหรือไม่สำคัญ:

  • จำนวนการร้องขอแบบขนาน
  • เวลาระหว่างคำขอ
  • เวลาระหว่างการรวบรวมข้อมูลทั้งหมด
  • หลีกเลี่ยงการเชื่อมโยงที่อาจเป็นอันตราย (ไม่ต้องการเป็นSpider of Doom - แต่ใครจะรู้ว่านี่เป็นประโยชน์จริง ๆ )

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


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

คำตอบ:


85

นอกเหนือจากการเชื่อฟัง robots.txt ให้เชื่อฟังnofollowและnoindexใน<meta>องค์ประกอบและลิงก์:

  • มีหลายคนที่เชื่อว่า robots.txt ไม่ใช่วิธีที่เหมาะสมในการบล็อกการจัดทำดัชนีและเนื่องจากมุมมองดังกล่าวได้สั่งให้เจ้าของไซต์จำนวนมากเชื่อมั่นใน<meta name="robots" content="noindex">แท็กเพื่อบอกให้โปรแกรมรวบรวมข้อมูลเว็บไม่ทำดัชนีหน้าเว็บ

  • หากคุณพยายามสร้างกราฟของการเชื่อมต่อระหว่างเว็บไซต์ (สิ่งที่คล้ายกับ PageRank) (และ<meta name="robots" content="nofollow">) ควรจะระบุว่าเว็บไซต์ต้นทางไม่เชื่อถือไซต์ปลายทางเพียงพอที่จะให้การรับรองที่เหมาะสม ดังนั้นในขณะที่คุณสามารถจัดทำดัชนีเว็บไซต์ปลายทางได้คุณไม่ควรเก็บความสัมพันธ์ระหว่างเว็บไซต์ทั้งสองไว้

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

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

  • หยุดการรวบรวมข้อมูลเว็บไซต์เมื่อคุณตรวจพบว่าคุณถูกบล็อก: 403 / 401s บนหน้าเว็บที่คุณรู้ว่าทำงานการควบคุมปริมาณเวลานอก ฯลฯ
  • หลีกเลี่ยงการรวบรวมข้อมูลที่ละเอียดถี่ถ้วนในช่วงเวลาสั้น ๆ : รวบรวมข้อมูลส่วนหนึ่งของเว็บไซต์และกลับมาใหม่ในภายหลัง (ไม่กี่วันต่อมา) เพื่อรวบรวมข้อมูลส่วนอื่น อย่าทำการร้องขอแบบขนาน
  • หลีกเลี่ยงการรวบรวมข้อมูลในพื้นที่ที่มีความละเอียดอ่อนเช่น URL /admin/ภายใน

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

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

Aarobot Crawler 0.9 created by John Doe. See http://example.com/aarobot.html for more information.

ไหนhttp://example.com/aarobot.htmlจะอธิบายสิ่งที่คุณกำลังพยายามที่จะบรรลุและทำไมคุณไม่ได้เป็นภัยคุกคาม หน้านั้นควรมีบางสิ่ง:

  • ข้อมูลเกี่ยวกับวิธีการติดต่อคุณโดยตรง
  • ข้อมูลเกี่ยวกับสิ่งที่รวบรวมรวบรวมและทำไมมันรวบรวม
  • ข้อมูลเกี่ยวกับวิธีการยกเลิกและมีการรวบรวมข้อมูลใด ๆ

สิ่งสุดท้ายคือกุญแจสำคัญ: การเลือกไม่รับที่ดีเป็นเหมือน Money Back Guarantee ™และให้คะแนนค่าความนิยมที่ไม่สมเหตุสมผล ควรมีมนุษยธรรม: ขั้นตอนง่าย ๆ เดียว (ทั้งที่อยู่อีเมลหรือแบบฟอร์ม) และครอบคลุม (ไม่มี "gotchas": การเลือกไม่ใช้หมายความว่าคุณจะหยุดรวบรวมข้อมูลโดยไม่มีข้อยกเว้น)


18
+1 ขนาดใหญ่สำหรับคำแนะนำในการใส่ข้อมูลที่ชัดเจนใน User-Agent ฉันมีหน้าที่เก็บข้อมูลบันทึกการใช้เว็บเซิร์ฟเวอร์เพื่อหาว่าใครเป็นคนสร้างเว็บไซต์ใหญ่และไม่สนุกเลยที่จะพยายามตามหาคนที่ใช้สไปเดอร์ที่คลุมเครือ
Carson63000

4
มันเป็นเรื่องธรรมดามากที่จะนำ URL (+http://example.com/aarobot.html)ในแบบฟอร์ม ฉันไม่รู้ว่าจุดประสงค์ของ+เครื่องหมายคืออะไรที่นี่ แต่ฉันเห็นมันบ่อยครั้ง Web-Sniffer ทำเช่นนั้นและอื่น ๆ อีกมากมาย
TRiG

นี่เป็นข้อมูลที่ดี แต่ฉันสับสนในสิ่งหนึ่ง: คุณพูดถึงrel="noindex"ราวกับว่าเป็น<a>แอตทริบิวต์ แต่หน้าเว็บที่คุณเชื่อมโยงเพื่ออธิบายเป็นส่วนหนึ่งของแอตทริบิวต์<meta>ของแท็ก contentมันเป็นทั้งสองอย่างหรือว่าเป็นคำผิดในคำตอบหรือไม่
Aaronaught

1
"SEO เป็นศิลปะมากกว่าวิทยาศาสตร์จริง" - ไม่จริง หากคุณเป็นโปรแกรมเมอร์เชิงสถิติ SEO นั้นมีความสามารถในการรู้จำและคณิตศาสตร์น้อยกว่า ผู้สำเร็จการศึกษาคณิตศาสตร์ที่มีความเชี่ยวชาญในการเขียนโปรแกรมหรือโปรแกรมเมอร์ที่มีทักษะในวิชาคณิตศาสตร์นั้นเป็นที่ต้องการในอุตสาหกรรมการรวบรวมสถานะข้อมูลบนเว็บ
שינתיאאבישגנת


32

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

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

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

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

  • ลบ
  • เอาออก
  • ปรับปรุง
  • แก้ไข
  • แก้ไข

ไม่ได้โง่เขลา แต่บางครั้งคุณก็ไม่สามารถป้องกันผู้คนจากการเรียนรู้วิธีที่ยากลำบาก;)


3
คำแนะนำที่ดีเกี่ยวกับ "การแบ่งปันความรัก" - ไม่เคยคิดมาก่อนเลยถึงแม้ว่ามันจะดูเหมือนชัดเจนในการหวนกลับ
Aaronaught

คำตอบของคุณจะเกือบจะสมบูรณ์แบบถ้าคุณพูดถึง robots.txt;)
deadalnix

7
@deadalnix แต่robots.txtถูกกล่าวถึงแล้วในคำถามและอาจถูกนำมาสันนิษฐาน
TRiG

20

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

  • เว็บไซต์ช้าหรือไม่ รวบรวมข้อมูลช้าลงดังนั้นคุณจะไม่ได้ DDOS มันเร็วไหม คลานอีกเล็กน้อยแล้ว!

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

  • รับ 404 มากมาย? (โปรดจำไว้ว่าหน้าเว็บแฟนซีของเรา 404 หน้าใช้เวลาเซิร์ฟเวอร์ด้วย!) หลีกเลี่ยงการรวบรวมข้อมูล URL ด้วยเส้นทางนั้นในตอนนี้เพราะบางทีอาจมีทุกอย่างที่ขาดหายไป ถ้าfile001.html- file005.htmlไม่อยู่ที่นั่นฉันพนันว่าคุณดอลลาร์ไปโดนัทfile999.htmlไม่ได้! หรืออาจลดเปอร์เซ็นต์ของเวลาที่คุณดึงข้อมูลอะไรก็ได้ในเส้นทางนั้น

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

ซอฟต์แวร์รวบรวมข้อมูลอัจฉริยะตอบสนองต่อไซต์เป้าหมายที่สัมผัสอยู่


19

บางคนพูดถึงมนต์บางส่วน แต่ขอเพิ่มอีกหน่อย

ให้ความสนใจกับประเภทและขนาดของไฟล์ อย่าดึงไบนารีขนาดใหญ่เหล่านี้

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

ขอ gzip (บีบอัดได้ทันที) เมื่อมีให้

จำกัดความลึกหรือตรวจสอบการเรียกซ้ำ (หรือทั้งสองอย่าง)

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

อย่าสร้างดัชนีหน้า 404 เอ็นจิ้นที่โม้ดัชนีที่ใหญ่ที่สุดทำเช่นนี้และได้รับความเกลียดชังที่สมควรได้รับในการแลกเปลี่ยน

นี่อาจเป็นเรื่องยุ่งยาก แต่พยายามตรวจสอบฟาร์มที่มีการทำโหลดบาลานซ์ ถ้า v329.host.com/pages/article.php?99999 ให้ผลตอบแทนเหมือนกับ v132.host.com/pages/article.php?99999 อย่าคัดลอกรายชื่อเซิร์ฟเวอร์ทั้งหมดจาก v001.host.com จนถึง v999 host.com


กรณีมุมสำคัญ!
M. Dudley

ทุกวันนี้คุณสามารถตรวจจับเนื้อหาที่ซ้ำกันโดยเจตนา (เช่นฟาร์มโหลดบาลานซ์) โดยการตรวจสอบแท็กบัญญัติ
Brian

4

ฉันจะเพิ่มสิ่งเล็กน้อย

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

แน่นอนว่าสิ่งนี้จะขึ้นอยู่กับว่าคุณกำลังจัดเก็บข้อมูลของประเทศใด ในกรณีที่มีปัญหากับพระราชบัญญัติ US Patriot Act กับ Data Protection Directive ของสหภาพยุโรป บทสรุปผู้บริหารของปัญหาคือ บริษัท สหรัฐต้องให้ข้อมูลของพวกเขาเช่น FBI หากถูกถามโดยไม่แจ้งให้ผู้ใช้ทราบถึงจุดที่ Data Protection Directive ระบุว่าผู้ใช้จะต้องได้รับการแจ้งให้ทราบ Se http://www.itworld.com/government/179977/eu-upset-microsoft-warning-about-us-access-eu-cloud


2
"ฉันรู้ว่าคุณเขียนว่าเป็นเว็บไซต์สาธารณะดังนั้นอาจไม่มีลิขสิทธิ์" ทุกเว็บไซต์บนอินเทอร์เน็ตเป็นสาธารณะและทุกเว็บไซต์มีลิขสิทธิ์เว้นแต่จะระบุไว้เป็นอย่างอื่นอย่างชัดเจน
Gavin Coates

3

โทรหา webcrawler ของคุณที่เกี่ยวข้องกับชื่อของคุณ นี้เป็นสิ่งสำคัญ. เครื่องมือวิเคราะห์และสิ่งที่คล้ายกันมองหาสิ่งที่จะเชื่อมโยงคุณเข้ากับ ... spider ;)

วิธีที่ฉันเห็นว่าทำผ่านทางส่วนหัวของ User-Agent


ฉันคิดว่ามันมักจะเป็น "บอท" หรือ "หุ่นยนต์" - ฉันรู้ว่า Google คือ Googlebot
Aaronaught

จุดดี. ตราบใดที่มันสามารถโดดเด่น อาจมีโพสต์เกี่ยวกับการวางเค้าโครงเหล่านั้น
jcolebrand

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