Видео смотреть бесплатно

Смотреть вк видео

Официальный сайт nokia 24/7/365

Смотреть видео бесплатно

22.09.10 19:25 E_user

Есть вопрос![Решено] Про curl

Задача - авторизоваться на сайте, затем скачать страничку и обработать её скриптом на bash.
По началу я думал просто скачать страничку с помощью wget, но не тут-то было.

Мне подсказали, что curl умеет авторизоваться. man curl вывел кучу текста, и я хотя-бы убедился, что такое есть. Далее пошел искать в инет. Там полно примеров, но кажется, что все связано с php.

Тогда как связать скрипт php и bash? Это наводит на мысль, что возможно тот curl, который мне нужен не совсем php.

Ведь могу-ли я (как) использовать те примеры, если все это пройдет через консоль?

В общем прошу помочь навести ясность.


Итог:
1
2
3
4
#!/bin/bash
gets=`curl -s --data "[email protected]&pass=пароль" http://login.vk.com/?act=login | egrep -o \([a-z]\|[0-9]\){20\,}`
curl -v --cookie-jar /tmp/vkcookie --data "s=$gets&op=slogin&redirect=1&expire=0&to=0" http://vkontakte.ru/login.php
curl -v --cookie /tmp/vkcookie http://vkontakte.ru/audio.php | grep -o 'http.*mp3' | wget -i -



Всем большое спасибо.



E_user 22.09.10 19:34 # +-1
Примеры тут и тут. Даже если так, как прицепить часть скрипта в bash?
goblinyara 22.09.10 19:42 # +-1
можно и без баша, чем вас php скрипты не устраивают?
E_user 22.09.10 20:09 # +-1
Практически нулевое знание. И не надо подколок, что с башем у меня так-же. :D
Да и вообще - именно на баше хочется сделать.
cf8 23.09.10 13:58 # +-1
тем, что php предназначем немного для другого.
goblinyara 23.09.10 14:26 # +-1
„С“ разрабатывался для создания операционных систем, но не прикладного ПО, так что о предназначении можно говорить оч долго... просто здесь что bash, что php нормально подходят
TIT 22.09.10 19:55 # +-1
Уточните конечную задачу. Что именно надо получит в итоге? Тогда проще будет подсказать инструмент. В одних случаях лучше bash, в других python или Qt/C++.
E_user 22.09.10 20:13 # +-1
Скачать все песни находящиеся на vkont...ru/audio.php

Задумыва так:

*авторизация*
curl исходник -O - | grep -o 'http.*mp3' | wget -i -

Это импровизационный вариант, если что, не смейтесь )
TIT 22.09.10 20:23 # +4
http://yandex.ru/yandsearch?stype=first&clid=46511&text=curl+%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F&lr=39
Это для начала.
Дело в том, что способов авторизации может быть много.
Вам необходимо понять, как именно происходит авторизация в ВКонтакте.
Что именно в момент отправки POST-запроса на сервер ВКонтакте туда отправляется, кроме логина и пароля. Далее вам не составит труда с помощь curl авторизоваться, принять "печеньки" с ВКонтакте и "стать на нём авторизованным".
Вторая часть Марлезонского балета состоит в том, чтобы пропарсить html-код страницы с музыкой и загрузить .mp3 файлы.

Давайте немного уточним-таки задачу?

1. Вам нужно загрузить n-ое количество музыкик себе на компьютер потом, что вам нужна эта музыка и то, откуда она будет загружена -- неважно?
2. Вы хотите научиться писать скрипты на bash/php?

Дело в том, что если вы укажите первый вариант, то есть масса иных, более лояльных способов получить музыку. prostopleer.com, music.yandex.ru и т. д.
Если же у вас стоит цель научиться писать скрипты и написать на их основе что-то полезное человечеству, то тут стоит начать несколько с более простых вещей, нежели авторизация, парсинг, даунлоуадинг.

p. s.: grep -o 'http.*mp3' у вас не сработает. Надо или указать, что вы будете в качестве шаблона использовать регулярное выражение ключиком -E, или же использовать для этого команду egrep (рекомендуется).

p. p. s.: Попробуйте приучить себя никогда не использовать короткий стиль аргументов команд в скриптах, форумах и т. д. Короткий стиль скрипта следует использовать только для одноразовых команд в вашей консоле.
E_user 22.09.10 20:43 # +-1
Я хочу научиться писать скрипты.
Но! Сейчас у меня загорелась именно эта идея, и согласен использовать скрипт, не зная полностью как он работает. Хотя я согласен изучить этот вопрос, и потом сам все сделать под свои нужды. Но хоть с чего начать? Имеено, что-бы быстрее решить именно эту задачу с curl и ВК.
goblinyara 22.09.10 21:17 # +2
принять "печеньки" с ВКонтакте

вспомнилось:

