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

Смотреть фильмы бесплатно

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

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

E_user 22.09.2010 19:25

Есть вопрос![Решено] Про 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 -</a-z>




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


Тэги:
+ 3 -
Похожие Поделиться

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

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

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

Это импровизационный вариант, если что, не смейтесь )
TIT 22.09.2010 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.2010 20:43 #
+ -1 -
Я хочу научиться писать скрипты.
Но! Сейчас у меня загорелась именно эта идея, и согласен использовать скрипт, не зная полностью как он работает. Хотя я согласен изучить этот вопрос, и потом сам все сделать под свои нужды. Но хоть с чего начать? Имеено, что-бы быстрее решить именно эту задачу с curl и ВК.
goblinyara 22.09.2010 21:17 #
+ 2 -
принять "печеньки" с ВКонтакте

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

Блин. Купил коммуникатор китайского производства. Руссификация тоже китайского производства... Только после поллитра мы с напарником наконец догадались, что "ясные печенья", это "очистить cookies".
©bash.org.ru
E_user 22.09.2010 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.2010 21:39 #
+ -1 -
*скрипт
TIT 22.09.2010 23:01 #
+ -1 -
Зачем так сложно?

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


<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. Он ответит вам специально сформированной страничкой, которая будет содержать еще одну форму:


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

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


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


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

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


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


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

#!/bin/bash
gets=`curl -s --data "[email protected]&pass=пароль" http://login.vk.com/?act=login | egrep -o \(\|<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.2010 09:54 #
+ -1 -
А не могли бы вы обьяснить регулярное выражение?
а то у меня получилось так:
curl -s --data "[email protected]&pass=pass" http://login.vk.com/?act=login | egrep -o "name='s' value='+" | sed -e "s/name='s' value='//" -e "s/'//"
werru 24.09.2010 19:55 #
+ 0 -
выделяется слово длиннее 20 символов. ваш вариант более правильный, но и этот работает :)
werru 26.09.2010 23:01 #
+ 1 -
маленькое добавление в скрипт
curl -s "login.vk.com/?act=login&pass=`echo пароль_на_русском_или_любом_другом_языке | iconv -f UTF8 -t CP1251`&[email protected]" -c 33 | egrep -o \(\|<0-9>\){20\,}
werru 25.09.2010 16:10 #
+ 0 -
у меня только один вопрос. у меня пароль русскими ну не в какую не хочет логинится. с английскими всё нормально. что делать?
goblinyara 25.09.2010 17:08 #
+ 0 -
< CAPTAIN-MODE_ON >
использовать пароль с английскими символами
< CAPTAIN-MODE_OFF >

locale покажите
werru 25.09.2010 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.2010 14:09 #
+ 1 -
Либо сменить локаль, либо перекодировать пароль в CP-1251 перед тем как его отправить. (сейчас он отправляется в UTF-8. Придется брать на себя работу браузера...)

PS.
В UTF-8 все английские символы кодируются одним байтом, все прочие двумя. Вот поэтому английский вариант пароля работает а кириллический нет.
Sta2s 23.09.2010 01:28 #
+ -1 -
Отличное объяснение, спасибо.
Уходя немного в сторону других ресурсов, как получить аналогичные данные, допустим, с animereactor,ru ? там какая-то странная штука с логином.
Оперовский драгонфлай не видит когда устанавливаются куки, но видит - когда они удаляются (а там их дай бъг 9 штук)
(проблема вся в том, что Flexget не может оттуда утягивать файлы из-за того, что тупое подсовывание кукисов не срабатывает)
Dagron 23.09.2010 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.2010 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_credentials=PASSWORD" https://my.onlime.ru/session/login | html2text | awk '/^Договор №:|^Лицевой счёт №:|^Баланс:/ {print}' && rm -rf /tmp/onlime.cookies
time2die 26.09.2010 23:20 #
+ 1 -

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

Смотреть онлайн бесплатно

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


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

Online video HD

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

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

Full HD video online

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

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

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