[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Curl - Get запрос
ArtemKrass
Добрый день!
Имеется функция:

function requester($url, $post = 0, $cookies = '', $head = 1, $body = 0)
{
$cl = curl_init();
curl_setopt($cl, CURLOPT_URL, $url);
curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cl, CURLOPT_HEADER, $head);
curl_setopt($cl, CURLOPT_COOKIE, $cookies);
curl_setopt($cl, CURLOPT_NOBODY, $body);
if ($post){
curl_setopt($cl, CURLOPT_POST, 1);
curl_setopt($cl, CURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest')); //иммитируем AJAX запрос
curl_setopt($cl, CURLOPT_POSTFIELDS, $post);
}
$line = curl_exec($cl);
curl_close($cl);
return $line;
}


C помощью нее успешно отправляются Post запросы.
Но появилась необходимость отправить Get, чтобы получить код страницы и пропарсить ее...

Сниффер мне выдает ссылку:
http://ru11.grepolis.com/game/building_pla..._=1342004135652

Где h=2f089cf9271 - переменная, которая парсится из кода страницы...

Делаю так:

$culture = requester('http://ru11.grepolis.com/game/building_place?action=culture&town_id=51543&h='.$token[1]'&json=%7B%22town_id%22%3A%2251543%22%2C%22nlreq_id%22%3A16133329%7D&_=1342003348170', 0, $cook, 1, 0);
print $culture


Выскакивает ошибка... Что не так?



Спустя 44 минуты, 15 секунд (11.07.2012 - 14:43) ArtemKrass написал(а):
Разобрался. Точку пропустил после $token[1]

Спустя 46 минут, 7 секунд (11.07.2012 - 15:29) ArtemKrass написал(а):
Блин, почему я получаю не ту страницу которая мне нужна???

Опишу подробнее:

Вот код скрипта:

<?php
header('Content-Type: text/html; utf-8; charset=UTF-8');
function requester($url, $post = 0, $cookies = '', $head = 1, $body = 0)
{
$cl = curl_init();
curl_setopt($cl, CURLOPT_URL, $url);
curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cl, CURLOPT_HEADER, $head);
curl_setopt($cl, CURLOPT_COOKIE, $cookies);
curl_setopt($cl, CURLOPT_NOBODY, $body);
if ($post){
curl_setopt($cl, CURLOPT_POST, 1);
curl_setopt($cl, CURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest')); //иммитируем AJAX запрос
curl_setopt($cl, CURLOPT_POSTFIELDS, $post);
}
$line = curl_exec($cl);
curl_close($cl);
return $line;
}

$login = 'Tartang';
$password = '7TXzMQvUZt3qUqh';

preg_match_all('#Set-Cookie: (\S+;)#i', requester('http://ru.grepolis.com/start/index?action=login_from_start_page', 'json={"name":"'.$login. '","password":"'.$password.'","passwordhash":"","autologin":false}', 0, 1, 0), $co);
$cook = implode('', $co[1]);

preg_match('#Location: (\S+)\r\n#i', requester('http://ru.grepolis.com/start?action=login_to_game_world', 'world=ru11&facebook_session=&facebook_login=&gift_key=&portal_sid=&name=&pa ssword=', $cook, 1, 0), $urls);
preg_match_all('#Set-Cookie: (\S+;)#i', requester($urls[1], 0, 0, 1, 0), $co);
$cook = implode(' ', $co[1]);

$ans = requester('http://ru11.grepolis.com/game/index?login=1', 0, $cook, 1, 0);

preg_match("#Game\.csrfToken = '(\S+)'#", $ans, $token);

?>


Для дальнейшего парсинга мне нужно получить вот такой ответ:
user posted image

Отправляю Get запрос, который показал сниффер:

$culture = requester('http://ru11.grepolis.com/game/building_place?action=culture&town_id=51543&h='.$token[1].'&json=%7B%22town_id%22%3A%2251543%22%2C%22nlreq_id%22%3A0%7D&_=1342009498240', 0, $cook, 1, 0);


При выводе $culture, мне выдается главная страница...
Как же получить именно тот контент, который показан в сниффере?

Спустя 3 часа, 42 минуты, 33 секунды (11.07.2012 - 19:11) ArtemKrass написал(а):
Не пойму как формировать эти данные:
"nlreq_id"
"_"

Походу они как-то на времени сервера завязаны...
Из-за них может не тот content возвращаться?

Спустя 57 минут, 35 секунд (11.07.2012 - 20:09) ArtemKrass написал(а):
С "nlreq_id" разобрался, а вот с "_" никак... Где же брать это значение?

Спустя 56 минут, 50 секунд (11.07.2012 - 21:06) ArtemKrass написал(а):
Если использовать time(), я получаю 10-ти значное число...
А параметр "_" состоит из 13 символов, первые 10-ть из которых генерируются time(). А что за остальные три цыфры?

Никак не могу додуматься... Помогите, пожалуйста!!!

Спустя 12 часов, 18 минут, 49 секунд (12.07.2012 - 09:24) ArtemKrass написал(а):
Вот что получается:

<?php
header('Content-Type: text/html; utf-8; charset=UTF-8');
function requester($url, $post = 0, $cookies = '', $head = 1, $body = 0)
{
$cl = curl_init();
curl_setopt($cl, CURLOPT_URL, $url);
curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cl, CURLOPT_HEADER, $head);
curl_setopt($cl, CURLOPT_COOKIE, $cookies);
curl_setopt($cl, CURLOPT_NOBODY, $body);
if ($post){
curl_setopt($cl, CURLOPT_POST, 1);
curl_setopt($cl, CURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest')); //иммитируем AJAX запрос
curl_setopt($cl, CURLOPT_POSTFIELDS, $post);
}
$line = curl_exec($cl);
curl_close($cl);
return $line;
}

$login = 'Tartang';
$password = '7TXzMQvUZt3qUqh';

//get session [grepolis.com]
preg_match_all('#Set-Cookie: (\S+;)#i', requester('http://ru.grepolis.com/start/index?action=login_from_start_page', 'json={"name":"'.$login. '","password":"'.$password.'","passwordhash":"","autologin":false}', 0, 1, 0), $co);
$cook = implode('', $co[1]);

//get url ans sess [ru11.grepolis.com]
preg_match('#Location: (\S+)\r\n#i', requester('http://ru.grepolis.com/start?action=login_to_game_world', 'world=ru11&facebook_session=&facebook_login=&gift_key=&portal_sid=&name=&pa ssword=', $cook, 1, 0), $urls);
preg_match_all('#Set-Cookie: (\S+;)#i', requester($urls[1], 0, 0, 1, 0), $co);
$cook = implode(' ', $co[1]);

//join to game
$ans = requester('http://ru11.grepolis.com/game/index?login=1', 0, $cook, 1, 0);

// other thash and stuff
preg_match("#Game\.csrfToken = '(\S+)'#", $ans, $token);
//echo $token[1];

$time = explode(' ', microtime());
$timef = $time[1] . substr($time[0], 2, 3);
//echo $timef;

$culture = requester('http://ru11.grepolis.com/game/building_place?action=culture&town_id=51543&h='.$token[1].'&json={"town_id":"51543","nlreq_id":0}&_='.$timef, 0, $cook, 1, 0);
print $culture;


Мне нужно получить user posted image

А я получаю главную страницу.... Что же не так???
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.