Утилита синхронизации файлов с HTTP в локальную папку

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 04.01.2016 (Пн) 18:51

Если в ответе на HEAD запрос, в Content-Type: нет указания charset= значит мы запросили заголовок файла, а не страницы. Нормальный способ проверить ссылку?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение alibek » 04.01.2016 (Пн) 19:47

Чего? У веб-серверов нет файлов.
Lasciate ogni speranza, voi ch'entrate.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 04.01.2016 (Пн) 19:54

Запрос со ссылкой на страницу:
Код: Выделить всё
HEAD /index.php?RSongID=2312&Link=2312 HTTP/1.1
Host: www.smallchurchmusic.com
Connection: close
User-Agent: compatible; MSIE 7.0; Windows NT 6.0

HTTP/1.1 200 OK
Date: Mon, 04 Jan 2016 16:42:34 GMT
Server: Apache
X-Powered-By: PHP/5.3.29
Connection: close
Content-Type: text/html; charset=UTF-8
Есть charset.

Запрос со ссылкой на файл:
Код: Выделить всё
HEAD /Snippet/S-ABabeLies-Corner-PipeLC-48-CAM.mp3 HTTP/1.1
Host: www.smallchurchmusic.com
Connection: close
User-Agent: compatible; MSIE 7.0; Windows NT 6.0

HTTP/1.1 200 OK
Date: Mon, 04 Jan 2016 16:36:53 GMT
Server: Apache
Last-Modified: Thu, 22 Jul 2010 05:34:13 GMT
Accept-Ranges: bytes
Content-Length: 181139
Connection: close
Content-Type: audio/mpeg
Нет charset'а.
Может кто-то знает причину, почему это плохо. Это нормальный способ проверять ссылку?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Хакер » 04.01.2016 (Пн) 22:03

Не существует деления на страницы и файлы с точки зрения HTTP.

Adam Smith писал(а):Может кто-то знает причину, почему это плохо.

Чарсета нет не потому, что это файл, а потому что MIME-тип audio/mpeg не предполагает такого понятия как charset вообще.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 04.01.2016 (Пн) 22:18

Это неправильный ответ. Для html-файла, в котором есть charset сервер тоже пишет, что charset'а нет.
Я тоже так подумал и проверил, вот такой ответ сервера опровергает твоё(и моё) предположение:
HTTP/1.1 200 OK
Server: nginx/1.0.15
Date: Mon, 04 Jan 2016 17:50:13 GMT
Content-Type: text/html
Content-Length: 82042
Last-Modified: Fri, 20 Nov 2015 10:07:29 GMT
Connection: close
Accept-Ranges: bytes

Я не знаток вэб-серверов, но очевидно, что не каждый html-файл на вэб-сервере выдаётся за страницу при HEAD запросе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Хакер » 04.01.2016 (Пн) 22:24

Adam Smith писал(а):ля html-файла, в котором есть charset сервер тоже пишет, что charset'а нет.

Он не обязан писать, если не пишет — значит нужно смотреть <meta> или догадываться, анализируя энтропию.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 04.01.2016 (Пн) 22:36

Нет, ты не понял моего вопроса. Дело не в том, обязан он или нет, и я не ищу charset любой ценой. Вопрос был совсем в другом направлении.
Сервер выдаёт charset когда я даю запрос в котором указываю URI странички с этого сервера.
Код: Выделить всё
Запрос:
HEAD /index.php HTTP/1.1
Host: www.smallchurchmusic.com
Connection: close
User-Agent: compatible; MSIE 7.0; Windows NT 6.0

Ответ:
HTTP/1.1 200 OK
Date: Mon, 04 Jan 2016 16:42:34 GMT
Server: Apache
X-Powered-By: PHP/5.3.29
Connection: close
Content-Type: text/html; charset=UTF-8

И сервер НЕ выдаёт charset когда я даю запрос в котором указываю URI файла с этого сервера.
Код: Выделить всё
Запрос:
HEAD /update/rma/resources/info/offer.html HTTP/1.1
Host: cp.unipay.ru
Connection: close
User-Agent: compatible; MSIE 7.0; Windows NT 6.0

