четверг, 27 июня 2019 г.

Веб-архивация и языки


Заметка профессионального разработчика программного обеспечения Гэри МакГэфа (Gary McGath - на фото) была опубликована 10 июня 2019 года на его блоге «Сумасшедшая наука о файловых форматах» (Mad File Format Science), который посвящён «файловым форматам, проверке структуры файлов, программному обеспечению для архивации и прочим странным вещам».

Веб-архивация – дело непростое. Немногие сайты состоят исключительно из статического самодостаточного контента. Большинство используют JavaScript-скрипты, часто загружаемые с внешних сайтов. Адаптирующиеся страницы разработаны так, чтобы выглядеть по-разному в разных условиях. Архив должен сделать снимок веб-страницы, который отражает её внешний вид в определённый момент времени, но что именно это означает? Должен ли архив выбирать внешний вид для одного разумного набора параметров, или же он должен попытаться сохранить динамический характер страницы? Повлияет ли тот факт, что страницу запрашивает архив, а не интерактивный браузер, на то, что в ответ выдаст сервер?

Какой у меня язык?

Одна из менее очевидных проблем связана с тем, на каком языке страница заархивирована. Здесь есть два аспекта. Один из них - язык, объявляемый атрибутом lang. Тег ≤html≥ должен иметь атрибут lang; и его также могут иметь другие элементы - возможно, указывая другой язык. Второй аспект - это язык, используемый для контента. Архивы не должны быть полностью ориентированными на английский язык, и указанные в HTTP-запросе допускаемые языки (accepted languages) будут влиять на возвращаемый контент.

Дополнительным осложнением, которое я наблюдал во время моей недавней поездки в Германию, является то, что некоторые сайты игнорируют заголовок «Допускаемые языки» (Accept-language), предпочитая ориентироваться на IP-адрес клиента. Большинство сайтов делают это корректно, однако некоторые крупные сайты, такие как Google, используют IP-адрес. Это означает, что очевидное местоположение архивного клиента будет влиять на то, что он получает. Такое же влияние оказывают и другие факторы.

Ах, каннада!

Мой комментарий: Каннада – язык, распространённый в юго-западной Индии, преимущественно в штате Карнатака. На нём говорит около 40 миллионов человек. – см. Википедию, https://ru.wikipedia.org/wiki/Каннада

Системы архивации веб-сайтов сталкиваются с еще одной сложностью. Они проходят по ссылкам, и переход по некоторым из них может давать побочные эффекты. Именно этим объяснялась загадка, с которой столкнулись архивисты в университете Олд Доминион (Old Dominion University, см. https://ws-dl.blogspot.com/2018/03/2018-03-21-cookies-are-why-your.html ). Когда они просмотрели пять различных архивов твитов Барака Обамы, выяснилось, что только 53% из них были на английском языке. То есть сами-то его твиты были на английском, как он их написал, однако расставленные Твиттером метки, ссылки, заголовки и т.д. были на другом языке. Самым распространенным языком после английского оказался язык каннада. На каннаде говорят миллионы людей в Индии, но в других местах он малоизвестен, и даже самый фанатичный сторонник теории рождения бывшего президента вне США не станет утверждать, что это был родной язык Обамы.

В упомянутой статье рассматривается множество причин неправильного выбора языка. Авторы Савуд Аллам (Sawood Alam) и Плинио Варгас (Plinio Vargas) считают, что объяснение нужно искать в списке альтернативных ссылок для разных языков (когда используется конструкция ≤link rel="alternate"≥ ), которые не предназначены для отображения в браузере, но помогают программному обеспечению подыскать подходящую версию страницы.

При переходе по этим ссылкам устанавливается куки-файл (cookie), сообщающий Твиттеру предпочитаемый язык При переходе по ссылке для французского языка устанавливается куки-файл, запрашивающий последующий контент на французском языке. Существует длинный список этих альтернативных ссылок, и последняя из них - для языка каннада! Если программа-клиент сканирует каждую из этих ссылок, она каждый раз получает разные языковые куки-файлы, заменяющие предыдущие. В конце концов будет создан куки-файл, запрашивающий доставку контента на языке каннада.

В обычных обстоятельствах такое поведение куки-файлов является вполне разумным. Тот, кто просматривает Твиттер на польском языке, вероятно, захочет и впредь просматривать его на польском, независимо от геолокации или настроек браузера. И лишь тогда, когда проводится сканирование сайта, всё становится очень странным.

В статье предлагается несколько возможных решений, таких, как использование куки-файлов короткого срока действияe или помещение каждого запроса в отдельную «песочницу». Отключение куки-файлов вряд ли будет хорошим решением; в статье отмечается, что некоторые веб-сайты ожидают, что куки будут сохраняться, по крайней мере, в ходе операций перенаправления. Лучшим выбором может быть использование метода «песочницы», когда каждый из запросов эквивалентен отдельной операции curl.

Как прибить желе к стенке

Для архивистов проблема заключается в том, что типичный современный веб-сайт не является фиксированным документом; он скорее сервис или приложение. То, что вы видите, зависит от модели вашего компьютера, операционной системы, браузера, параметров экрана, географического местоположения, времени и сервера, к которому вы подключились. Создание непротиворечивого снимка сайта - это искусство, особенно если сайт вроде Твиттера, который спроектирован так, чтобы никогда не выглядеть одинаково дважды. Снимки, которые люди находят в «Интернет-архиве» (Internet Archive) и других архивах, порой сбивают с толку или разочаровывают.

Гераклит как-то сказал, что нельзя дважды войти в одну и ту же реку. Эти слова также очень хорошо описывают и Интернет.

Гэри МакГэф (Gary McGath)

Источник: блог «Mad File Format Science»
https://madfileformatscience.garymcgath.com/2019/06/10/web-archiving-languages/ 

Комментариев нет:

Отправить комментарий