Начал писать скрипт для контакта, но тут же встал затык с авторизацией: #!/usr/bin/python import cgi import urllib2 import Cookie import md5 def main(): print "Content-type: text/html\n" id = подставь id name = подставь мыло passw = подставь пароль md5passw = md5.new(passw) url = 'http://vkontakte.ru/id' + id req = urllib2.Request(url) req.add_header = ('User-Agent', "Mozilla/4.0 (compatible; MSIE 5.01; Widows NT)") req.add_header('Cookie', "remixpass=" + md5passw + ";remixemail" + name + ";remixmid" + id) f = urllib2.urlopen(req) print f.read() main() Благодарю за ценный совет.
типо такого? У меня не работает. Вываливает страницу с авторизацией, но значения не передает. data = {'email':name, 'pass'assw} params = urllib.urlencode(data) url = 'http://vkontakte.ru/login.php' req = urllib2.Request(url, params) req.add_header = ('User-Agent', "Mozilla/4.0 (compatible; MSIE 5.01; Widows NT)") f = urllib2.urlopen(req) print f.read()
Видимо контакт отдает кукисы и редиректит. Скрипт кукисы отбрасывает и следует по редиректу, в результате получаешь ответ в виде страницы авторизации
эм... это идея! Надо попробовать скормить странице с логином те же куки, что приходят по запросу главной страницы вместе с постом
Добрался сегодня вечером до скрипта. Нифига. Получаю куки от страницы login.php, скармливаю их же, но уже с постом авторизации. Так вообще страницу не грузит... токмо без кук.
Какой пост авторизации после получения кукисов если ты кукисы с пост запроса должен получить и использовать их для перехода по внутренним страницам
ща пробанем. Странные какие-то куки: remixlang=1; expires=Thu, 18-Mar-2010 20:02:53 GMT; path=/; domain=.vkontakte.ru, remixchk=5; expires=Sat, 20-Mar-2010 22:32:00 GMT; path=/; domain=.vkontakte.ru, remixchk=5; expires=Sat, 27-Mar-2010 22:27:53 GMT; path=/; domain=.vkontakte.ru, remixchk=5; expires=Fri, 12-Mar-2010 18:03:06 GMT; path=/; domain=.vkontakte.ru
rudra, Шлёшь log + pass на login.php Если всё окей - то он сделает редирект (302, location), тогда можешь забирать куку. Если редирект не сделал, то либо капча, либо вообще лог+пасс кривой. Теперь насчёт куки - remixsid уже месяца 3-4 обязательный параметр в куках, а вот всё остальное - мусор (ну, за исключением тех случаев, когда нужно стырить акк). Так что можешь смело брать только remixsid, его вообще можно один раз получить и год пользоваться. Пока пасс, конечно, старый ___ дополнение: можно быстро чекать приготовленные куки очень быстрым способом: обращаться к vkontakte.ru с кукой, после чего смотреть, идёт ли 302 с location или нет скорость + экономия + акк в он-лайн не вылетает, что тоже важно (при запросе vkontakte.ru с правильной кукой делается редирект на profile.php (он же idX)).
ага. Принцип ясен. Я постом получаю с логин.пхп куку с remixsid и дальше скармливаю ее, например, странице своей анкеты. Спасибо. Буду пробовать написать такое. Когда получится, выложу сорцы
http://forum.devisible.ru//showthread.php?t=297 посмотри тут мой бот. Только парсинг страници фигово реализовал (с ошибкой) и для аостинга надо куча данных
Скандалы интриги расследования??? ппц код в первом посте, я пока не в cgi, переделать труда не составит думаю. PHP: def LoginsContact(nickname,password): cookie = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) urllib2.install_opener(opener) headers = {"User-Agent" : "Mozilla/4.0 (compatible; MSIE 5.5; WindowsNT)" } data_s = {"email":nickname, "pass":password} send_data = urllib.urlencode(data_s) u_request = urllib2.Request("http://vkontakte.ru/login.php", send_data, headers) try: vk = str(urllib2.urlopen(u_request).info()) except: cookie = status = "ERROR" return cookie, status else: if "remixsid=deleted" in str(vk): status = "NO" return cookie, status else: status = "YES" return cookie, status
добрался до отправки запроса на дружбу. Вот код хтмл: <li><a href="mail.php?act=write&to=2300774">Отправить сообщение</a></li><li><a href="friend.php?id=2300774">Друзья Женечки</a></li><li><a href="#add" onclick="addToFriend(2300774); return false;">Добавить в друзья</a></li> Из этого сделал вывод, что запрос на авторизацию должен выглядеть вот так: "http://vkontakte.ru/addToFriend(" + id + "); return false;" Но в результате не видно вот той шняги, которую только недавно ввели и где есть кнопка "добавить"
onclick="addToFriend(2300774); return false;" Это е надо приписывтаь к урлу. Это javascript. Смотри запрос, напрмиер, плагином live http headers для firefox
интересный плагин. Вот какой результат: 1. Запрос при запросе на дружбу(который открывает окошко): POST /friend.php act=a_add_form&fid=795186 2. Запрос при отправки формы из окошка: POST /friend.php act=addFriend&fid=795186&h=1367d519&first_name=%D0%AE%D0%BB%D0%B8%D1%8F&last_name=%D0%A0%D0%B0%D0%B5%D0%B2%D1%81%D0%BA%D0%B0%D1%8F&sex=%D0%B0&message=Privet Я думаю, что можно сразу использовать второй запрос. Получается: /friend.php act=addFriend&fid=IDЖЕРТВЫ&h=1367d519&first_name=ИМЯ&last_name=ФАМИЛИЯ&sex=ПОЛ&message=МЕССАДЖ_КАМРАДУ Но одна непонятка. Что это за число? 1367d519 Просто рандомное??? Не совсем рандомное. Каждому юзеру идет свое. И при повторе запроса оно одинаковое.