Хочу много контента спарсить с вк. Действую через API. Все хорошо, но вручную приходится прописывать ключи. Очень нужно автоматизировать, а не получается.
Что я сейчас пробую: беру форму входа которую мне присылают и иметирую ее ввод, но меня редирект кидает опять на туже форму. Как поступить?
Код: Выделить всё
<?php
// Простая функция обрезки
function cut($start, $stop, $str)
{
//Поиск начала
$spos = strpos($str, $start);
//Удлиняем строку
$spos = $spos + strlen($start);
//Режем строку от этой позиции
$text = substr($str, $spos);
//Ищем конец в полученной строке
$end_pos = strpos($text, $stop);
//Режем по конечной позиции
$text = substr($text, 0, $end_pos);
//Возвращаем результат
return $text;
}
$redirect_uri = $_SERVER['HTTP_HOST'] . '/vk.php';
if($_GET['code']) {
$url = 'https://api.vk.com/oauth/access_token?client_id=3364365&client_secret=Aqd46ZyQCUqLMuxdjcH1&code=' .
$_GET['code'] . '&redirect_uri=' . $redirect_uri;
} else
if(!$access_token) {
// Авторизуемся
$url = 'https://oauth.vk.com/authorize?client_id=3364365&scope=friends,video,offline&redirect_uri=' .
$redirect_uri . '&response_type=code';
}
// КУРЛ!
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT,
'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13');
curl_setopt($ch, CURLOPT_COOKIEFILE, './coockie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, './coockie.txt');
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
// получаем HTML в качестве результата
$output = curl_exec($ch);
if($_GET['code']) {
$token = json_decode($output, true);
$str = join(',', $token);
file_put_contents(dirname(__file__) . '/../../access_toren.txt', $str);
echo $str;
die('Полный доступ!!');
} else
if(!$access_token) {
// Вот тут делаем автоматизация входа
echo $output;
$params['email'] = '************';
$params['pass'] = '************';
$params['ip_h'] = cut('name="ip_h" value="', '"', $output);
$params['_origin'] = cut('name="_origin" value="', '"', $output);
$params['to'] = cut('name="to" value="', '"', $output);
$params['expire'] = cut('name="expire" value="', '"', $output);
$url = cut('id="login_submit" action="', '"', $output);
echo '<h1>Отправляю курл с пост наднными на адрес ' . $url . '</h1>
<br />
данные: <pre>', print_r($params), '</pre>
<hr/>';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$output = curl_exec($ch);
if(curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
echo $output;
preg_match('/(Location:|URI:)(.*?)\n/', $output, $matches);
curl_setopt($ch, CURLOPT_URL, trim($matches[2]));
$output = curl_exec($ch);
if(curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
echo $output;
}
http://turistamznat.ru/vk.php