wget + lostfilm + cookies

Нарыл на хабре сегодня замечательную статью про парсинг RSS лостфильма и закачку свежих торрентов wget’ом в watch-папку торрент-клиента. Все бы хорошо, вот только с cookies вышел затык: я пользуюсь замечательным браузером Opera, который хранит cookies в бинарном виде в файле ~/.opera/cookies4.dat, который wget не понимает.

Через некоторое время нагуглил парсер файла cookies4.dat на этом форуме. Однако и с ним что-то не срослось.

В конце-концов вооружился маном wget’а (ну правильно, документацию же читают либо когда нечего делать, либо когда что-то сломалось 😉 ) Из мануала узнал, что wget умеет сохранять сессионные куки в указанном файле. Дело осталось за малым — при помощи wget’а залогиниться на lostfilm.tv

Начал с того, что получил и ознакомился с  главной страницей сайта при помощи команды

loquens@home:~$ wget -qO - http://lostfilm.tv | less

Интерес представляет следующий кусок html-кода:

<form action="/useri.php" method="post">
<table class="text" cellpadding="0" cellspacing="0" align="center">
<tr>
        <td align="right"><CB><EE><E3><E8><ED>:</td>
        <td><input type="text" name="FormLogin" class="form_i" size="15" /></td>
</tr>
<tr>
        <td align="right"><CF><E0><F0><EE><EB><FC>:</td>
        <td><input type="password" name="FormPassword" class="form_i" size="15" /></td>
</tr>
<tr>
        <td></td>
        <td align="center"><input type="submit" value=" <C2><EE><E9><F2><E8> " class="form_b" /></td>
</tr>
<tr>
        <td colspan="2" align="center">
        <a href="/signup.php" class="user_menu_link"><D0><E5><E3><E8><F1><F2><F0><E0><F6><E8><FF></a> | <a href="/recover.php" class="user_menu_link"><C7><E0><E1><FB><EB> <EF>
<E0><F0><EE><EB><FC></a>
        </td>
</tr>
</table>
<input type="hidden" name="module" value="1" />
<input type="hidden" name="repage" value="user" />
<input type="hidden" name="act" value="login" />
</span>
</form>

Из него следует, что при логине пользователя вызывается скрипт useri.php, параметры передаются ему методом POST, а сами параметры выделены в представленной вырезке жирным шрифтом.

Соответственно, нам остается лишь послать при помощи следующей командной строки правильный запрос на логин и получить наш драгоценный файл с печеньками 🙂

 loquens@home:~$ wget -qO - http://lostfilm.tv/useri.php \
    --save-cookies cookies.txt --post-data \
    'FormLogin=username&FormPassword=password&\
module=1&repage=user&act=login'

В результате будет создан файл cookies.txt с примерно следующим содержимым:

# HTTP cookie file.
# Generated by Wget on 2010-04-20 21:25:22.
# Edit at your own risk.

.lostfilm.tv TRUE / FALSE 1303320319 phpbb2mysql_data ZZZZZZZZZ
.lostfilm.tv TRUE / FALSE 2147483647 pass             YYYYYYYYY
.lostfilm.tv TRUE / FALSE 2147483647 uid              XXXXXXXXX

Теперь этот файл можно использовать для закачки torrent-файлов с сервиса.

Данный метод можно применить и к другим сайтам, главное — разобраться, какие действия нужно осуществить для входа на сайт. Ну и чтобы сайт использовал cookies 🙂