Блин. Купил коммуникатор китайского производства. Руссификация тоже китайского производства... Только после поллитра мы с напарником наконец догадались, что "ясные печенья", это "очистить cookies".
©bash.org.ru
E_user 22.09.10 21:38 # +-1
Сейчас я могу сохранить исходник к себе, и пропустить его через скрит
wget http://associt.org/index.html -O - | grep '<img class="playimg" onclick="return operate' | grep -o 'http.*mp3' | wget -i -


На хабре видел статьи про вконтакт и curl, авось удастся что-нибудь использовать.
E_user 22.09.10 21:39 # +-1
*скрипт
TIT 22.09.10 23:01 # +-1
Зачем так сложно?

curl "http://associt.org/index.html" 2> /dev/null | egrep -o 'http:.*mp3' | wget -i -
E_user 22.09.10 23:09 # +-1
Это на случай, если там и другие mp3 будут. Вообще такwget http://associt.org/index.html -O - | grep -o 'http.*mp3' | wget -i -
Иначе я не умею не умел.
E_user 22.09.10 21:52 # +-1
Забыыл - спасибо за попровки.
Zend 22.09.10 22:03 # +8
Вот этого достаточно для авторизации на ВКонтакте:

1
2
3
4
5
6
7

<form method="post" action="http://login.vk.com/?act=login">
  <input type="text" name="email">
  <input type="password" name="pass">
  <input type="submit" value=".">
</form>
 


Таким образом вам необходимо передать методом POST поле email значением которого будет ваш логин и поле pass значением которого будет пароль скрипту расположенному по адресу http://login.vk.com/?act=login. Он ответит вам специально сформированной страничкой, которая будет содержать еще одну форму:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

<html>
  <head>
    <meta http-equiv='content-type' content='text/html; charset=windows-1251' />
  </head>
  <body onload="try { document.getElementById('l').submit(); } catch(e) { document.getElementsByTagName('form')[0].submit(); }">
    <form id='l' method='post' action='http://vkontakte.ru/login.php'>
      <input type='hidden' name='s' value='44392dc17f3d7724016daa2ab156e72d0810cb417838ae1708757c17cb8' />
            <input type='hidden' name='op' value='slogin' />
      <input type='hidden' name='redirect' value='1' />

      <input type='hidden' name='expire' value='0' />
      <input type='hidden' name='to' value='' />
    </form>
  </body>
</html>
 


Вам нужно будет её отпарсить, дабы вычленить значение поля "s" (только оно здесь генерируются. Остальные не изменяются) и отправить методом POST скрипту http://vkontakte.ru/login.php. В ответ получите кукисы и страничку с вашим профилем.

Все вышеперечисленное следует делать один раз, только для того, чтобы получить кукисы, а потом куда угодно их подставлять, но можно этого и не делать, а тупо выдернуть их из браузера ;-)
time2die 22.09.10 22:55 # +-1
а можно готовый скрипт на чем-нить, и буду век добрым словом вспоминать, мне кроме заглавной страницы, ничего и не надо
TIT 22.09.10 22:59 # +0
Всё, что выше написал @Zend верно и применимо к консольному $ curl.
После того, как у вас будет обычный текстовый файл с cookie-данными внтури, вы можете подставляю Контакту этот файл забирать содержимое html-страниц, парсить их и т. д.
time2die 22.09.10 23:26 # +-1
спасибо, но в HTTP\POST\GET\CURl я совсем дурак, мне бы что бы по полочкам всё разложили, как-то никогда их не понимал =(
E_user 22.09.10 23:40 # +-1
Если учесть все, что я собрал, получается:
-послать запрос
-отпарсить
-авторизоваться и получить куки
-использую куки, делать что хочется

Все правильно? И все это можно сделать в рамках скрипта на баше..
zend 23.09.10 10:24 # +2
Делаем то, что делает браузер только вручную:

1
2
3

curl -v --data "[email protected]&pass=my_password" http://login.vk.com/?act=login
 


В выводе находим поля "s", "op", "redirect", "expire", "to" и формируем из них свой запрос (/tmp/cookie-vk - путь до файла где мы будем хранить cookie):
1
2
3

curl -v --cookie-jar /tmp/cookie-vk --data "s=4c262466659b4a25c252112a39021d349a43e811bf2dd2899f15921c&op=slogin&redirect=1&expire=0&to=0" http://vkontakte.ru/login.php
 


Все теперь у нас есть cookie! Идем на страничку со своим профилем (на любую другую) парсим её как хотим:

1
2
3

curl -v --cookie /tmp/cookie-vk http://vkontakte.ru/id1233036
 
E_user 23.09.10 22:33 # +0
Для меня получилось так:

1
2
3
4
#!/bin/bash
gets=`curl -s --data "[email protected]&pass=пароль" http://login.vk.com/?act=login | egrep -o \([a-z]\|[0-9]\){20\,}`
curl -v --cookie-jar /tmp/vkcookie --data "s=$gets&op=slogin&redirect=1&expire=0&to=0" http://vkontakte.ru/login.php
curl -v --cookie /tmp/vkcookie http://vkontakte.ru/audio.php | grep -o 'http.*mp3' | wget -i -
dagron 24.09.10 09:54 # +-1
А не могли бы вы обьяснить регулярное выражение?
а то у меня получилось так:
curl -s --data "[email protected]&pass=pass" http://login.vk.com/?act=login | egrep -o "name='s' value='[a-ze='[a-z0-9]+" | sed -e "s/name='s' value='//" -e "s/'//"
werru 24.09.10 19:55 # +0
выделяется слово длиннее 20 символов. ваш вариант более правильный, но и этот работает :)
werru 26.09.10 23:01 # +1
маленькое добавление в скрипт
curl -s "login.vk.com/?act=login&pass=`echo пароль_на_русском_или_любом_другом_языке | iconv -f UTF8 -t CP1251`&[email protected]" -c 33 | egrep -o \([a-z]\|[0-9]\){20\,}
werru 25.09.10 16:10 # +0
у меня только один вопрос. у меня пароль русскими ну не в какую не хочет логинится. с английскими всё нормально. что делать?
goblinyara 25.09.10 17:08 # +0
< CAPTAIN-MODE_ON >
использовать пароль с английскими символами
< CAPTAIN-MODE_OFF >

