Галоўная / Артыкулы

Адкрытые URL-адрэсы, якія цітуюцца Базай даных часовых поясаў IANA: Перапіс зламаных лінкаў.

Перапісь 1 327 публічных URL-адрэс, згаданіх у дасебе IANA tzdata: праме завантажэння, прабавы з проксі, вярнэнне дадзеных з Wayback, а таксама тое, што застаецца, калі архіўы не функцыонуюць.

Выдавец: REACTAPP.TOP9 хв чытання2135 слоў

Крыніцы: A Study of the Public URLs Cited by the IANA Time Zone Database

База дадзэнай IANA Time Zone Database фіксуе, як змянююцца местныя гадзіннікаў у всьмі роўнах свету. Менш зрозумела, але ў яе блоках каментараў таксама паведамляецца, звядзе канчыліся гэтыя правіла. Основны рэсурс знаходзіцца за адрэсай https://github.com/eggert/tz.

У апытнае даследжэнне гэтых цітатаў была задана практычная запытка: з усіх публічных URL-адрэсаў, зазначаных у каментарах, скількі з іх яшчэ працуюць сёння? Кожная такая URL-адрэса была зборана, перапрацавана, а калі было трэба — вярнутая, спачатку за дапамогою проксі, які абходзіць звычныя блокі для ботаў, а потым за дапамогою API Wayback, калі жывы хост больш не існаваў. Код, табелі даследжэння і працэс вярнення дадзэнай для 1,327 URL-адрэсаў публікуюцца за адрэсай https://github.com/sixthextinction/tzdata-citation-census.

