Определение URL скачиваемого файла
Часто возникает необходимость узнать URL файла, который нормальным путем можно скачать только из веб-браузера, например, только ответив на вопросы в веб-форме или подтвердив лицензионное соглашение... В этом случае нередко полный URL файла не показывается целиком в окошке "Download File" в Netscape, а скачивать файл именно из Netscape не всегда удобно. Куда удобнее использовать wget. :)
Что же делать в таких случаях?
Самое простое - попробовать в Netscape нажать Ctrl-Alt-T, при этом будет показано окошко со списком открытых коннектов и, возможно, требуемый урл там будет виден целиком.
Для очень продвинутых пользователей можно порекомендовать утилитки iptrace и ipformat для протоколирования и последующего разбора TCP пакетов.
Есть еще один способ, основанный на знании протокола HTTP и языка HTML. Вот на нем мы и остановимся подробнее.
Первым делом нужно скачать страницу с веб-формой. Если вам известен ее полный URL, то можно это сделать с помощью wget. Если же до этого URL можно добраться только ответив на несколько вопросов в веб-формах, то придется использовать Netscape. На этой страничке нажимаете Ctrl-U (или через меню - View -> Page Source), затем Ctrl-A (выделить все), Ctrl-Insert (скопировать в clipboard), после чего в любом текстовом редакторе вставляете этот текст из clipboard'a по Shift-Insert (можно конечно пользоваться меню File -> Save As, но при этом в сохраняемый файл будет вставлено некоторое количество пустых строк). Следует заметить, что если на странице используются фрэймы, то сохранять нужно исходник именно фрэйма с веб-формой (popup-меню по правой кнопке мыши).
Итак, мы имеем исходный html c фоhмой. Теперь в нем нужно найти кусочек, соответствующий требуемой формочке. Например, на странице IBM OS/2 Warp Developer Kit, Java 1.1.8 для Runtime Package with Unicode Font это будет:
<form method=POST action="/asd-bin/ftp/javainuf.exe"> <input type=hidden name=category value=free> <input type=hidden name=product value=java> <input type=hidden name=language value=en_us> <input type=image SRC="/asd/images/en_us/download.jpg" ALT="Download using FTP" WIDTH="50" HEIGHT="51" BORDER="0" HSPACE="2">FTP - IBM Boulder, CO, USA </form>В данной форме используется HTTP метод POST (подробнее можно прочитать в rdm2), это несколько усложняет дело, но чем черт не шутит, попробуем использовать GET, вдруг заработает (для сайтов IBM этот фокус всегда проходит). Теперь нужно сформировать URL для HTTP запроса:
- URL сайта - http://service.boulder.ibm.com/
- каталог и файл на сайте - /asd-bin/ftp/javainuf.exe (атрибут action в тэге <form...>)
- параметры запроса. Здесь нас будут интересовать только те тэги <input...>,
которые имеют атрибут name. Нужны только значения атрибутов name и value.
В итоге получим следующее - ?category=free&product=java&language=en_us
Следует помнить, что пробелы следует заменять на "+", а все символы, коды которых в диапазонах 21h - 2fh, 3ah - 3fh и 80h - ffh на %xx (где xx - шестнадцатиричный код символа).
Теперь остается только запустить wget с ключем -d и наблюдать:
>wget -d "http://service.boulder.ibm.com/asd-bin/ftp/javainuf.exe?category=free&product=java&language=en_us" DEBUG output created by Wget 1.5.3 on i686-os2-emx. parseurl ("http://service.boulder.ibm.com/asd-bin/ftp/javainuf.exe?category=free &product=java&language=en_us") -> host service.boulder.ibm.com -> opath asd-bin/ ftp/javainuf.exe?category=free&product=java&language=en_us -> dir asd-bin/ftp -> file javainuf.exe?category=free&product=java&language=en_us -> ndir asd-bin/ftp --20:02:44-- http://service.boulder.ibm.com:80/asd-bin/ftp/javainuf.exe?categor y=free&product=java&language=en_us => `javainuf.exe%3Fcategory=free&product=java&language=en_us' Connecting to service.boulder.ibm.com:80... Created fd 3. connected! ---request begin--- GET /asd-bin/ftp/javainuf.exe?category=free&product=java&language=en_us HTTP/1.0 Host: service.boulder.ibm.com:80 Accept: */* ---request end--- HTTP request sent, awaiting response... HTTP/1.1 302 Found Date: Thu, 27 Jul 2000 00:05:29 GMT Server: IBM_HTTP_Server/1.3.6 Apache/1.3.7-dev (Unix) Location: ftp://service.boulder.ibm.com/software/asd/java/en_us/javainuf.exe Connection: close Content-Type: text/html Location: ftp://service.boulder.ibm.com/software/asd/java/en_us/javainuf.exe [following] Closing fd 3 ............А вот и тот самый искомый URL: ftp://service.boulder.ibm.com/software/asd/java/en_us/javainuf.exe
Если у вас есть вопросы или дополнения, то пишите, не стесняйтесь.
Напоследок хочу сказать спасибо всем участникам веб форума ru/2 за ценные идеи и советы.
Eugen Kuleshov.
Интересные ссылки:
Комментариев к странице: 0 | Добавить комментарий
Домой | Проект ядро Core/2 | Проект OS/4 Download | Новости | Гостевая книга | Подробно обо всем | Нужные программы | Проекты | OS/2 FAQ | Всячина | За и Против | Металлолом | #OS2Russian | RDM/2 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