Ответ:
HTTP/1.1 200 OK
Server: nginx/1.0.15
Date: Mon, 04 Jan 2016 17:50:13 GMT
Content-Type: text/html
Content-Length: 82042
Last-Modified: Fri, 20 Nov 2015 10:07:29 GMT
Connection: close
Accept-Ranges: bytes

Я понимаю, что с точки зрения HTTP и прочее и прочее. Но на минуточку, я просто привёл тут факт, вы же видите его.
Ориентируясь на charset я планирую отличать ссылки на странички от прямых ссылок на файлы.
Внимание, вот какой был вопрос: Это годный способ отличить прямую ссылку на файл?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Хакер » 04.01.2016 (Пн) 22:42

Adam Smith писал(а):Внимание, вот какой был вопрос: Это годный способ отличить прямую ссылку на файл?

Никакого, потому что с точки зрения HTTP нет ни страниц, ни файлов. Есть понятие «ресурс» и всё, и URL — его описатель-идентификатор.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 04.01.2016 (Пн) 22:53

Я бы тоже сейчас мог написать, что мне надоела твоя непроходимость. Понимаю, что и факты в зазеркалье иные. Но попробую ещё раз. Может это был не тот факт.
Любой браузер как-то отличает прямую ссылку когда начинает скачивать (или как огнелис и осел предлагает скачать файл), а ведь могло и иное произойти, например когда браузер начинает воспроизводить этот mp3-файл буквально перейдя на него как на страницу.
Вот и я хочу как-то кроме хвоста ссылки (*.xxx) отличать прямую ссылку на файл от другой ссылки на куда-то ещё.
Последний раз редактировалось Adam Smith 04.01.2016 (Пн) 22:55, всего редактировалось 1 раз.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Хакер » 04.01.2016 (Пн) 22:55

Adam Smith писал(а):Любой браузер как-то отличает прямую ссылку когда начинает скачивать (или как огнелис и осел предлагает скачать файл)


И что, в случае с /update/rma/resources/info/offer.html браузер предлагает тебе скачать этот html-файл, а не показывает его, как есть?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 04.01.2016 (Пн) 23:15

Рядом с ним есть ещё xml и cfg файлы. html и xml открываются в той же закладке в браузере, а cfg сразу скачивается.
Хром решил, что может воспроизвести эти типы. Хром и mp3 и avi воспроизвел, а не предложил скачать.
Но как-то наверное отличаются прямые ссылки или только по типу данных? Но я не хочу отфильтровывать html-файлы.

В ответе от википедии действительно в заголовке нет charset'а.
Код: Выделить всё
HTTP/1.1 301 TLS Redirect
Server: Varnish
Location: https://ru.wikipedia.org/wiki/User_Agent
Content-Length: 0
Accept-Ranges: bytes
Date: Mon, 04 Jan 2016 19:56:49 GMT
X-Varnish: 1214115036
Age: 0
Via: 1.1 varnish
Connection: close
X-Cache: cp3031 frontend (0)
Set-Cookie: WMF-Last-Access=04-Jan-2016;Path=/;HttpOnly;Expires=Fri, 05 Feb 2016 12:00:00 GMT
X-Client-IP: 91.215.221.250
Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
Set-Cookie: GeoIP=RU:12:Grozny:43.31:45.70:v4; Path=/; Domain=.wikipedia.org

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Admiralisimys » 04.01.2016 (Пн) 23:20

Хакер я стыкался с таким, что по ссылке веб сервер не отдаёт контент на просмотр, а провоцирует скачку последнего. К примеру http://download.microsoft.com/download/7/d/c/7dce8ed3-8d44-421f-902c-95391577ecb5/readme.htm
Обратная ситуация, когда браузер пытается буквально отобразить содержимое объекта, которого нужно бы сохранить в файл, тоже встречалась, но тут я больше склонен на то что это глюки браузера.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 04.01.2016 (Пн) 23:31