locale покажите
werru 25.09.10 19:30 # +0
я же написал с английским работает. не понимаю почему с русским не идёт

LANG=ru_RU.utf8
LANGUAGE=ru_RU:ru:en_GB:en
LC_CTYPE="ru_RU.utf8"
LC_NUMERIC="ru_RU.utf8"
LC_TIME="ru_RU.utf8"
LC_COLLATE="ru_RU.utf8"
LC_MONETARY="ru_RU.utf8"
LC_MESSAGES="ru_RU.utf8"
LC_PAPER="ru_RU.utf8"
LC_NAME="ru_RU.utf8"
LC_ADDRESS="ru_RU.utf8"
LC_TELEPHONE="ru_RU.utf8"
LC_MEASUREMENT="ru_RU.utf8"
LC_IDENTIFICATION="ru_RU.utf8"
LC_ALL=
Zend 26.09.10 14:09 # +1
Либо сменить локаль, либо перекодировать пароль в CP-1251 перед тем как его отправить. (сейчас он отправляется в UTF-8. Придется брать на себя работу браузера...)

PS.
В UTF-8 все английские символы кодируются одним байтом, все прочие двумя. Вот поэтому английский вариант пароля работает а кириллический нет.
sta2s 23.09.10 01:28 # +-1
Отличное объяснение, спасибо.
Уходя немного в сторону других ресурсов, как получить аналогичные данные, допустим, с animereactor,ru ? там какая-то странная штука с логином.
Оперовский драгонфлай не видит когда устанавливаются куки, но видит - когда они удаляются (а там их дай бъг 9 штук)
(проблема вся в том, что Flexget не может оттуда утягивать файлы из-за того, что тупое подсовывание кукисов не срабатывает)
Dagron 23.09.10 09:02 # +0
могу предложить aria2c
Load cookies
Load Mozilla/Firefox(1.x/2.x) and Netscape format:
aria2c --load-cookies=cookies.txt http://host/file

Load Firefox3 format:
aria2c --load-cookies=cookies.sqlite http://host/file

работает также и с куками хрома
правда это частичное решение проблемы, но для того чтобы получить страничку вполне подходит ;)
PS C:\Users\Dagron\aria2-1.10.0-mingw32msvc-build1> .\aria2c.exe --load-cookies="C:\Users\Dagron\AppData\Local\Google\Chrome\User Data\Default\Cookies" http://vkontakte.ru/feed2.php
ну можно еще так)
http://vkontakte.ru/idxxxxxxx
psyX 23.09.10 11:32 # +1
я так смотрю балан своего провайдера:

curl -s -c /tmp/onlime.cookies https://my.onlime.ru > /dev/null && curl -s -L -b /tmp/onlime.cookies -c /tmp/onlime.cookies -d "login_credentials[login]=LOGIN&login_credentials[password]=PASSWORD" https://my.onlime.ru/session/login | html2text | awk '/^Договор №:|^Лицевой счёт №:|^Баланс:/ {print}' && rm -rf /tmp/onlime.cookies
time2die 26.09.10 23:20 # +1

мечта идиота сбылась, пара строк на bash'е и у меня в треи есть количество новых сообщений контакта
E_user 26.09.10 23:41 # +1
В коньках может стать интересным дополнением. Можно посмотреть ваш вариант скрипта?

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 151)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 3057 из 226 городов)
            Топ пользователей Топ блогов
            welinux.ru

            В хорошем качестве hd видео

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн