Як бути хорошим громадянином під час сканування веб-сайтів?


83

Я буду розробляти певну функціональність, яка сканує різні загальнодоступні веб-сайти та обробляє / агрегує дані на них. Нічого не зловісного, як пошук адрес електронної пошти - насправді це щось, що насправді може залучати додатковий трафік на їхні сайти. Але я відволікаюсь.

Окрім вшанування robots.txt, чи є якісь правила чи рекомендації, написані чи ненаписані, яких я повинен дотримуватися, щоб (a) уникнути появи зловмисних та потенційно заборонених та (b) не викликати проблем у власників сайтів / веб-майстрів?

Деякі приклади, які я можу придумати, а можуть і не мають значення:

  • Кількість паралельних запитів
  • Час між запитами
  • Час між цілими скануваннями
  • Уникання потенційно руйнівних зв’язків (не хочу бути Павуком долі - але хто знає, чи це навіть практично)

Це справді просто плювання-куля; чи є перевірена мудрість, яка широко застосовується для тих, хто має намір написати або використовувати павука?


1
Хоча відповіді, наведені нижче, дають чудову відповідь про те, як з повагою сканувати вміст, будь ласка, пам’ятайте про прийнятне використання зазначеного вмісту, як тільки ви його сканували. Перепублікування їх повністю чи частково може бути порушенням авторських прав.
Гевін Коутс

Відповіді:


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/401 на сторінках, на яких ви знаєте роботу, дроселювання, тайм-аути тощо.
  • уникайте вичерпних сканів за відносно короткі проміжки часу: скануйте частину сайту та поверніться пізніше (через кілька днів), щоб сканувати іншу частину. Не робити паралельних запитів.
  • уникайте сканування потенційно чутливих областей: наприклад, 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пояснено, що ви намагаєтеся досягти і чому ви не загрожуєте. На цій сторінці має бути кілька речей:

  • Інформація про те, як зв’язатися безпосередньо з вами
  • Інформація про те, що збирає гусеничний та чому це збирає
  • Інформація про відмову та видалення будь-яких зібраних даних

Останнє є ключовим: хороша відмова - це як гарантія повернення грошей ™ і набирає необгрунтовану кількість доброї волі. Це повинно бути гуманним: один простий крок (або адреса електронної пошти, або, в ідеалі, форма), і всеосяжний (не повинно бути жодних "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


Важливі кутові корпуси!
М. Дадлі

На сьогоднішній день ви можете часто виявляти навмисне дублювання вмісту (наприклад, ферми, що врівноважують навантаження), перевіряючи наявність канонічних тегів.
Брайан

4

Я лише додам одну дрібницю.

Авторські права та інші юридичні проблеми: я знаю, що ви пишете, що вони є загальнодоступними веб-сайтами, тому авторських прав може не бути, але для зберігання даних можуть бути інші юридичні проблеми.

Звичайно, це залежатиме від того, в якій країні ви зберігаєте дані (і де ви їх зберігаєте). Розглянемо проблеми із Законом про патріоти США та Директивою про захист даних ЄС. Резюме проблеми полягає в тому, що американські компанії повинні надати свої дані, наприклад. на запитання ФБР, не повідомляючи про це користувачів, де Директива про захист даних зазначає, що про це потрібно повідомити користувачів. Se http://www.itworld.com/government/179977/eu-upset-microsoft-warning-about-us-access-eu-cloud


2
"Я знаю, що ви пишете, що вони є загальнодоступними веб-сайтами, тому авторських прав може не бути". Кожен веб-сайт в Інтернеті є загальнодоступним, і кожен веб-сайт є авторським правом, якщо прямо не вказано інше.
Гевін Коутс

3

Зателефонуйте веб-сканеру або тому, чи павуку, пов’язаному з вашим іменем. Це важливо. Двигуни Analytics і подібні шукають тих, хто асоціює вас як ... павука. ;)

Я це бачив через заголовок запиту User-Agent


Я думав, що це зазвичай "бот" або "робот" - я знаю, що Google - це Googlebot.
Aaronaught

Влучне зауваження. Поки його можна відрізнити. Там, мабуть, повідомлення про SO, що викладають ці.
jcolebrand

2
  • Зберігайте файли cookie, коли це потрібно, щоб запобігти створенню зайвих сеансів на веб-сайті.
  • Реалізуйте поведінку синтаксичного аналізу, найближчого до браузера. Наш веб-сайт в реальному часі повідомляє про багато "404s", завдяки ботовим запитам про відсутні файли.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.