Как загрузить файл с помощью PHP, у которого есть отложенная принудительная загрузка? - PullRequest
0 голосов
/ 10 июля 2020

Я нахожусь в ситуации, когда мне нужно загрузить файлы с URL-адреса, это легко с прямыми URL-адресами файлов, такими как https://somedomain.com/some-path/somefile.exe

file_put_contents( $save_file_loc, file_get_contents($url_to_download);

Но что делать если вы отложили принудительную загрузку с URL-адреса, который фактически печатает HTML, и как отличить этот URL-адрес?

Пример URL: https://filehippo.com/download_mozilla-firefox-64/post_download/

РЕДАКТИРОВАТЬ: см. выше url загрузка файла начинается с JS, как я тестировал с блокировкой JS, и загрузка не началась.

Заранее благодарим за помощь.

1 Ответ

0 голосов
/ 10 июля 2020
  1. Прочтите html URL-адреса, используя file_get_contents
  2. Найдите URL-адрес файла в HTML. Вам нужно будет посетить страницу и просмотреть источник, чтобы найти URL. В вашем примере https://filehippo.com/download_mozilla-firefox-64/post_download/ он находится между data-qa-download-url="https://dl5.filehippo.com/367/fb9/ef3863463463b174ae36c8bf09a90145/Firefox_Installer.exe?Expires=1594425587&Signature=18ab87cedcf3464363469231db54575665668c4f6&url=https://filehippo.com/download_mozilla-firefox-64/&Filename=Firefox_Installer.exe"
  3. Как вы, возможно, заметили, страница могла предварительно одобрить запрос, поэтому его работа не гарантируется, если хост имеет проверки с использованием файлов cookie или других методов.
  4. Создайте регулярное выражение на основе приведенного выше для извлечения URL-адреса, используя preg_match
  5. Затем file_get_contents URL-адрес файла для его загрузки.
...