«Яма з кролікамі» апавялася з запіску 2008 года, напісанага волонтэрам Патрысом Скаталінам. Ён пераканструюваў точны момент пачатку змены часу в Марокко ў 2008 году (фон: https://en.wikipedia.org/wiki/Daylight_saving_time_in_Morocco), чытаў саврэменны абзвешчэнне на https://www.avmaroc.com/actualite/heure-dete-comment-a127896.html і стаўляўся да неяснасці ў перакладзе з французкага на англійскі. Запісак, які ён заставіў, ёсць тыповым для такых корпусаў: у яму наводзіцца номер указа 2–08–224 і прызнаецца, што офіцыйны тэкст не могаў быць знайдзены ў інтэрнэце тады.

Історычныя базы даных заполнены такімі запіскамі — номерамі указаў, газетнымі публікацыямі, URL-адрэсамі газет, датамі і поясненнямі, чырэз што адна джэральця перамагала іншую. Большая запытка — скількі з тых публічных URL-адрэсаў яшчэ функцыонуюць пасля гадоў змены.

Што такое tzdata на самай працоў?

База дадзеных часовых зон IANA — гэта набор файлаў-тэкста, якія падтрымваюцься учаснікаў. Аператывныя сістэмы і асяроддзя выканання працоўнае програмнай лінгвістыкі запытваюць яе, калі ім патрэбны часы за стаўкамі гадзінніка для паветранага часовага пояса. Канечныя корыстнікі рэдка ачынаюць гэтыя файлы, пры тым як практычна кожная дыстрыбуцыя Linux і асяроддзе выканання працоўнае програмнай лінгвістыкі ўключаюць іх у свою структуру. Калі якая-небудзь юрыдыкцыйная тэрыторыя зменяе своі гадзіннікі, база дадзеных павінна апублікуваць апдэйт, іначы кожны працоўнае програмнай лінгвістыкі, якая аднойчы залежыць ад яе, будзе паказваць некорэктную местную гадзіну.

Учаснікі можаць следаваць інструкцыям па выправленнях, якія розмешчаны на адрэсе https://data.iana.org/time-zones/tz-how-to.html, калі прыносяць праекты змян.

Самыя правілы можаць быць кароткімі. Змена часу восеньнай перадачы ў Марокко у 2008 годзе выражаецца двумя лініямі простага тэксту ў файле africa:

# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
Rule Morocco 2008 only - Jun 1 0:00 1:00 -
Rule Morocco 2008 only - Sep 1 0:00 0 -

Гэтыя лініі візначаюць моменты 1 чэрвеня і 1 верасня, калі машыны па всім свету павінны ўжываць новы час.

У прытакоўых каментарах зберагаецца історыя стварэння. Адпаведальныя за адтрыманне зберагаюць доказы: номеры указаў, урадовыя газеты, публікаціі міністэраў, статты газет чыясць тое, хто падалі інфармацыю, часта з датай, калі была адправлена паведамленне.

Інодзе джэрэлы не састаюцца. Адпаведальныя інодзе фіксуюць такіы суперасункі і пазначаюць, койму веруюць. У 2006 годзе Пол Эггерт адмовіўся ад дат з атласаў на корыстце Нацыянальнага бюро метраблікі Аўстрыі (https://www.bev.gv.at/):

# From Paul Eggert (2006-03-22): Shanks & Pottenger give 1918-06-16 and
# 1945-11-18, but the Austrian Federal Office of Metrology and
# Surveying (BEV) gives 1918-09-16 and for Vienna gives the "alleged"
# date of 1945-04-12 with no time. For the 1980-04-06 transition
# Shanks & Pottenger give 02:00, the BEV 00:00. Go with the BEV,
# and guess 02:00 for 1945-04-12.

Неясна, чы рэгламенты адбору джэрэл былі створаны з самага пачатку чы развіліся аднаццаўсі. У будзь-якім случае гэта залучае можна выкарыстоўваць летапіс для адліквідацыі рашэнняў, прыйнятых за мяркую болей чым трыдцяты гадоў спольнага адтрымання, особліва калі доказы скудныя чы суперасунковыя.

Што ж адбываецца, калі вы насправды пераглядаеце ціяпераведанні?

Кожны URL быў выявлен у блоках каментаў у дзевяці адпаведных файлах tzdata. У ходзе гэтага аналізу было знайдзена шысцьцаць чатырнаццаць блакоў каментаў, якія мелі трынаццацьсот п’ятадзесят два згадкі URL, якія у пасляпэўнай перапісве сталі трынаццацьмістам дваццаць семма разлічных адрэсоў на шысцьцаць дваццаць трох хостаў. Блакі, якія згадвалі толькі кнігі, указы чыю пошту без URL, не былі включаныя ў аналіз.

Кожны адрэс быў перапытан за дапамогою звычайнага HTTP-запіту GET, стандартнага заголовка Identity браузера (як опісана ў даследжэнні MDN аб User-Agent) і жорсткаг таймауту, каб хосты, якія застраглі, не моглі спамтаваць процэс аналізу.

У ходзе першага аналізу было знайдзена даныя для 663 URL. Іншыя 664 URL не запрацавалі з разных прычын, таму іх было адзіночна класіфікавана: код 404 не ўзначае тое ж, што жывая стораніца, якая адмовляе ў автаматызацыі.

Серэд прычын неудач:

  • 433 элементаў не удалося запрашаць безпасабліва, але ўдалося яго з’яўіць за дапамогай проксі. 178 элементаў адмовіліся у заданым запіце (паважнаюча большасць — HTTP 403, частка — 429). Іншыя 255 элементаў не запрацавалі ў домашней сеткі з-за проблем з DNS, таймаутам або памылкамі TLS, а не праз явны блокаванне ботаў. Для обох груп былі прабаваны новыя способы за дапамогай прылады Bright Data’s Web Unlocker, і ўсе элементы былі вярнуты.
  • 123 элементаў сапраўды зніклі. Яны вярнулі коды HTTP 404 або 410. Працаваўшы з інструментам Wayback Machine ад Internet Archive, было знайдзена цэлая копія ўсіх элементаў, за выключэнням двух — такім чынам 121 элемент быў вярнут.
  • 108 элементаў засталіся нерашанымі (57 з якіх не мелі архіўных копій, 39 продавжвалі не запрацоўваць праз прыладу Web Unlocker, а 12 вярнулі код HTTP 500). У 18 з нерашаных элементаў, усіх з газеты dof.gob.mx Мексікі, былі выявлены памылкі сертыфікатаў — верагодна, гэта была неправільная настройка хоста, а не выдаленая стораніца; прычыны засталі пахаваныя ад зусіль перапісу.

Зніклы сайт — гэта неудача ў яго зберэнні. Сайт, які адмовляецца прыймаць автаматызаваныя запіты GET, — гэта неудача ў доступе да яго. І тое, і другое перашкоджае простам сканаванню; гэтыя сітуацыі вказываюць на розныя рэшткі ў пытанні, чы гэтыя доказы яшчэ існуюць.

Толькі цыфры не можаюць рассказаць всю історыю функцыонавання. У 663 прыкладах успеху ў прамых запітах ёсць урадовыя порталы, архівы газет і персональныя сторанкі, якіе ўсё шчэ працуюць сэгодні. 433 прыклады вярнення даных праз проксі паказваюць, насколькі часта «зламаныя» цытаты на самай справе ёсць наследкам політык проты автаматызацыі. 121 прыклад заполнення базы Wayback паказвае, насколькі часта Internet Archive ужо мела корыстны фотакопію — за выключэнням двух прыкладаў 404/410, калі нават сам архів быў пусты. Самэ тое, што гэтыя катэгорыі трыважаюцца окрэма, дапамагае розумець рэзультаты перапісу для тых, хто будзе яго практыкаваць пазней.

Чаму вообшча можа быць заблокавана цытата?

Большынства сэйтоў сёгодні ставяцца да кліентаў, які выкарыстоўваюць скрыпты, інакш чым да звычных прыгледачаў. Запросы, якія ігнаруюць JavaScript або не праходзяць пераканальвання прайскупніка прыгледача, можу быць обмежаны па частоце, адхілены або падвергнуты перапрацавке.

Гэта ускладняе масовую пераканальвань старых цітатаў. URL, які працаваў, калі яго падставіў адпаведны адпаведальнік, можа ўсё шчэ быць актываў, але рокамі пазней адхіляць просты автаматызаваны запрос.

У корпусе часта з’являюцца офіцыйныя віснікі і правовыя базы дадзеных — dre.pt з Партугаліі, resmigazete.gov.tr з Турччыны, правовы рэпортар nevo.co.il з Ізраілю і падобныя рэсурсы. Адпаведальнікі шчыльна іх воспалівалі, і дзеяныя з тых стораначакоў даўжа не маглі быць запрашаны безпосерэдна.

Таму няудачны запрос не паводзіцца доказам знікнення. Гэта можа значыць выдаленне або тое, што метод запрашання больш не прыманяецца. Працэс вярнення дадзеных атрымуў такія казусы як окрэмыя катэгорыі.

Чы ўсё-такі гэта проблема tzdata?

Не галоўна мета. Эксперымент выявляе, насколькі добра захаваліся зовнішнія істочнікі, запісаныя ў давга трываючай історычной базе дадзеных.

tzdata не можа захаваць матэрыял, які ён цытуе. Правіла знаходзяцца ў дрэве пад кантролем версій і поставляюцца по всьму свету ў рамках операцыйных сістэм, але цітаваныя старонкі застаюцца на незалежных веб-сайтах, урадовых порталах і стосах газет.

Проблемы з доступам не ў новінку. У 2014 году ў егіпетскай інформацыі пра перавод часу ужо было зазначана, што старонку з ананунамі кабінету міністраў (http://www.cabinet.gov.eg/Media/CabinetMeetingsDetails.aspx?id=347) не можна было завантажыць з-за меж краіны. Проблемы з гео-блокаванням існавалі ўжэ задаўно, яшчэ до ціх перапісаў.

Як на самай працэ павернення дадзеных?

Працэс павернення дадзеных веліся ў окрэмыя пакеты, таму способы абмера застаўаліся рознымі.

Прабава кожнага методу на кожным URL — прымальных, потым проксі, а пасля архівах — прыведзе да збільшэння абсалютнага колькасці “вярнутых” дакументаў, адночасна затуманюючы класыфікацыю. Код 404 разлічаецца ад тымчасовага блакання. Архіўны скрайнек таксама не ёсць ідэентычным сторанцы, якую чытаў адпаведны адпаведальнік; гэта ўзяты кадр з якога-небудзь пазнейшага або ранейшага моменту.

Ешчасцовы пакет выкарыстоўвалі толькі для прымальных запітоў і фіксаваў точны статус HTTP. URL-ы, якія вярнулі коды 404 або 410, прабывалі ў окрэмым, з обмежэнням частоты пакеце да API доступнасці Internet Archive. URL-ы, якія выключыліся або былі заблакаваны, на гэтым этапе не надаўаліся архіву.

Канцэптуальна:

async function checkCitation(url) {
  const direct = await get(url); // one plain GET, no tricks
  if (isOk(direct)) return { status: "live", via: "direct" };

  if (direct.status === 404 || direct.status === 410) {
    const archived = await wayback(url); // only for confirmed-dead
    if (archived.hit) return { status: "recovered", via: "wayback" };
  }

  return { status: "unresolved" };
}

Працэўка праз проксі была ўжо іншым этапам. Ёй былі нацэльваны URL-адрэсы, якія не маглі быць запрашаны безпосерэднюю працэўкой з-за блакавання або проблем з доступнасцю, а не тые URL-ы, якія ужо паказвалі коды 404 або 410. Блакаваныя URL-адрэсы прабываліся знову як звычныя GET-запросы праз прыстрой Bright Data’s Web Unlocker, які выступае як натыўны проксі HTTPS:

import { ProxyAgent, fetch as proxyFetch } from "undici";

const AUTH = process.env.BRIGHT_DATA_UNLOCKER_AUTH; // format like USER:PASS

const dispatcher = new ProxyAgent({
  uri: `@brd.superproxy.io:44445`">http://${AUTH}@brd.superproxy.io:44445`,
  requestTls: { rejectUnauthorized: false },
  proxyTls: { rejectUnauthorized: false },
});

const res = await proxyFetch(url, {
  dispatcher,
  headers: { "User-Agent": UA, Accept: "*/*" },
  redirect: "follow",
});

Гэты шлях — не рэзультат адрасавання браузерам; гэта проста HTTP-запрос, які праходзіць праз Web Unlocker. Кантрольныя даны трэба размістыць у файле .env:

BRIGHT_DATA_UNLOCKER_AUTH=brd-customer-XXXXX-zone-web_unlocker:PASSWORD
BRIGHT_DATA_UNLOCKER_PROXY_HOST=brd.superproxy.io
BRIGHT_DATA_UNLOCKER_PROXY_PORT=44445

Разлучанне разных спосабаў працэўкі дазволяе у фінальной табелі розразліцаваць безпосерэднія запрашання, восстановленыя праз проксі, восстановленыя з архіваў і нерашаныя цытаты.

З метадыячнай точкы зору, наявнасць кансэлера адзынакоўвае стан «стораніцы, якая ўсё ўсёткі лежыць за вызамом», ад «стораніцы, якая знікла». Без такога разліку наўманітны краулер пачнёць занадто многа лічыць прыклады зламаных спяваў. Таксама, адправка толькі адпаведзей 404/410 да Wayback дапамагае утрымацца ад перэплыву API архіва хостамі, які проста блакавалі ботаў, што спануляваў бы статыстыку вяснавання і выкарыстоўваў бы ліміты для запытак нізкай цэнны.

Што можна зробіць з джэрамі, калі яны ў вас ёсць?

У гэтым случае ключовым пытаннем была доступнасць: чы можна яшчэ запрашаць наведзены URL, і калі не можна, чы можна вяснаваць дакумент у іншым месца?

Для історычнага набора дадзэнай неабяжна ўтрымка тыквотаў з самай вярнутай сторанцы. Для газетнага кантэйнера або правовай базы дадзэнай гэта можа значыць выкарыстоўванне номера указу, даты, загаворкі і адпаведных тыквотаў, якія зберагаюцца разам з первым адказам. Тады доказы застануцца нават калі URL пазней перэстане працаваць, і не будзе патрэбна яшчэ адна процедура сканавання, каб зноў знайсці лінкі.

Павтараючыяся хосты ўжо падходзяць для автаматызаціі. Пасля адкрыцья можлівасці запрашання дадзэнай, структураваны збірчык можа задаць поля і працаваць на той жа інфраструктурны фундамент. Звычайныя HTTP-сторанцы падходзяць для працоўніка, орыентаванага на код; сторанцы з велікай колькасцю JavaScript-кода патрабуюць працоўніка браузера.

Тады што на самай працо застаецца, калі архіў гэтага не мае?

Сто вачын URL-адрэсаў засталіся нерашаныя — гэта апошнё 8 процэнаў з 1,327 унікальных URL-адрэсаў; гэта незначны пярасёк, але ён станавіць проблему з-за велікай колькасці немагчымых да вярнучэння адказаў. Хоць пярасёк невелікі, кожны URL-адрэс колісць падтрымваў конкрэтную правілу часовага пояса.

Правілы застаюцца ў файле tzdata. Што не хватает, так гэта часткі або ўсёй зовнішняй сторонней старонкі па тым адрэсе.

З 108 URL-адрэсаў 57 вярнулі коды 404 або 410 без жадных запісаў пра наявнасць адказаў у Wayback. 39 адрэсаў таксама не працавалі праз проксі (з якіх 18 — гэта проблемы з сертыфікатамі Мексікі). 12 адрэсаў выдалі іншыя HTTP-памылкі, якія не былі прабаваны знову і не адправлены у Wayback.

Могла быць болей экзотычная метода вярнучэння, але пад час перапісу была неабходна фіксаваная правіла абаранення: трэба было вымерваць стан цытатаў за дапамою адной і той жа процедуры, а не вечна перашукваць стрымліваючыся калекцыю адказаў.

Меры цытатаў як спосабу зберагчэння

Історычныя наборы дадзеных і старонкі, якія яны цытуюць, маюць асіметрычныя якосці зберагачвання.

Правілы часовых зон знаходзяцца ў сістэме кантролю версій і распространяюцца праз безліч дыстрыбуцый програмнага забэрэжчыка. Адразу пасля ўключэння такое правіла можа застацца у чыны ўсё тады, калі доказы, якія яго обосноввалі, ужо не існуе.

У цытаваных матэрыялах такой гарантыі немае. Яны можу існаваць пад аднім URL у рамках адной організацыі. Калі гэтая організацыя перайдзе, выдаліць, змені правіла доступу або заўсёды пакінет службу, цытата стане важкай або немагчымой да знаходжэння. Такі спосаб абяцкання часта называецца «згнілым спрыяжэннем».

Адпаведальныя за tzdata збіраюць інфармацыю пра джэрэла ўжо дзесяткі гадоў і часта адзначаюць нявернасць. Гэта значна спрыяе пазнейшым даследаванням, у працоўнасці з якімі не дапамагалі бы безпадставныя тверджэння. Аднак аўтарытэтная цітата таксама не зберагачвае сам матэрыял, і адпаведальныя за праект не зобав’язаны копіюваць усё, на што яны сацярожна апілююць.

Таму перапісьве ў меньшай ступені яўляецца крытыкай dzdata, чым парадам таго, насколькі можна даверляць зовнішнім URL-адрэсам як історычным апавяданням. Большасць цітатаў была можна знайсці ў якой-небудзь форме. Меньшы, але значныя класы цітатаў не было можна знайсці. База дадзеных яшчэ зберагае правілы, якія былі встановлены тымі джэрамі; у 108 случаях яна вялікай меры не можа восстановіць URL-адрэсу.

Парадзеўка перапісьва чыраз год змогла б, верагатна, перасунуць дзеякі URL-адрэсы межы катаграфіяў, адколі сайты зменяюць правілы TLS, CDN чы рэгламенты для робатаў. Цікавы показнік — гэта не адна процэнтная цыфра, зафіксаваная ў часе; гэта тое, насколькі шыбка цітаты пераходзяць з катэгорыі «вымагаецца безпосерэдній доступ» у катэгорыю «трэбуецца проксі» чы «толькі архіў», і скількі з яных патрапляюць у нерашаны залішак, які не можа запрацаваць жадны автаматызаваны метод.

Для тых, хто адмініструе іншыя дасобы з велікім тэрміном жыцця — даны клёстара CLDR, базы геанаўмов, інструменты для збору законадаўства — застосоўваецца тая ж схема аналізу. Указайце кожны публічны URL у прымэтках або полях походжання, класіфікуйце проблемы па сэмантыцы HTTP, вярніцеся да рэсурсу за дапамогою інструмента адзлокавання толькі тады, калі проблема стосуецца правіл доступу, а таксама зверніцеся да архіва толькі тады, калі выходны істочнік паведамляе пра знікненне рэсурсу. Праказуйце колькісныя показнікі бакетаў разам з сортаваным спіском URL, ўблізу якога чытальнікі зможаць практыкуваць тую ж процедуру, замест таго каб пакладацца на адзін лішыцельны процэнт.