Определение 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 запроса: Все вместе будет выглядеть так: http://service.boulder.ibm.com/asd-bin/ftp/javainuf.exe?category=free&product=java&language=en_us

Теперь остается только запустить 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 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