Я использую wget в скрипте для загрузки изменяющегося файла из Dropbox:

wget -4 -O filename.ext "https://www.dropbox.com/s/<fixed-hash-id>/filename.ext?dl=1"

Я заметил, что wget разрешает IP-адрес www.dropbox.com , и он часто меняется.

# Note: these examples are from multiple runs of wget, with duplicates removed:

Resolving www.dropbox.com... 108.160.165.139
Resolving www.dropbox.com... 108.160.165.147
Resolving www.dropbox.com... 108.160.165.20
Resolving www.dropbox.com... 108.160.166.13
Resolving www.dropbox.com... 108.160.166.142
Resolving www.dropbox.com... 108.160.166.148
Resolving www.dropbox.com... 108.160.166.20

После разрешения wget подключается к IP-адресу и отправляет запрос. На этом этапе Dropbox возвращает статус 302 FOUND и перенаправляет wget на сервер CDN следующим образом:

Location: https://dl.dropboxusercontent.com/content_link/<random-generated-hash>?dl=1 [following]

Затем wget разрешает перенаправление на несколько IP-адресов, например:

Resolving dl.dropboxusercontent.com... 54.225.184.81, 107.22.170.202, 54.235.147.68, ...

Затем он подключается к IP-адресам (пытается в линейном порядке), получает 200 OK и начинает загрузку файла.

Теперь проблема в том, что довольно часто wget требуется время для преобразования имен хостов в IP-адреса, и он должен делать это дважды. Я попытался ускорить процесс, напрямую подключившись к одному из известных IP-адресов, но это не сработало.

  • Если я напрямую подключаюсь к известному IP-адресу www.dropbox.com , я получаю статус 301 Moved Permanently и перенаправляется на URL с именем хоста (показано выше). Это эффективно замедляет процесс дальше.

  • Я пытался повторно использовать URL-адрес CDN, используя либо имя хоста, либо один из известных IP-адресов сервера CDN, но они также, похоже, перенаправляли (IP-адрес на имя хоста) или просто отклоняли запрос (404 Not Found).

Попытка загрузки файлов с помощью веб-браузера никогда не приводит к таким задержкам разрешения DNS. Что я могу сделать, чтобы получить результаты кеширования DNS в wget или использовать какой-то вид кеша DNS, который, похоже, делают браузеры?

Альтернативы wget или Dropbox приветствуются. Я пробовал curl но он тоже страдает от тех же проблем.

0