Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Скачать файл из Inet-a

246
28 апреля 2005 года
GIZMO
1.8K / / 30.07.2004
Привет!

Использую для закачки:
InternetOpen
HTTPQueryInfo
InternetOpenURL
InternetReadFile

Вопрос:
Если ссылка представляет собой PHP скрипт, то скачивается сам скрипт. Это конечно интересно, но мне нужен файл. Как быть?
10
28 апреля 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by GIZMO
Если ссылка представляет собой PHP скрипт, то скачивается сам скрипт.


А тебе не кажется, что это проблемы сервера? Кто ему давал право отдавать невыполненный скрипт? Уязвимость, однако.

246
29 апреля 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Freeman
А тебе не кажется, что это проблемы сервера? Кто ему давал право отдавать невыполненный скрипт? Уязвимость, однако.


Да мне-то вообщем пофиг уязвимый он или нет. Как файл скачать? Может др. функции надо использовать?

1
29 апреля 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by GIZMO
Да мне-то вообщем пофиг уязвимый он или нет. Как файл скачать? Может др. функции надо использовать?


Но вообщето при открытии ссылки ты должен одним из методов (Get? Post?)передать параметр скрипту. Может ошибка именно здесь? или же проблема действительно на сервере - трудно что либо посоветовать.

246
03 мая 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by kot_
Но вообщето при открытии ссылки ты должен одним из методов (Get? Post?)передать параметр скрипту. Может ошибка именно здесь? или же проблема действительно на сервере - трудно что либо посоветовать.


Вот ссылка (для примера):
http://sources.codenet.ru/download.php?id=588&cid=0&o=0&my=0
Нужно получить указатель HINTERNET hFile c которым можно работать(опр-ть размер, скачать файл или часть файла).
Мои действия с использованием WinInet:
1...?
2...?
n...?

2.3K
03 мая 2005 года
ART-CODE
134 / / 15.11.2004
ты наверно уже заметил, что одна и таже ссылка в одном случае открывает страницу, а в другом - приводит к загрузке файла
Это можно сделать только анализируя на стороне сервера поля HTTP заголовка например поле Referer и Cookie.

Вот так выглядит запрос на открытие страницы
Код:
GET /download.php?id=588&cid=0&o=0&my=0 HTTP/1.0

Accept: */*

Referer: http://forum.codenet.ru/showthread.php?s=&threadid=22972

Accept-Language: ru

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)

Host: sources.codenet.ru

Cookie: bblastvisit=1113808206; bbuserid=9349; bbpassword=569a06ac5bd800f4f335ebf94ae35294; ; bbthreadview=a%3A1%3A%7Bi%3A22972%3Bi%3A1115119351%3B%7D; PHPSESSID=a2ad1e24e50bd1403edbfb0a65c47c67; b=b

Вот так выглядит запрос на скачивание файла
Код:
GET /download.php?id=588&cid=0&o=0&my=0 HTTP/1.0

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*

Referer: http://sources.codenet.ru/download.php?id=588&cid=0&o=0&my=0

Accept-Language: ru

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)

Host: sources.codenet.ru

Cookie: bblastvisit=1113808206; bbuserid=9349; bbpassword=569a06ac5bd800f4f335ebf94ae35294; ; bbthreadview=a%3A1%3A%7Bi%3A22972%3Bi%3A1115119351%3B%7D; PHPSESSID=a2ad1e24e50bd1403edbfb0a65c47c67; b=b

Делайте выводы, господа программисты... :)
246
05 мая 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by ART-CODE
ты наверно уже заметил, что одна и таже ссылка в одном случае открывает страницу, а в другом - приводит к загрузке файла
Это можно сделать только анализируя на стороне сервера поля HTTP заголовка например поле Referer и Cookie.

Вот так выглядит запрос на открытие страницы
Код:
GET /download.php?id=588&cid=0&o=0&my=0 HTTP/1.0

Accept: */*

Referer: http://forum.codenet.ru/showthread.php?s=&threadid=22972

