![]() |
|
#1
|
||||
|
||||
![]() Добрый день уважаемые кодеры. Мне тут пришла в голову идея что если можно скачать файл зная его адрес то может можно и скачать страницу. Но вот только если ктото знает как скачать страницу с картинками и без них зная адрес страницы.
|
#2
|
|||
|
|||
![]() InternetOpen
Эта функция инициализирует WinInet и возвращает дескриптор, который необходим для вызова других функций WinInet. В случае неудачи возвращается NULL. Более подробную информацию об ошибке можно получить, вызвав функцию GetLastError, которая возвращает один из кодов, определённых в файле wininet.h. HINTERNET WINAPI InternetOpen( LPCTSTR lpszAgent, DWORD dwAccessType, LPCTSTR lpszProxyName, LPCTSTR lpszProxyBypass, DWORD dwFlags ); lpszAgent Задаёт имя приложения, которое используется как агент в HTTP протоколе. Сервер может определять агента с помощью переменной сервера HTTP_USER_AGENT. Если ваша программа собирается выдавать себя за MS Internet Explorer, передайте в этот параметр строчку "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.0.2914) " dwAccessType Задаёт необходимый тип доступа (прямой или через прокси). Мы будем использовать значение INTERNET_OPEN_TYPE_PRECONFIG, которое устанавливает тип доступа в соответствии с установками в реестре. InternetConnect Эта функция открывает FTP, HTTP или Gopher сессию для заданного сайта. HINTERNET InternetConnect( HINTERNET hInternet, LPCTSTR lpszServerName, INTERNET_PORT nServerPort, LPCTSTR lpszUsername, LPCTSTR lpszPassword, DWORD dwService, DWORD dwFlags, DWORD_PTR dwContext ); hInternet Дескриптор, полученный вызовом предыдущей функции. lpszServerName Задаёт имя сервера. Это может быть обычное имя, например www.rsdn.ru, или адрес IP. nServerPort Номер TCP/IP порта к которому мы собираемся подсоединиться. Мы будем использовать значене INTERNET_DEFAULT_HTTP_PORT для обычных соединений, либо INTERNET_DEFAULT_HTTPS_PORT для SSL соединений. dwService Тип сервиса - FTP, HTTP или Gopher. Мы будем использовать INTERNET_SERVICE_HTTP. HttpOpenRequest HTTP запрос выполняется в несколько этапов: открытие запроса, определение HTTP заголовка, собственно отправка запроса, чтение и обработка данных. Эта функция, как следует из её названия, открывает HTTP запрос. HINTERNET HttpOpenRequest( HINTERNET hConnect, LPCTSTR lpszVerb, LPCTSTR lpszObjectName, LPCTSTR lpszVersion, LPCTSTR lpszReferer, LPCTSTR *lpszAcceptTypes, DWORD dwFlags, DWORD_PTR dwContext ); hConnect Дескриптор сессии. lpszVerb Задаёт имя команды запроса. Мы будем использавать методы "GET" и "POST". lpszObjectName Имя целевого объекта. Это может быть просто HTML файл, скрипт или выполняемый модуль на сервере. lpszReferer URL адрес предыдущей страницы. Чаще всего этот параметр игнорируется серверами, но если вдруг сервер перестанет подавать признаки жизни, попробуйте задать его, может помочь. lpszAcceptTypes Определяет тип содержимого допускаемого клиентской стороной. Иногда MS IE передаёт сюда вот такую длинную строчку: "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*", иногда это просто "*/*". dwFlags Комбинация интернет флагов. Например, при использовании SSL соединений мы будем указывать флаг INTERNET_FLAG_SECURE. Так же нам будет полезен флаг INTERNET_FLAG_KEEP_CONNECTION, который позволяет удерживать соединение с сервером между запросами. Это бывает полезно, если мы хотим, чтобы сервер не забыл о нас во время сессий требующих входа по паролю. HttpSendRequest Отсылает запрос на сервер. BOOL HttpSendRequest( HINTERNET hRequest, LPCTSTR lpszHeaders, DWORD dwHeadersLength, LPVOID lpOptional, DWORD dwOptionalLength ); hRequest Дескриптор, полученный вызовом предыдущей функции. lpszHeaders dwHeadersLength Позволяет добавлять дополнительные заголовки к запросу. Подробнее об HTTP заголовках можно узнать на http://www.w3.org/Protocols/. lpOptional dwOptionalLength Указатель на данные, которые будут посланы на сервер вместе с запросом. Используется в методах "POST" и "PUT". |
#3
|
|||
|
|||
![]() InternetReadFile
Эта функция выполняет невероятно полезную работу, она позволяет читать данные результата запроса. BOOL InternetReadFile( HINTERNET hFile, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, LPDWORD lpdwNumberOfBytesRead ); hFile Дескриптор сессии, полученный вызовом функции HttpOpenRequest. lpBuffer dwNumberOfBytesToRead Адрес и размер буфера, в который будут записаны данные. lpdwNumberOfBytesRead Число прочитанных байт. InternetCloseHandle Эта функция закрывает любой из дескрипторов, созданных предыдущими функциями. BOOL InternetCloseHandle( HINTERNET hInternet ); hInternet Дескриптор, полученный вызовом функций InternetOpen, InternetConnect или HttpOpenRequest. |
#4
|
|||
|
|||
![]() Есть исходник на С
|