Получить время из интернета (в обход часов ПК)? - PullRequest
6 голосов
/ 05 марта 2010

Для моих неуправляемых программных потребностей с ограниченным по времени MFC / C ++ я хотел бы получить метку времени по Гринвичу / UTC из Интернета (вместо того, чтобы полагаться на время на ПК, которое можно легко изменить).

Я уже думал о разборе строки "Текущий UTC" ... строки из http://www.timeanddate.com/worldclock/ (я думаю, что порт 80, скорее всего, будет открыт, чем другие), но я не знаю, насколько надежен этот URL ...

Пожалуйста, поделитесь со мной своими плюсами / минусами или разными идеями по этому поводу.

Спасибо.

Ответы [ 6 ]

7 голосов
/ 05 марта 2010

Используйте SNTP (простой сетевой протокол времени), чтобы получить время от атомных часов Интернета.

В Интернете доступно несколько библиотек - вот одна для MFC на codeproject .

3 голосов
/ 05 марта 2010

Выглядит выполнимо, и это широко сделано.

Очистка timeanddate.com может прерваться, если сайт решит изменить свой HTML.Даже небольшое изменение в HTML может сломать ваш скребок.

Я бы предложил вам использовать веб-сервис, такой как earthtools .Вам нужно будет передать необходимые аргументы (широту и долготу и т. Д.) В URL, а ответом будет XML, который вы можете легко проанализировать.

1 голос
/ 07 марта 2010

Ну, чтобы сделать вывод: Мое приложение содержит автономную базу данных, которая обновляется один раз в день из интрасети.
Я хотел бы уничтожить эту базу данных, если она не обновлялась в течение недели, и поэтому я хотел бы попытаться уменьшить вероятность того, что кто-то просто переключит часы ПК назад.
Я полностью осознаю тот факт, что есть опытные пользователи, которые могут блокировать мое приложение от получения времени в Интернете 20 различными способами, но я пытаюсь сделать все возможное, что я могу в программном обеспечении (аппаратное решение, например ключ для меня это излишество).

Поскольку я хочу иметь решение для порта 80, я приму решение codaddict (earthtools) и в противном случае проверим часы ПК.

Спасибо за все ответы!

1 голос
/ 05 марта 2010

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

0 голосов
/ 04 февраля 2017

Ответ лежит в вашем вопросе ... Перейдите на https://www.timeanddate.com/ и поищите "API", вы найдете эту страницу: https://www.timeanddate.com/services/api/ Подробные инструкции: https://services.timeanddate.com/api/packages/time.html Используя их API, вы отправляете запрос и получаете ответ XML или JSON. Это обходится вам в 150 долларов в год, но это профессиональный способ сделать это, и, поскольку ваша цель - брать деньги за программное обеспечение, это имеет смысл.

0 голосов
/ 05 марта 2010

Хммм.Интересно.Вы в основном пытаетесь использовать Интернет в качестве ключа.

Если вам действительно нужна такая «защита» вашего программного обеспечения, вам, возможно, следует подумать о том, чтобы получить настоящий ключ с часами реального времени, например HASP .Конечно, любое решение будет тривиальным, чтобы обойти достойного хакера с дизассемблером.

В общем, я думаю, что лучше открыть свое программное обеспечение и попытаться выжить из исправлений, модов и поддержки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...