Accept-Language: ru

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)

Host: sources.codenet.ru

Cookie: bblastvisit=1113808206; bbuserid=9349; bbpassword=569a06ac5bd800f4f335ebf94ae35294; ; bbthreadview=a%3A1%3A%7Bi%3A22972%3Bi%3A1115119351%3B%7D; PHPSESSID=a2ad1e24e50bd1403edbfb0a65c47c67; b=b

Вот так выглядит запрос на скачивание файла
Код:
GET /download.php?id=588&cid=0&o=0&my=0 HTTP/1.0

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*

Referer: http://sources.codenet.ru/download.php?id=588&cid=0&o=0&my=0

Accept-Language: ru

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)

Host: sources.codenet.ru

Cookie: bblastvisit=1113808206; bbuserid=9349; bbpassword=569a06ac5bd800f4f335ebf94ae35294; ; bbthreadview=a%3A1%3A%7Bi%3A22972%3Bi%3A1115119351%3B%7D; PHPSESSID=a2ad1e24e50bd1403edbfb0a65c47c67; b=b

Делайте выводы, господа программисты... :)


Чего-то про одну и ту же ссылку Я не понял. Разъясни пожайлуста. Я не программист.

2.3K
05 мая 2005 года
ART-CODE
134 / / 15.11.2004
Цитата:
Originally posted by GIZMO
Чего-то про одну и ту же ссылку Я не понял. Разъясни пожайлуста. Я не программист.



Так ты же сам ее привел в качестве примера

 
Код:
Вот ссылка (для примера):
http://sources.codenet.ru/download.php?id=588&cid=0&o=0&my=0

Если на нее кликнуть - открывается страница,
на которой можно скачивать файл.
Для скачивания нужно еще раз кликнуть
- там, где написано
 
Код:
Скачать файл Rus.rar (16.2 Kb)

Если посмотреть свойства этой ссылки, станет видно, что ее текст такой-же, как и тот, что открывает эту страницу.
Вот и получается, что
 
Код:
одна и таже ссылка в одном случае открывает страницу, а в другом - приводит к загрузке файла
246
05 мая 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by ART-CODE
Так ты же сам ее привел в качестве примера
 
Код:
Вот ссылка (для примера):
http://sources.codenet.ru/download.php?id=588&cid=0&o=0&my=0

Если на нее кликнуть - открывается страница,
на которой можно скачивать файл.
Для скачивания нужно еще раз кликнуть
- там, где написано
 
Код:
Скачать файл Rus.rar (16.2 Kb)

Если посмотреть свойства этой ссылки, станет видно, что ее текст такой-же, как и тот, что открывает эту страницу.
Вот и получается, что
 
Код:
одна и таже ссылка в одном случае открывает страницу, а в другом - приводит к загрузке файла


Дак мне то, что делать? Как настроить загрузку через WinInet?

2.3K
05 мая 2005 года
ART-CODE
134 / / 15.11.2004
Цитата:
Originally posted by GIZMO
Дак мне то, что делать? Как настроить загрузку через WinInet?


В файле WININET.H прямо указано:

 
Код:
INTERNETAPI_(HINTERNET) InternetOpenUrlA(
    IN HINTERNET hInternet,
    IN LPCSTR lpszUrl,
    IN LPCSTR lpszHeaders OPTIONAL,
    IN DWORD dwHeadersLength,
    IN DWORD dwFlags,
    IN DWORD_PTR dwContext
    );

В твоем случае НУЖНО заполнить lpszHeaders
см.выше (внимательно) пример запроса на скачивание- поле Referer: должно содержать ту-же ссылку, что и поле GET
И не забудь про dwHeadersLength

Более того - на каждом сайте могут быть свои правила - может кто-то проверяет "Cookie:"
Нужно перехватывать пакеты, которыми обмениваются сервер и броузер , анализировать их (для этого tcplogger.exe - uinc.ru)
Через "Cookie:" могут выдавать временный билет на скачивание файла только тем , кто перед этим посетил другие страницы сайта...
246
06 мая 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by ART-CODE
В файле WININET.H прямо указано:
 
