Есть авторизация (cURL) на некотором файлообменнике А (с которого можно скачивать только когда ты авторизирован). Есть мой сайт В (на котором выполняеться скрипт php который авторизируеться на сайте А) и есть пользователь С (человек, браузер) который заходит на мой сайт В, вставляет ссылку на файл(с сайта А) и у него должно начинаться скачивание этого файла. Проблема в том что файлов будет много и они будут большие, записывать их на своем сервере а потом отдавать клиенту не вариан. Вопрос как организовать что-ли перенаправление скачивания(даже не знаю как это назвать)? Тоисть нужно сделать так чтобы файл передавался напрямую с сайта А пользователю С. Уже пару дней пытаюсь это решить и у меня какой-то ступор...(бывает ), так что прошу не отвечить в стиле:"Делай через cURL или через что-то еще." Но буду благодарен за пару строк кода (для понимания сути) и возможно несколько ссылок, а также за подсказку как что-то такое вопше правильно назывется. Всем спасибо.
Моя вина, не так сформирмулировал. Я хотел сказать что нужно скачиваить много и больших файлов как аргумент в пользу передачи их на прямую. На самом деле будет скачиваться один файл за раз. Пользователь будет вписывать(вставлять) ссылку в поле и у него в браузере будет начинаться скачивание.
если вы подделываете авторизацию, то должны же немножко понимать, из чего состоит запрос, так? когда вы авторизовались, при всех следующих запросах вы что-то шлете серверу, чтобы он вас узнавал (куки, ага), тогда он дает скачивать файлы. чтобы юзер сам мог качать, нужно чтобы он слал серверу те же куки, чтобы сервер признал его за своего. так нельзя. чтобы большие файлы не копились у вас на сервере, можно удалять.
Есть не один сайт которые уже умеет это делать, так что не нужно говорить мне что это невозможно! отправляю POST с нужными параметрами, получаю ответ. Нахожу в ответе ссылку на которую редиректится и перехожу по этой ссылке Код (Text): GET /File.aspx?e=dlinnyj_hash_kod HTTP/1.1 также отправляю: Код (Text): Query strign paramentrs e=dlinnyj_hash_kod получаю: Код (Text): HTTP/1.1 302 Found Cache-Control: private Content-Type: text/html; charset=utf-8 Location: /Error.aspx?aspxerrorpath=/File.aspx Server: Microsoft-IIS/7.5 Access-Control-Allow-Origin: http://somesite.com X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Sat, 16 Nov 2013 21:21:37 GMT Content-Length: 153 а должен получать: Код (Text): HTTP/1.1 200 OK Cache-Control: private Content-Length: 3238509 Content-Type: image/gif Server: Microsoft-IIS/7.5 Access-Control-Allow-Origin: http://somesite.com Content-Disposition: attachment; filename="some.gif" X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Sat, 16 Nov 2013 20:40:28 GMT Какие есть идеи? Что я упустил??
посылаю POST запрос, в ответ приходит должно приходить такое: JSON redirectUrl=http://s5905.somesite.pl/File.aspx?e=dlinnyj_hasz_kod refreshTopBar=False topBar=<div class="topbarLoginContainer"> html с 2-мя ссылками на картинки </div> trackingCodeJS=_gaq.push(['ch._trackEvent', 'Files', 'Download', 'Download_File']); Type=Redirect После этого в браузере начинаеться скачивание (если скачивать нормально с сайта, а не моим кодом). Я достаю из этого json-a url и вывожу в ссылку через echo <a href="'.$link.'" target="_blank"> link </a> Но вместо скачивание выдает окно: Object moved to <a href="/Error.aspx?aspxerrorpath=/File.aspx">here</a>. Что я упустил, что еще нужно проверить? Понимаю что сайт имеет минимальную защиту от такого рода ботов, какой она может быть? Что и как проверить чтобы доделать скачивание?
Вам отдают не прямую ссылку на файл, а данные для скрипта, формирующего редирект, нужно смотреть яваскрипт и делать аналогичный запрос средствами php, видимо.
Вот про это и спрашиваю? Что и как проверять? Где узнать о этих методах защиты, какие они бываю и т.д.? По запросе возвращаеться тоже самое что и по ссылке.
Просто воспроизводите методично все данные отсылаемые в запросах браузером, никакие методы защиты скачать файл на сервер вам не помешают. Вот передать прямую ссылку в браузер клиента скорее всего не получится, её может вообще не существовать в природе, храниться файл и в базе может, или в облаке, или тривиально на диске, но отдаваться через скрипт все равно...
Если сервер раздающий файлы активно сопротивляется прямым ссылкам, то прямые ссылки не работают (сюрприз!). Если сервер раздающий файлы допускает расшаривание файлов — расшаривайте и получайте законную ссылку. Ваш К.О.
Удалось сделать скачивание. В основном из-за того что сайт плохо защищен. Я просто не заметил в длинном хэш коде ответа(фомата json) знак \u0026, который в последующем get запросе нужно заменить на &. Таким образом будет посылаться два параметра а не один, как я делал раньше. Но теперь сайт устанавливает сессионные куки. Насколько это безопасно?