Ну вот кто-то с практическим опытом, а то меня всё футболят к теории HTTP. Спасибо тебе человек, ссылка явно наводит на размышление.
Похоже проверять можно только по хвосту ссылки. Если там .xxx или .xxxx, то качать в файл, а иначе наверняка скачаю страничку с сайта.
В моём то случае сервер не заставляет скачивать файл, а оставляет этот вопрос на усмотрение браузера, но значит это настройка сервера.
Последний раз редактировалось Adam Smith 04.01.2016 (Пн) 23:40, всего редактировалось 1 раз.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Хакер » 04.01.2016 (Пн) 23:38

Adam Smith писал(а):Хром решил, что может воспроизвести эти типы. Хром и mp3 и avi воспроизвел, а не предложил скачать.
Но как-то наверное отличаются прямые ссылки или только по типу данных?


Вот именно.

Есть способ, которым серверы напрямую могут указывать клиентам, отобразить (любым доступным методом) или сохранить необходимо данный ресурс. Для его предусмотрен заголовок Content-Disposition, он же имеет параметр, способный указать даже имя файла по умолчанию, под которым ресурс следует сохранять. Это имя оказывается заранее забитым в диалоге сохранения.

Если этого заголовка нет, предполагается, что браузер должен не предложить сохранить, а отобразить контент. А дальше браузер уже может сам выбрать, либо он умеет отображать и отображает, либо он не знает, что с этим MIME-типом делать и предлагает его скачать.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Хакер » 04.01.2016 (Пн) 23:40

Adam Smith писал(а):Ну вот кто-то с практическим опытом, а то меня всё футболят к теории HTTP. Спасибо тебе человек, ссылка явно наводит на размышление.
Похоже проверять можно только по хвосту ссылки. Если там .xxx или .xxxx, то качать в файл, а иначе наверняка скачаю страничку с сайта.


Ты недалёк в своих суждениях. Просто кто-то в отличие от тебя знает HTTP и знает заголовки (в частности — Content-Disposition), а кто-то лезет писать какие-то утилиты изучив пару вещей.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 04.01.2016 (Пн) 23:48

добавь частицу не, ато получается любимая тобою чушь

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Хакер » 04.01.2016 (Пн) 23:49

Adam Smith писал(а):добавь частицу не, ато получается любимая тобою чушь

Там было пропущено не «не», а «кто-то». Исправил.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 05.01.2016 (Вт) 0:08

Любитель конкретики, напиши "Ты лезешь писать утилиты ничего в этом не понимая и никто тебе не поможет." только не лей вокруг да около.
Эта твоя манера "любить конкретику и отвечать на конкретные вопросы" показушная и очень утомляет, это глупая и напрасная трата времени.
Ты конечно значимая величина в программировании и тебе некогда закончить даже то, что начал и что кроме тебя никто не сможет сделать.
Что уж говорить о каких-то там банальных утилитках, ты не станешь тратить своё время на такие вещи, но мне такая нужна и я сам её пишу.
Это не первая и не последняя свистелка, которую я написал для себя и поделился, как бы ужасно это не звучало для тебя, их было несколько.
Это ни в коем случае не попытка тебя оскорбить, это просто моя правда, раз уж разговор зашел о ком-то кто знает и ком-то другом, кто лезет.
Как там говорилось, кесарю кесарево, одни знают и не делятся, а другие лазят и делятся. Мог бы подсказать по делу, если бы не "характер".

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Хакер » 05.01.2016 (Вт) 0:10

Adam Smith писал(а):Мог бы подсказать по делу, если бы не "характер".

По-моему тебе подсказали, либо ты смотришь как-то слишком избирательно.

Истина об устройстве мира состоит в том, что в рамках HTTP нет понятия файлов, нет разделения на страницы и файлы, а есть только ресурсы. Есть только ресурсы и есть заголовок Content-Disposition, предписывающий, что браузер должен делать при получении ресурса. И есть MIME-типы.

