Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2014, 00:02   #1
mishanama
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 22
Восклицание Доступ к прямым ссылкам на облачное хранилище Mail.ru

Здраствуйте, товарищи. Не знаю, в том ли разделе создаю пост, но вроде как оно.
Есть давно разрабатываемая мной программа - MusicSort. В ней есть "облачный" клиент - проще говоря она имеет прямой доступ к некоей базе музыки и аудиокниг. Некоторые ссылки просто стыбрены на разных сайтах (в основном через flashvars='....), другие (большинство) розтыканы по разным облачным хранилищам (Dropbox, Cubby, Diskane, Cloud.Mail.ru).
Так вот - недавно мейлру расщедрился и подарил 1 терабайт бесплатного места у себя на "облаке" - я очень обрадовался - это ж какую тучу музыки и книг можна загрузить! И все шло просто прекрасно. Прямые ссылки, никаких ограничений - супер! Но видать жаба их задавила, поэтому они недавно сделали "апгрейд", чтобы можно было скачивать файлы только с веб-страницы, через окно загрузки. У меня, естественно, тут же перестали работать все каталоги в программе - ведь вместо прямой ссылки выдавалось html окошко. Фишка была в том, что если раньше ссылка типа https://cloclo1.datacloudmail.ru/web...verinets/1.mp3 - открывалась сразу, то теперь вот этот префикс "clocloX" стал при каждом обращении генерироваться случайно. Пришлось быстро выпускать новую версию программа с патчем - просто был добавлен костыль - цикл где перебирались префиксы ("cloclo1,cloclo2,cloclo3...") и один из них непременно "попадал" в цель - файлы снова стали играть и скачиваться.
Но вот сегодня вечером они подсунули очередную подлянку - перебор перестал работать. Скачать файл НАПРЯМУЮ можно ТОЛЬКО со страницы mail.ru. Вот - https://cloud.mail.ru/public/c120512...tie_Zverinets/ - можете сами посмотреть. Если нажать значок загрузки (стрелочка вниз) - все работает, т.е. выдается прямая ссылка, причем в том же виде, как и раньше, формат не поменялся. Но теперь сколько не прокручивай префиксы (от 1 до 28 - результат 0. Я думаю, возможно там задействованы куки, чтоли? Прошу совета у опытных программистов. Прога на Делфи написана, для доступа в сеть НЕ применяетсья Инди. Использован модуль WinInet, а для открытия аудиофайлов - BASS (он умеет сразу url открывать). Очень нужна помощь - я хоть и деньги никакие прогой не зарабатываю, но есть некоторое количество пользователей - не хочеться их подводить.
ps. Ссылка на саму прогу http://soft.mail.ru/program/musicsort
mishanama вне форума Ответить с цитированием
Старый 11.04.2014, 09:59   #2
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

ждите пока ни webDav реализуют
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 11.04.2014, 10:18   #3
mishanama
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 22
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
ждите пока ни webDav реализуют
Это неплохая идея. Я хоть еще и с webDav не работал, но вроде Synapse его поддерживает, значит можно будет прикрутить к программе. Я так понимаю, что тогда и яндекс.диск и Google.drive можно будет использовать. НО! Я то могу ждать, а вот мои пользователи - нет. Там ведь уже на 16 гиг аудио загружено - и оно теперь все недоступно - это катастрофа. Вчера до 1 часа ночи вертел это мейлру - и так, и сяк - ни в какую. И куки вроде никакие не отсылаются - по крайней мере судя по инструменту "Network" из панели разработчика в Mozzila. Ничего понять не могу....
mishanama вне форума Ответить с цитированием
Старый 11.04.2014, 10:55   #4
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Цитата:
Если нажать значок загрузки (стрелочка вниз) - все работает, т.е. выдается прямая ссылка
А программно нельзя это попробовать сделать?
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 11.04.2014, 16:07   #5
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Так посмотри у них в исходнике страницы, откуда ссылка берется, и делай так же.
Son Of Pain вне форума Ответить с цитированием
Старый 11.04.2014, 19:38   #6
mishanama
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Son Of Pain Посмотреть сообщение
Так посмотри у них в исходнике страницы, откуда ссылка берется, и делай так же.
У них в исходнике прописаны статические ссылки (самые, что ни есть прямые). Но если попробовать перейти по такой ссылке - происходит переадресация на страницу загрузки, вместо прямого скачивания. Хотя раньше все работало.
Вот фрагмент кода:
Цитата:
"url": {
"web": "/public/11e2d101d4bb/F_M_Dostoevsky_P_i_N/f.m._dostoewskij_-_prestuplenie_i_nakazanie._chast_1. 1.mp3",
"view": "https://cloclo14.datacloudmail.ru/weblink/view/11e2d101d4bb/F_M_Dostoevsky_P_i_N/f.m._dostoewskij_-_prestuplenie_i_nakazanie._chast_1. 1.mp3",
"get": "https://cloclo14.datacloudmail.ru/weblink/get/11e2d101d4bb/F_M_Dostoevsky_P_i_N/f.m._dostoewskij_-_prestuplenie_i_nakazanie._chast_1. 1.mp3"
},
Если просто перейти напрямую (скопировать и вставить в адресную строку) по ссылке https://cloclo14.datacloudmail.ru/we..._chast_1.1.mp3 - выкинет на страницу загрузки. Хотя если нажать на кнопочку "скачать" (на странице) - файл по этой же самой ссылке скачивается напрямую без всяких окошек! Как у них это устроено - ума не приложу!

Цитата:
Сообщение от BARNEY Посмотреть сообщение
А программно нельзя это попробовать сделать?
В принципе, в том наверное и стоит вопрос - как же "нажать" её программно? Какой запрос отправить? Т.е. надо сделать так, чтобы сервер считал будто я не напрямую ссылку открываю, а именно с расшареной страницы. Мне бы хоть понять - как именно он это определяет? В теле запроса чтоли? По сниферу если смотреть - отправляется стандартный себе "GET адрес_файла". И все.

Значится так. Выцепил я одну штуку - при переходе по прямой ссылке, сервер выдает ошибку 301 - moved permanently, т.е. URI файла перемещен навсегда. Что в принципе и соответсвует действительности - префиксы генерятся каждый раз новые. Но в теле ответа, есть строчка Location, где указывается новое местоположение файла - полный его адрес. Щас буду пробовать еще с этого боку... Может кто знает, как обрабатывать 301-ое сообщение в делфи - буду очень признателен за подсказку.

Последний раз редактировалось Stilet; 14.04.2014 в 20:40.
mishanama вне форума Ответить с цитированием
Старый 11.04.2014, 23:11   #7
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Редирект берете из заголовков и переходите по ним. Так и обрабатываете))
Lardes вне форума Ответить с цитированием
Старый 11.04.2014, 23:49   #8
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

А реферрер в заголовках ты ставишь?
Son Of Pain вне форума Ответить с цитированием
Старый 12.04.2014, 03:23   #9
mishanama
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Son Of Pain Посмотреть сообщение
А реферрер в заголовках ты ставишь?
Уже да Собственно потому и удалось восстановить копирование. А заодно и выкинул "костыль" - он оказался больше не нужен. Теперь с каким префиксом не заходи - файл скачивается. Но проблема с воспроизведением осталась - библиотека BASS не имеет фукций для настройки заголовка. Т.е. поменять там можно только агента, а реферера и все остальное - нет. Я уже со всех сторон заходил - ну не знаю я что с ним делать! Остается один вариант - перехват пакетов и подмена заголовка на лету. Но и по этой теме ничерта нельзя откопать. Я и про реферера чисто методом тыка дошел. А тут... Я помню пару лет назад что-то писал на WinSocks для "ТанковОнлайн". Но уже ничего не помню. Может подскажите? Уже просто мозги пухнут от всей этой лабуды.... 2.30 ночи - а я еще ковыряюсь.

Доброй ночи. Итак, задача сузилась до создания прокси-сервера с возможностью подмены заголовков. В программу был добавлен поток в котором крутится TIDHttpProxyServer. Все работает - но вот основная задача - в пролете. Т.е. мейл.ру так и осталься недоступен по причине своей SSLнутости. К сожалению, прокси на Инди не умеет обрабатывать https запросы
Был прикручен костыль в обработчик OnHTTPBeforeCommand -
Код:
procedure PBassProxy.ChangeHeader(AContext: TIdHTTPProxyServerContext);
var
  s:String;
 SSLClienteOut : TIdSSLIOHandlerSocketOpenSSL;
begin
 if  TIdTCPClient(AContext.OutboundClient).Port=443  then
   begin
        AContext.OutboundClient.IOHandler    :=   TIdSSLIOHandlerSocketOpenSSL.Create(AContext.OutboundClient);
        AContext.OutboundClient.IOHandler.ReadTimeout:=5000;
        SSLClienteOut := TIdSSLIOHandlerSocketOpenSSL(AContext.OutboundClient.IOHandler);
        SSLClienteOut.SSLOptions.Method      :=sslvSSLv23 ;//  (sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1)
        SSLClienteOut.SSLOptions.Mode        := sslmClient; //(sslmUnassigned, sslmClient, sslmServer, sslmBoth);
        SSLClienteOut.SSLOptions.VerifyMode  := [];
        SSLClienteOut.PassThrough            := true;
  end;
Так вот - ни с какими параметрами фигня это не работает. OpenSSL установил, дллки по всем возможным папкам распихал. Посадил на этот прокси Internet Explorer. Все страницы открываются, а https ни в какую.
Знаю, что уже всем надоел, но уж очень нужна ваша помощь. Просто не знаю что еще придумать. Как заставить работать эту шнягу?

Последний раз редактировалось Stilet; 14.04.2014 в 20:43.
mishanama вне форума Ответить с цитированием
Старый 14.04.2014, 17:07   #10
mishanama
Пользователь
 
Регистрация: 04.06.2009
Сообщений: 22
По умолчанию

Я так понял, общатся придеться лишь с самим собой
В процессе познания работы инди-прокси, выяснилось, что вышеприведенный код, с принудительным включением SSL, нужен лишь когда серверу отсылаются команды "GET, POST", а команда "CONNECT", которая собственно и есть командой подключения к https хосту - обрабатывается TIndyHTTPProxyServer автоматически. Вернее, её и обрабатывать не надо - он её туннелирует напрямую. НО! Даже когда было все переделано, и SSL теперь включается только при GET-запросе - все равно нифига не работает. Даже google не грузится. Было также замечено, что после этого некоторые заголовки стали приходить в виде крякозябров. Может с кодировкой проблемы? Как её в Indy поменять? Или все же на сокет попробовать собрать эту байду?
mishanama вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
приложение, облачное хранилище VsadniK36 Фриланс 0 17.09.2012 15:01
Простой загрузчик файлов по прямым ссылкам burning1 Помощь студентам 9 03.09.2012 23:10