[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: CURL и AJAX
sidorka
Второй день бьюсь - не могу осилить этот сервис - www.cartoonize.net

Через Firebug посмотрел, что именно отсылается:
собственно сами данные:
effect=1&url=http://donbass.ua/multimedia/images/news/original/2012/05/10/yanukovich-12.jpg&from=url

заголовок:
POST /convert.do.php HTTP/1.1
Host: www.cartoonize.net
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/html, */*; q=0.01
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://www.cartoonize.net/
Content-Length: 100
Cookie: __utma=186135227.448317719.1344876328.1344884241.1344887288.3; __utmc=186135227; __utmz=186135227.1344876328.1.1.utmcsr=programsonline.ru|utmccn=(referral)|utmcmd=referral|utmcct=/co nverttocartoon; __atuvc=27%7C33; PHPSESSID=2jl5mftit16r3u712cgmqljri1; __utmb=186135227.1.10.1344887291
Pragma: no-cache
Cache-Control: no-cache


С помощью CURL формирую свои заголовоки и запрос, маскируясь под ajax:


// Исходные данные
$source = "http://donbass.ua/multimedia/images/news/original/2012/05/10/yanukovich-12.jpg";
$target_domain = "http://www.cartoonize.net/";
$target_script = "convert.do.php";
$referer = "http://www.cartoonize.net/";
$postdata = array(
"effect" => "1",
"from" => "url",
"url" => urlencode($source),
);


// Гружу стартовую страницу, чтоб получить куки
$ch = curl_init($target_domain);

curl_setopt($ch, CURLOPT_URL, $target_domain);
curl_setopt($ch, CURLOPT_REFERER, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0.1");
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies');

curl_exec($ch);
curl_close($ch);

// Посылаю POST, маскируясь под AJAX
$ch = curl_init($target_domain.$target_script);

curl_setopt($ch, CURLOPT_URL, $target_domain.$target_script);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0.1");
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies');

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);

$header = array("X-Requested-With: XMLHttpRequest",
"Content-Type: application/x-www-form-urlencoded; charset=UTF-8",
"Accept: text/html, */*; q=0.01",
"Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3",
"Accept-Encoding: gzip, deflate",
"Connection: keep-alive",);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

curl_setopt($ch, CURLINFO_HEADER_OUT, 1);

$result = curl_exec($ch);
$info = curl_getinfo($ch);

curl_close($ch);

echo "Ответ сервера: $result";

foreach ($info as $item => $content)
echo "<br>$item: $content";
}


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

� �I � ��ܻ��z�K� VH#h���v0k�z��W%���i-�As�Yi���  ;��̚�۴��"sX�&}۠�M


Ответ должен быть вот такого вида:
1upload/2jl5mftit16r3u712cgmqljri1448335


В посылаемых заголовках куки выглядят как-то не так:
POST /convert.do.php HTTP/1.1 
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:14.0) Gecko/20100101 Firefox/14.0.1
Host: www.cartoonize.net
Referer: http://www.cartoonize.net/
Cookie: PHPSESSID=tes0mkvmvadcf02u0e44m6efl7
X-Requested-With: XMLHttpRequest Accept: text/html, */*; q=0.01
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive Content-Length: 430
Expect: 100-continue
Content-Type: application/x-www-form-urlencoded; charset=UTF-8;
boundary=----------------------------31ea7bfefcf1


Думаю, что проблема именно в куках, но не могу понять почему у меня такие урезанные - кроме идентификатора сессии ничего нет больше.

Откуда берутся лишние значения в "правильных" куках?

А может и не в них дело?

Подтолкните в нужном направлении, пж.



Спустя 14 минут, 49 секунд (13.08.2012 - 23:31) sidorka написал(а):
Добавлю:
куки отдаются при загрузке исходной стартовой страницы с именами:
_utma, _utmc, _utmz, _atuvc и идентификатор сессии PHPSESSID.

Почему я их не получаю через CURL?

Спустя 15 часов, 51 минута, 58 секунд (14.08.2012 - 15:23) sidorka написал(а):
Есть у кого идеи?

Спустя 5 часов, 43 минуты, 50 секунд (14.08.2012 - 21:07) killer8080 написал(а):
Цитата (sidorka @ 14.08.2012 - 00:31)
Добавлю:
куки отдаются при загрузке исходной стартовой страницы с именами:
_utma, _utmc, _utmz, _atuvc и идентификатор сессии PHPSESSID.

Почему я их не получаю через CURL?


Потому что их выставляют js скрипты от гугля, к работе сайта они отношения не имеют.
Цитата (sidorka @ 14.08.2012 - 00:16)
В ответ получаю вместо адреса сконверченного изображения кракозяблы какие-то.

� �I �  ��ܻ��z�K� VH#h���v0k�z��W%���i-�As�Yi��� ;��̚�۴��"sX�&}۠�M

попробуй убрать заголовок
"Accept-Encoding: gzip, deflate"

Спустя 22 минуты, 9 секунд (14.08.2012 - 21:29) sidorka написал(а):
Да, кракозяблы из-за сжатия. Уже легче. Но не хочет пока сервис сдаваться.

0<div style="text-align: center" class="err">Cannot download the image.</div><br>
Быстрый ответ:

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