Перевари это и думай, что с этим делать.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 05.01.2016 (Вт) 0:22

6 или 7 постов назад я это понял и так и написал, что буду ориентировать по хвосту ссылки, мне просто нет смысла держать настраиваемый список типов.
Сделаю одну галку в настройках, которая по-умолчанию включает мой импровизированный фильтр мусора, а если её снять, то будут валиться все ссылки.

Придумал, я не только хвост(расширение), но ещё и "название" файла буду контролировать на присутствие запрещенных в файловой системе символов,
а если совместить это с контролем присутствия charset, то и статичные странички сайта скорее всего не прорвутся в мой отфильтрованный список.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 05.01.2016 (Вт) 2:08

Показали мне вот эту ссылку и я понял, что по ссылке невозможно судить о том, что за ней скрывается.
http://www.sql.ru/forum/actualfile.aspx?id=18590450
Пока фильтр включен по-умолчанию буду отфильтровывать Content-Type: text/html, но имена файлов контролировать придется.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 05.01.2016 (Вт) 14:07

Adam Smith писал(а):я это понял и так и написал, что буду ориентировать по хвосту ссылки

Ничего ты не понял. Читай пока не дойдёт:
Хакер писал(а):есть заголовок Content-Disposition

Есть два заголовка content-type и content-disposition. Они однозначно определяют, что делать с файлом.
Никаких хвостов, никаких charset'ов, никаких других выкрутасов. Кроме обработки редиректа, но это совсем другая тема.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 05.01.2016 (Вт) 19:06

раз уж начал расскажи про выкрутасы с редиректом

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 05.01.2016 (Вт) 21:23

Снова, я такого ещё не делал. Логичнее распаралелить и проконтролировать работу массива инстансов класса, чтоб каждый выполнял свой HEAD запрос.
Для этого нужен будет код, которого я никогда раньше не писал. Лучше сначала отображу клиенту сырой список ссылок, чтобы он отобрал, что нужно.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение alibek » 05.01.2016 (Вт) 23:36

Если хочешь потрепать языком, то делать это нужно в соответствующем форуме.
Если хочешь решить конкретную задачу, используй готовый инструмент (wget, curl, их множество на любые требования).
Если хочешь понять, как решается подобная задача, то перечитай последнюю страницу и последуй данным советам.
В этом форуме беспредметные и пустые разговоры — офтопик.
Lasciate ogni speranza, voi ch'entrate.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 13.01.2016 (Ср) 11:09

wget я скачал и установил, древний, не работает под Win7
curl малоинформативный, древний консольный раритет
Последний раз редактировалось Adam Smith 14.01.2016 (Чт) 10:39, всего редактировалось 1 раз.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение alibek » 13.01.2016 (Ср) 12:12

Lasciate ogni speranza, voi ch'entrate.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 13.01.2016 (Ср) 14:05

Adam Smith писал(а):wget я скачал и установил, древний, не работает под Win7

http://ithappens.me/story/1778
Если ты не указал url и программа сказала, что url некорректный, то она не работает?

Вместо /? он хочет -h или --help - это как бы стандарт для линуксовых и кроссплатформенных программ.

Adam Smith
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 25.04.2008 (Пт) 9:04
Откуда: ЧР. Грозный

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Adam Smith » 13.01.2016 (Ср) 15:25

Qwertiy, я понял, это нормально, писать о curl цитируя то, что было сказано мной о wget. Продолжай :lol:

alibek, спасибо!

мне бы мануалы по-русски, попробую перевести онлайн переводчиками, и может быть просто напишу GUI, хотя всё равно нет гарантии, что это будет работать в Win7 и выше.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Утилита синхронизации файлов с HTTP в локальную папку

Сообщение Хакер » 13.01.2016 (Ср) 16:07

Adam Smith писал(а):wget я скачал и установил, древний, не работает под Win7
curl малоинформативный, древний консольный раритет


По-моему мы имеем дело с троллем.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Пред.След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot, Yandex-бот и гости: 1

    TopList