Американский секретный пейджер-гигант

Американский секретный пейджер-гигант

23 мая 2022 г.

В начале января 2022 года я спонтанно купил пейджер. Я изучил рынок пейджеров в США и, к моему удивлению, обнаружил (и до сих пор!) несколько компаний, предлагающих услуги пейджеров. Немного покопавшись, я решил подписаться на план двустороннего пейджера [MySecretaryUSA] (https://www.mysecretaryusa.com/assured/index.htm).


В ожидании отправки пейджера я начал копать. Ссылки «Карты зоны покрытия пейджинга» и «Отправить страницу» на сайте MySecretaryUSA привели меня на два веб-сайта: spok.com. /nationwide-two-way-map/) и usamobility.net соответственно, что сразу же дало мне понять, что MySecretary является реселлером Spok/USA Mobility.


На момент написания я нашел конкурирующих реселлеров, но все они использовали сеть Spok. Само собой разумеется, что единственная компания, предлагающая действительно общенациональные пейджинговые услуги, в отличие от местных провайдеров, которые обслуживают один город или штат, — это Spok (и сами Spok [требуют] (https://www.spok.com/solutions/paging). -services/) стать крупнейшей пейджинговой сетью в стране). Однако, чтобы понять Spok как компанию, мне сначала нужно было понять, как работают пейджеры.


Резюме пейджера


Мой Motorola T900 Talkabout двухсторонний пейджер


Короче говоря, пейджер — это небольшое устройство с батарейным питанием, которое отображает сообщения на ходу. Когда они были впервые созданы, они могли воспроизводить только определенный тон, но по мере развития технологий они могли воспроизводить голосовые сообщения, отображать номера телефонов и текст и, в конечном итоге, отвечать на сообщения. Их использование среди населения значительно сократилось после популяризации сотовых телефонов, и в настоящее время они широко используются в больницах и других медицинских учреждениях, где покрытие мобильной сети может быть нестабильным.


Пейджер, который у меня есть, двусторонний, то есть он может отправлять и получать сообщения. Мой план включает 3000 сообщений в месяц, а также обмен SMS-сообщениями, ящик голосовой почты, общенациональный доступ и целый ряд других функций. Стоит отметить, что пейджер без плана в основном бесполезен для обычного человека. Точно так же, как мобильный телефон без SIM-карты не может использовать какую-либо сотовую сеть (кроме экстренных вызовов), пейджер должен быть активирован и ему назначен код доступа или уникальный идентификатор в пейджинговой сети, чтобы он работал. Однако любители нашли способы воскресить их. Если вы не читали [статью] Дмитрия Елиусеева (https://debugger.medium.com/howto-using-a-pager-in-the-21st-centre-6a57454ecde8) о некоторых из этих способов, очень рекомендую .


Большинство современных планов пейджеров также включают бесплатный номер телефона. Этот телефонный номер — это то, как вы взаимодействуете с пейджером: вы можете позвонить на него, чтобы оставить голосовую почту, вы можете отправить текстовое сообщение, чтобы отправить на него страницу и т. д. Когда я подписался на свой план, меня спросили, какой код города мне нужен. пейджер иметь. Поскольку в моем университете есть бесплатные телефоны с бесплатными местными звонками, это позволило мне иметь свободный доступ к ящику голосовой почты с любого телефона в кампусе.


Резюме Spok


Теперь, когда мы знаем, как работает экосистема пейджеров, давайте поговорим о Spok. Spok появился не из-за агрессивного расширения сети, как большинство современных операторов сотовой связи, а из-за наследия. Частью его наследия является крупнейшая пейджинговая сеть в стране с покрытием в 44 штатах, но то, как она приобрела это наследие, представляет собой интересную историю.


«В 2014 году две мощные коммуникационные компании, USA Mobility и Amcom Software, объединились в один сплоченный бизнес — и родился Spok» — Spok Inc.


История компании Spok


[История] Spok (https://www.spok.com/about-spok/spok-company-history/) технически началась в 1965 году, через год после того, как Motorola выпустила свой первый потребительский тональный пейджер, Pageboy I. Однако, Spok сама по себе относительно молода, она возникла только в 2014 году в результате слияния двух крупных игроков отрасли: USA Mobility (которая занимается пейджинговой/беспроводной связью) и Amcom Software (компания-разработчик программного обеспечения для связи). Как видно из приведенной выше блок-схемы, Spok является результатом почти полувекового опыта слияний и поглощений.


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


Вам может быть интересно, почему я назвал Spok «секретным пейджинговым гигантом». Это потому, что большинство людей за пределами отрасли здравоохранения не слышали о них, но они, скорее всего, хотя бы раз посещали практику, использующую их продукты. Согласно отчету Spok за полный год за 2021 год [звонок] (https://www.webcast-eqs.com/spok02172022_en/en), каждая 10 лучших детских больниц и 20 лучших больниц для взрослых имеют какие-то отношения со Spok, причем с самой старой из них. 42 года!


График Spok Earnings Call. Слайд 11. Copyright Spok, Inc.


Многие из этих больниц используют пейджеры Spok, а также их программное обеспечение в течение нескольких десятилетий, и эти «многолетние отношения с клиентами» очень редко прерываются, особенно в такой технологически негибкой области, как здравоохранение. Если что-то работает хорошо, есть шанс, что оно будет поддерживаться десятилетиями, а может быть, и столетиями. Это наследие Спока и их хлеб с маслом в будущем.


НАЖМИТЕ ЗДЕСЬ, чтобы получить бесплатные личные данные


К этому моменту я провел около недели, время от времени копаясь в Споке. Следующий логичный вопрос, который у меня возник, был: «Сколько клиентов у этой компании?» Ответа нет в открытом доступе. Spok опубликовал [инфографику] (https://www.spok.com/resources/infographic-paging-power/) под названием «Непрерывная мощь пейджинга», где упомянул, что их сеть обрабатывает «более 100 миллионов сообщений в месяц». ”, но это число не дало мне никакого представления об общем количестве пейджинговых клиентов.


Решение моей проблемы пришло ко мне, когда я просматривал страницу «Отправить страницу». Среди различных текстовых полей была строка: « Нужно проверить номер? [НАЖМИТЕ ЗДЕСЬ] (https://secure.usamobility.net/message/lookup.html) для проверки номеров устройств».


Веб-сайт Spok "Отправить страницу"


После нажатия кнопки вас попросят ввести число для проверки, и страница сделает запрос к CGI, который сообщит вам, является ли число действительным.



Отлично, теперь у меня есть способ проверить, принадлежит ли определенный номер Споку или нет. На данный момент все, что мне нужно было сделать, это передать все возможные числа в эту конечную точку, и я бы не только получил общее количество клиентов Spok, но и их номера. Звучит просто, правда?


Однако теперь я столкнулся с проблемой: стандартный номер телефона в США (xxx-xxx-xxxx) состоит из 10 цифр. Прохождение всех 10 миллиардов возможных комбинаций заняло бы невероятно много времени, поэтому мне нужен был способ сузить диапазон возможных чисел. К счастью, есть способ сделать это.


НАНПА спешит на помощь


NANPA является администратором Североамериканского плана нумерации, руководящим органом, отвечающим за администрирование и распределение кодов городов и кодов центральных офисов в рамках Североамериканского плана нумерации. Они также публикуют регулярные отчеты о своей деятельности, один из которых привлек мое внимание — «Записи присвоения кодов центрального офиса» [отчет] (https://nationalnanpa.com/reports/reports_cocodes_assign.html).


Страница отчета содержит большое количество информации, но нас интересует файл «allutlzd.txt», текстовый файл, в котором перечислены все назначенные коды центрального офиса. В Соединенных Штатах. Это цифры 4–6 номера телефона (xxx-xxx-xxxx). Поиск «SPOK, INC» в текстовом файле дал 0 результатов, но, зная их прежнее название, я провел поиск «USA MOBILITY WIRELESS, INC» и, бинго!, получил 2336 совпадений.


Вот типичная строка из текстового файла:


WI 262–231 6630 «USA MOBILITY WIRELESS, INC.» ЛАКЕГЕНЕВА А.С. Н.


Нам не нужно беспокоиться ни о чем, кроме второго столбца, который дает нам код города и центрального офиса, назначенный Споку. 2336 совпадений, умноженных на 10000 номеров в коде центрального офиса, составляют 23,36 миллиона уникальных номеров, которые потенциально могут быть активными. Это значительно сузило мой диапазон, но я не мог последовательно просмотреть все эти числа.



Согласно Insomnia, один запрос к CGI-проверке Spok занимает 80,5 мс от начала до конца, поэтому, если бы кто-то прогнал все возможные числа через программу проверки Spok, это заняло бы 1,88 миллиарда миллисекунд, или около 21,8 дней . все запросы. Даже для разовой операции такое время ожидания недопустимо. Мне нужно было найти способ запускать много-много запросов одновременно.


AsyncIO, встречайте HTTPX.


Первый очевидный шаг — запустить эти запросы одновременно. В Python есть несколько способов сделать это: многопроцессорность, многопоточность и асинхронность. Я не буду описывать разницу между этими библиотеками, потому что это выходит за рамки этой статьи, но я решил выбрать asyncio. Если вам интересно, какую библиотеку выбрать для вашего проекта, вот отличный [ответ] Stack Overflow (https://stackoverflow.com/a/52498068), который может помочь.


Прежде чем рассказать о том, как я автоматизировал процесс запроса, я должен выразить благодарность Блэру «r000t» Стратеру, который написал базовый код для быстрого прохождения одного диапазона номеров. Без его опыта этот проект был бы невозможен. Он также предложил использовать HTTPX и его функцию пула HTTP-соединений, которую я сейчас кратко объясню.


Каждый разработчик Python, каким бы опытным он ни был, взаимодействовал с запросами, вероятно, самой легендарной сторонней библиотекой для языка. HTTPX является духовным преемником запросов. Он не только поддерживает пул HTTP-соединений, но и имеет встроенную поддержку асинхронности.


Пул HTTP-соединений работает, устанавливая одно TCP-соединение с сервером и повторно используя его для каждого последующего запроса. Поскольку установление одного TCP-соединения каждый раз, когда кто-то хочет сделать запрос, добавляет много ненужных накладных расходов, особенно когда мы делаем большое количество запросов каждую секунду, объединение HTTP-пулов помогает нам уменьшить задержку, использование ЦП и перегрузку сети без каких-либо дополнительных расходы.


С помощью r000t у меня появился работающий парсер, который мог отправлять сотни чисел в секунду в CGI Spok. В течение нескольких дней (о том, почему это так важно, я расскажу позже в этой статье) я запустил свой скрипт и собрал ровно 478 729 чисел. Это составляет использование их заданий NANPA примерно на 2,05%. Это большой простор для будущего расширения!


Сбор данных


Теперь, когда у меня есть все эти номера, должно быть легко сопоставить их с соответствующими почтовыми индексами, поскольку коды центральных офисов назначаются географическому региону, верно?


Опять неправильно. Я наивно полагал, что NANPA предоставит эти данные публично. Давайте посмотрим на веб-сайт [руководство] NANPA (https://www.nationalnanpa.com/guide/guide.html), где они утверждают:


«Вот некоторые вещи, которые вы НЕ найдете на этом сайте: […] Местоположение кода/префикса города. Кандидаты на присвоение префиксов не обязаны раскрывать NANPA «населенные пункты», которые будут обслуживать присвоения префиксов. Таким образом, у НАНПА нет этой информации».


Единственная информация о местоположении, которую предоставляет NANPA, — это «центр ставок», который имеет лишь косвенное отношение к географии и может быть невероятно запутанным при сопоставлении с реальным местоположением. Например, посмотрите на строку:


CA 213–350 6630 «USA MOBILITY WIRELESS, INC.» LSAN DA 01 КАК Н


Что вообще означает «LSAN DA 01»? Он каким-то образом связан с Лос-Анджелесом, но не дает нам никаких подсказок относительно его почтового индекса. Однако в том же руководстве NANPA говорит:


«Информация о соответствии почтовых индексов и кодов городов доступна из различных источников в Интернете. Найдите их с помощью поисковой системы».


И после ровно одного запроса в Google я наткнулся на area-codes.com, чей сайт, которым легко злоупотреблять, позволил мне сопоставить каждый код центрального офиса с почтовым индексом. Через два часа автоматических запросов Selenium у меня был текстовый файл со всеми почтовыми индексами, используемыми Spok. Я объединил их все, подсчитал все числа в этом почтовом индексе и через [базу данных почтовых индексов США Simplemaps] (https://simplemaps.com/data/us-zips) теперь у меня были все штаты, города, и в округах Spok были клиенты.


За исключением того, что это никогда не бывает так просто…


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


Во-вторых, в моих результатах есть доля ошибочности. Я использую почтовые индексы в качестве прокси для определения местоположения. Неточной может быть не только база данных area-codes.com, но и база данных Simplemaps. Я конвертирую код центрального офиса в почтовый индекс, а затем снова в город/округ/штат. Любая ошибка на любом этапе может привести к ложным результатам.


Давайте посмотрим на графики штата, округа и города для данных, которые я собрал:


Общее количество клиентов по штатам США. Визуализация Plotly


Общее количество клиентов по округам США. Визуализация Plotly


Общее количество клиентов по городам США


Три вещи бросились мне в глаза сразу после того, как я закончил собирать эти данные:


  1. 479 тысяч номеров — это не так уж и много. Даже если предположить, что все они являются пейджинговыми клиентами и не содержат номеров колл-центров или сервисных номеров (модемов для пейджинговой сети и т. д.), это, например, в 7,3 раза меньше, чем количество пользователей Facebook Messenger в Коста-Рике. (по данным Statista)

  1. Данные необычайно географически разбросаны, и количество клиентов быстро падает после 100 крупнейших городов. На первые 10 городов приходится только 37,4% всех клиентов, но на первые 100 городов приходится 90,1% всех клиентов (из 501 города).

  1. Я не особо разбираюсь в географии США, так как я здесь иностранный студент, но я никогда в жизни не слышал о Гранд-Прери, штат Техас. Почему в этом городе так много номеров пейджеров?

Аномалия Гранд-Прери


Давайте исследуем аномалию Гранд-Прери. Первое, что я сделал, это погуглил, что вообще такое «Гранд-Прери». Оказывается, это город в районе городов-побратимов Форт-Уэрт-Даллас с населением около 194 тысяч человек (по данным переписи населения США 2020 года).


Второе, что я сделал, — это вернулся к исходным данным и просуммировал все числа с тарифным центром «ГРАНДРАРИ», так как предполагал, что номера в этой области не будут присвоены никакому другому тарифному центру. К моему удивлению, я получил больше чисел, чем в моем графе города! 23973 вместо 23617 номеров с геокодированием ZIP. Это сразу говорит нам о двух вещах: либо пейджеры имеют проникновение 12,4% в таком маленьком городе, либо есть еще один фактор.


Подсказка может скрываться на странице Spok «Свяжитесь с нами» [страница] (https://www.spok.com/contact-us/). Они утверждают, что имеют два офиса в США: одно в Александрии, штат Вирджиния, другое в Плано, штат Техас. Глядя на документы FCC (номер файла SESRWL2017071400761), похоже, у них есть наземная спутниковая станция по адресу 3000 Technology Drive, как видно из спутникового изображения Google Maps.


Изображения © Maxar Technologies, 2022 г., Картографические данные © Google, 2022 г.


Плано расположен в районе Форт-Уэрт-Даллас, как и Гранд-Прери, но само по себе это не объясняет, почему в этом районе расположено так много номеров. Это может быть что угодно: от меры по экономии средств (Grand Prairie — отдельный тарифный центр) до накопления корпоративных номеров для тестирования. Хотелось бы, чтобы у меня был более удовлетворительный ответ на эту аномалию, но пока Спок не прояснит ситуацию, мы никогда не узнаем этого по-настоящему.


Еще больше аномалий


Чем больше я смотрел на данные, тем больше меня поражала уникальность этого набора данных:


  • Гранд-Прери, штат Техас, город номер 135 (!) в США по населению, номер 2 (!!) в моем списке

  • Лос-Анджелес, Калифорния, номер 2 по населению, находится на 23 месте (!!!)

  • Милуоки, Висконсин, 30-е место по численности населения, находится на 4-м месте.

  • Питтсбург, штат Пенсильвания, номер 68 по численности населения, находится на пятом месте.

  • Финикс, Аризона, номер 5 по численности населения, находится на 19-м месте.

(данные о населении взяты из World Population Review)


Даже города с наибольшим числом жителей занимают лишь небольшую часть от общего процента номеров. Чикаго, штат Иллинойс, номер один в моем списке, занимает всего 5,79% набора данных. Из 501 города:


  • Только у топ-10 более 10 000 номеров

  • Только 83 лучших имеют более 1000 номеров

  • Только 238 лучших имеют более 100 номеров

  • Только 359 лучших имеют более 10 номеров

  • Есть 38 городов только с 1 номером

  • И один город с 0 номерами: Вудбери-Хайтс, Нью-Джерси.

Моя любимая аномалия, вероятно, должна быть Арканзасом. В Арканзасе нет вышек пейджеров, единственная услуга, которую он получает, — это передача из Мемфиса через границы штатов (посмотрите, сможете ли вы найти ее на следующей [карте] (http://cloud.spok.com/coverage/ NationwideTwo-way/AR.pdf) без моего красного выделения).


![Карта покрытия двухстороннего пейджера в Арканзасе. Copyright Spok, Inc.] (https://cdn.hackernoon.com/images/Ukwbm9e6XigP4lRj7BnG8FH39tj2-v2j3kk4.png)


Несмотря на это, в моем наборе данных есть единственная цифра из Форт-Смита, штат Арканзас, города с населением около 87 тысяч (по данным переписи населения США 2020 года), на совершенно противоположной стороне государственной границы. Мало того, это единственный номер Арканзаса в моем наборе данных. Я не думаю, что смогу выразить словами то удивление, которое я испытал, когда обнаружил это.


Однако сейчас самое время повторить, что число не обязательно означает, что пейджер активен в этой области. Наиболее вероятное объяснение, которое у меня есть, состоит в том, что клиент из района Мемфиса часто звонил в Форт-Смит или находился там, поэтому ему было бы удобнее получить номер Форт-Смита.


Вывод


Spok — интересная компания. Им удалось пережить смерть потребительского пейджинга, цепляясь за медицинские учреждения, и тем не менее они по-прежнему предлагают пейджинговые услуги по всей стране. Их наследие показывает нам, как древняя технология может сохраняться еще долго после того, как производители сняли ее с производства.


Внимательный читатель мог бы задаться вопросом, как мне удалось собрать столько данных со Спока за такой короткий промежуток времени. Ответ прост: CGI, который я использовал, не использует никакой аутентификации, не имеет ограничений по скорости и не использует проверку заголовков. Эта компьютерная графика — пережиток старых, наивных времен, когда о конфиденциальности просто не думали, когда дело касалось пользовательских интерфейсов. Я легко мог отправить ему 100 запросов в секунду, а он начинал «задыхаться» только на отметке 250.


В настоящее время ни один такой API (мы даже больше не используем компьютерную графику) не смог бы запустить его в производство. Веб-сайт Spok «Отправить страницу» — это капсула времени, которая показывает нам подводные камни устаревших технологий. Конечно, вы можете сохранить всех своих старых клиентов, но если вы не будете поддерживать или активно работать над защитой своих старых интерфейсов, какой-нибудь скриптовый ребенок (или, что еще хуже, конкурент) может просто появиться и очистить все ваши данные. .


Я решил открыть исходный код обработанного набора данных для будущих исследователей (однако необработанные цифры не будут опубликованы по этическим соображениям и соображениям конфиденциальности):


https://github.com/evilsaloon/spok-dataset. Я надеюсь, что это будет полезно.



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE