С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 6

Вконтакте авторизация

26.10.2012, 18:37. Показов 4005. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет! Проблема: не могу выполнить авторизацию Вконтакте на PHP с использованием curl. Решения, которые я пробовал, ни одно не работало.
Например:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .
            'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';
$cookie = '';
$login = 'login@host.com';
$password = 'pass';
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);  
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, 'http://login.vk.com/?act=login');
$post = array(
            'act' => 'login',
            'q' => '',
            'al_frame' => '1',
            'expire' => '',
            'captcha_sid' => '',
            'captcha_key' => '',
            'from_host' => 'vkontakte.ru',
            'email' => $login,
            'pass' => $password
        );
 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
$answer = curl_exec($ch);
$sid = substr($answer, strpos($answer, "setCookieEx('sid', '") + 20, 60);
$cookie = 'remixsid=' . $sid;
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_URL, 'http://vkontakte.ru/');
$answer = curl_exec($ch);
echo $answer;
curl_close($ch);
п.с. моя глобальная задача- построение модели социального графа, я обращаюсь к al_friends.php, но поскольку я не авторизован, то он не выдает мне ничего.

Как решить мою проблему?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.10.2012, 18:37
Ответы с готовыми решениями:

CURL Авторизация ВКонтакте
Предоставляю Вам готовый скрипт для авторизации в сети ВКонтакте без её API, а по Логину и Паролю. На момент создания сообщения он...

Авторизация на ВКонтакте и другом сайте по ссылке "Войти через Вконтакте"
Добрый день .. такая ситуация.. С помощью POST запроса прохожу авторизацию в Вконтакте в webbrowser1 после чего захожу на другой сайт в...

Авторизация вконтакте
Здравствуйте, вот такой вопрос: Данные ввожу раз 10, всё правильно, а все равно пишет, мол неправильно procedure...

10
 Аватар для Nazz
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
26.10.2012, 18:48
а Вы уверены что вКонтакте разрешен curl?
1
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 6
26.10.2012, 18:50  [ТС]
Цитата Сообщение от Nazz Посмотреть сообщение
а Вы уверены что вКонтакте разрешен curl?
а почему нет?
0
 Аватар для Nazz
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
26.10.2012, 18:53
Цитата Сообщение от Wiilliam Посмотреть сообщение
а почему нет?
во избежание разного рода роботы роботов: парсинга контента, спама сообшений...
0
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 6
26.10.2012, 18:58  [ТС]
Nazz, может быть Вы правы. Тем не менее надеюсь, что это неправда.
Я представил всего лишь один из всех примеров, перепробованных мной сегодня.
Даже если и запретили curl, то что тогда делать ?
0
 Аватар для Nazz
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
26.10.2012, 19:00
обоснуйте чуть подробнее задачу которую Вам нужно выполнить, тогда можно будет предложить решение)
0
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 6
26.10.2012, 19:10  [ТС]
Цитата Сообщение от Nazz Посмотреть сообщение
обоснуйте чуть подробнее задачу которую Вам нужно выполнить, тогда можно будет предложить решение)
У меня есть друзья Вконтакте. Надо найти всех моих друзей , и друзей моих друзей, составить граф отношений (кто кому друг), залить в базу.
На хабре один товарищ давал ссылку, которая ведет на al_friends.php скрипт контакта, который выдает всех друзей по userid, он выдает инфу в JSON формате. НО, он выдает инфу только в случае если я Ручками из браузера запускаю этот урл, я авторизован. А если пытаюсь через file_get_contents или curl, ничего не пашет. Нужна авторизоваться. А это проблема.

Ссылка1
Ссылка2
0
 Аватар для Nazz
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
26.10.2012, 19:18
можно попробывать использовать vkApi функции для такой задачи. с их помощью можно вытащить друзей.
0
 Аватар для Pafos
97 / 97 / 17
Регистрация: 18.10.2009
Сообщений: 453
28.10.2012, 00:39
Цитата Сообщение от Nazz Посмотреть сообщение
а Вы уверены что вКонтакте разрешен curl?
Nazz, не сочтите за грубость, ну вы глупость смололи.

Wiilliam
Скрипт прекрасно работает - авторизация проходит успешно.
Проблема в том, что при 2ом запросе:
PHP
1
2
3
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_URL, 'http://vkontakte.ru/');
$answer = curl_exec($ch);
...вы отдаете неправильные cookie.

Убедится в этом можна написав:
PHP
1
2
$cookie = 'remixsid=' . $sid;
die($cookie);
На что вы получите кусок мусора.

Решения проблемы.
1. Вот эти строки:
PHP
1
2
$sid = substr($answer, strpos($answer, "setCookieEx('sid', '") + 20, 60);
$cookie = 'remixsid=' . $sid;
PHP
1
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
Удаляем или комментируем.

2. В рабочей директории создаете текстовый файл - cookie.txt
3. Перед каждым вызовом функции curl_exec(), пишем такие строки:
PHP
1
2
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
То есть cookie будут хранится в файле, пробуйте, удачи
1
0 / 0 / 0
Регистрация: 04.11.2011
Сообщений: 6
28.10.2012, 18:28  [ТС]
Pafos, попробовал ваши советы, тем не менее авторизоваться не получается. В качестве проверки я захожу на свою скрытую страницу, которая может быть показана только авторизованным пользователям. Код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .
            'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';
$login = 'login@host';
$password = 'pass';
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);  
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, 'http://login.vk.com/?act=login');
$post = array(
            'act' => 'login',
            'q' => '',
            'al_frame' => '1',
            'expire' => '',
            'captcha_sid' => '',
            'captcha_key' => '',
            'from_host' => 'vkontakte.ru',
            'email' => $login,
            'pass' => $password
        );
 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
$answer = curl_exec($ch);
 
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_URL, 'http://vk.com/idNUMBER');
$answer = curl_exec($ch);
echo $answer;
curl_close($ch);
Добавлено через 11 минут
хм, не получается сообщение прошлое отредактировать, странно.
Я нашел выход из проблемы. Надо просто заменить это
PHP
1
curl_setopt($ch, CURLOPT_URL, 'http://login.vk.com/?act=login');
на это
PHP
1
curl_setopt($ch, CURLOPT_URL, 'http://login.vk.com/');
Но при этом мои куки пустые. По идее этого быть не должно. Почему так происходит?
0
 Аватар для Pafos
97 / 97 / 17
Регистрация: 18.10.2009
Сообщений: 453
28.10.2012, 18:31
У меня ваш скрипт прекрасно работает!
1. У вас библиотека Curl подключена?
PHP
1
phpinfo();
2. Проверьте, ошибки есть? В начале скрипта вставьте эту строчку:
PHP
1
error_reporting(E_ALL);
Добавлено через 1 минуту
Цитата Сообщение от Wiilliam Посмотреть сообщение
Но при этом мои куки пустые. По идее этого быть не должно. Почему так происходит?
Точно не скажу, видимо при завершении работы скрипта они удаляются.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2012, 18:31
Помогаю со студенческими работами здесь

Авторизация В ВКонтакте
Помогите пожалуйста. Наверно авторизоваться через API намного легче? Можете скинуть пример кода. Гуглил - ничего рабочего не нашел...

Авторизация вконтакте
Люди добрые помогите а точнее создайте для меня пожалуйста программу на типа того что когда человек водит свой е-майл и пароль его...

Авторизация Вконтакте
Подскажите я делаю прогу для ВК и в ней надо будет авторизироваться логи и пароль и какой исходник подойдёт лучше для авторизации !?вот...

Авторизация Вконтакте
Пытаюсь авторизироватся в Вконтакте import urllib.parse, http.cookiejar cookie = http.cookiejar.CookieJar() opener =...

Авторизация Вконтакте
Народ, подскажите, возможно ли сделать авторизацию Вконтакте не по приложению, а напрямую через логин и пароль. Т.е у меня имеется форма с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru