Через 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?
куки отдаются при загрузке исходной стартовой страницы с именами:
_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>