Код:
INTERNETAPI_(HINTERNET) InternetOpenUrlA(
    IN HINTERNET hInternet,
    IN LPCSTR lpszUrl,
    IN LPCSTR lpszHeaders OPTIONAL,
    IN DWORD dwHeadersLength,
    IN DWORD dwFlags,
    IN DWORD_PTR dwContext
    );

В твоем случае НУЖНО заполнить lpszHeaders
см.выше (внимательно) пример запроса на скачивание- поле Referer: должно содержать ту-же ссылку, что и поле GET
И не забудь про dwHeadersLength


Да то, что надо чего-то добавить в отправляемый хедер Я сразу подозревал и про параметр [LPCSTR lpszHeaders OPTIONAL] в курсе. Весь вопрос был чего именно. Как Ты уже догадался в HTTP Я ни бум-бум (поэтому и использую WinInet). И еще хочу уточнить - так будет всегда вслучае если сылка есть скрипт? Вот исследовал вчера, что говорит FlashGet:

Цитата:
Originally posted by FlashGet

Thu May 05 20:29:04 2005 Соединение с soft.0zones.com:80
Thu May 05 20:29:04 2005 Соединяемся с soft.0zones.com [IP=202.101.171.234:80]
Thu May 05 20:29:07 2005 Соединение установлено
Thu May 05 20:29:07 2005 GET /SoftDown.asp?ID=1446 HTTP/1.1
Thu May 05 20:29:07 2005 Host: soft.0zones.com
Thu May 05 20:29:07 2005 Accept: */*
Thu May 05 20:29:07 2005 Referer: http://soft.0zones.com/SoftView/SoftView_1446.html
Thu May 05 20:29:07 2005 Cookie: flux_stat_user=0.45876300 11153105131996051473; FromUrl=soft.0zones.com
Thu May 05 20:29:07 2005 User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Thu May 05 20:29:07 2005 Pragma: no-cache
Thu May 05 20:29:07 2005 Cache-Control: no-cache
Thu May 05 20:29:07 2005 Connection: close
Thu May 05 20:29:11 2005 HTTP/1.1 302 Object moved
Thu May 05 20:29:11 2005 Connection: close
Thu May 05 20:29:11 2005 Date: Thu, 05 May 2005 16:30:29 GMT
Thu May 05 20:29:11 2005 Server: Microsoft-IIS/6.0
Thu May 05 20:29:11 2005 Location: http://component.0zones.com:888/down/Raize.DropMaster.v1.50.rar
Thu May 05 20:29:11 2005 Content-Length: 184
Thu May 05 20:29:11 2005 Content-Type: text/html
Thu May 05 20:29:11 2005 Set-Cookie: ASPSESSIONIDSQTAASAA=PPKPFOBBLKHFEGCHLHIDBEMD; path=/
Thu May 05 20:29:11 2005 Cache-control: private
Thu May 05 20:29:11 2005 Перенаправление на http://component.0zones.com:888/down/Raize.DropMaster.v1.50.rar
Thu May 05 20:29:11 2005 Соединение с component.0zones.com:888
Thu May 05 20:29:11 2005 Соединяемся с component.0zones.com [IP=202.101.171.234:888]
Thu May 05 20:29:12 2005 Соединение установлено
Thu May 05 20:29:12 2005 GET /down/Raize.DropMaster.v1.50.rar HTTP/1.1
Thu May 05 20:29:12 2005 Host: component.0zones.com:888
Thu May 05 20:29:12 2005 Accept: */*
Thu May 05 20:29:12 2005 Referer: http://soft.0zones.com/SoftView/SoftView_1446.html
Thu May 05 20:29:12 2005 Cookie: ASPSESSIONIDSQTAASAA=PPKPFOBBLKHFEGCHLHIDBEMD
Thu May 05 20:29:12 2005 User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Thu May 05 20:29:12 2005 Pragma: no-cache
Thu May 05 20:29:12 2005 Cache-Control: no-cache
Thu May 05 20:29:12 2005 Connection: close
Thu May 05 20:29:13 2005 HTTP/1.1 200 OK
Thu May 05 20:29:13 2005 Content-Length: 1723180
Thu May 05 20:29:13 2005 Content-Type: application/octet-stream
Thu May 05 20:29:13 2005 Last-Modified: Mon, 26 Apr 2004 16:00:00 GMT
Thu May 05 20:29:13 2005 Accept-Ranges: bytes
Thu May 05 20:29:13 2005 ETag: "0802387a72bc41:1823"
Thu May 05 20:29:13 2005 Server: Microsoft-IIS/6.0
Thu May 05 20:29:13 2005 Date: Thu, 05 May 2005 16:30:33 GMT
Thu May 05 20:29:13 2005 Connection: close
Thu May 05 20:29:13 2005 Переход в состояние [Закачка]


