Лучший вариант, который вы можете сделать в PHP, это использовать stream_copy_to_stream
:
$url = 'http://www.example.com/file.zip';
$file = "/downloads/stats.html";
$src = fopen($url, 'r');
$dest = fopen($file, 'w');
echo stream_copy_to_stream($src, $dest) . " bytes copied.\n";
Если вам нужно добавить опции HTTP, такие как заголовки, используйте опции контекста с вызовом fopen
. Смотрите также этот аналогичный ответ , который показывает, как. Вероятно, вам нужно настроить user-agent и все такое, чтобы сервер другого сайта считал вас браузером.