тут вроде поля Refer и Get не совпадают.

Цитата:
Originally posted by ART-CODE

Более того - на каждом сайте могут быть свои правила - может кто-то проверяет "Cookie:"
Нужно перехватывать пакеты, которыми обмениваются сервер и броузер , анализировать их (для этого tcplogger.exe - uinc.ru)
Через "Cookie:" могут выдавать временный билет на скачивание файла только тем , кто перед этим посетил другие страницы сайта...


Неужели все так сложно...

2.3K
10 мая 2005 года
ART-CODE
134 / / 15.11.2004
>> Неужели все так сложно...

CGI - это программа, и как она работает - знает только ее разработчик,
поэтому выводить какие-то общие правила совсем не просто.
Иногда такой эффект возникает из-за не опытности
автора CGI, который не предусмотрел все возможные
варианты ситуаций.
Иногда этого требует политика администрации сайта.
Например есть хостеры, которые на один порт (80)
вешают дох@#№... сайтов с разными доменными
именами, а разводка осуществляется по полю "Host:"
Можно себе представить что будет, если не заполнить это поле :)
Я то-же не могу всего предугадать..
Можно только собрать определенную статистику
поведения скриптов и на ее основе создать обработчики для множества различных ситуаций.
Но все это будет работать не со 100% гарантией,
а с какой-то долей вероятности.
Вот такое "IMHO" :)

Обрати внимание на запись "Перенаправление на..."
это реакция на строку
"Location: http://component.0zones.com:888/dow...aster.v1.50.rar"
В ответ на первый запрос был выдан адрес, с которого нужно скачивать файл, вторым запросом
пошло скачивание файла. Вроде все очевидно...

12K
11 октября 2005 года
MadGod
6 / / 28.09.2005
Цитата:
Originally posted by ART-CODE

Обрати внимание на запись "Перенаправление на..."
это реакция на строку
"Location: http://component.0zones.com:888/dow...aster.v1.50.rar"
В ответ на первый запрос был выдан адрес, с которого нужно скачивать файл, вторым запросом
пошло скачивание файла. Вроде все очевидно...



2 Gizmo:

анализируй статусы ответа сервера :

 
Код:
if(!HttpQueryInfo(hResourceHandle, HTTP_QUERY_FLAG_NUMBER | HTTP_QUERY_STATUS_CODE, &dwStatus, &dwStatusSize, NULL))
    {
        errout("echo_http_status: HttpQueryInfo error = %i!!\n", GetLastError());
        return -1;
    };

dwStatus <- Собсна статус


сами коды в MSDN топик HTTP Status Codes. Если сервер присылает редирект, то создавай новый запрос на ресурс.
Браузеры, как правило, поддерживают авторедирект, а вот твоя прога еще нет..
По предыдущим топикам судить, то скрипт, который ты дал для примера, походу анализит Реферера, т.е. откуда пришел пользователь. Чтобы не размещали ссыкли на вражьих серверах.. А так может придется подделывать заголовки, куки ..
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог