Вы не зашли.
#1.
affet
Off
(0)
Участник
2012.03.12 02:02
Добрый день, у меня есть граббер сайта http://eroboom.net/photo/
Все хорошо работает, хочу чтоб когда скачиваешь фотку на странице например http://eroboom.net/photo/img.php?f=!Anal/1331448302/f5e0cba7e43ebea139a71440613794f6/fda860abbbcc2510c75834fd10a9e9d3.jpg
это картинка хочу копировался на мой хост, ну странийу этого картинка точно не вижу чтобы зделал copy();
Так здесь например http://eroboom.net/photo/img.php?f=!Anal/1331448302/f5e0cba7e43ebea139a71440613794f6/fda860abbbcc2510c75834fd10a9e9d3.jpg выбираем размер, потом через пост отправляеться запрос, потом переадресация бываеть http://eroboom.net/photo/size_3/DcnBDYAwCADAWVzAQqGlfToKUDAxxrj,S-972,HoXZAImQdBLdkC3FSCKSwUaar8Bx1JJmcvuXR0UDNzrw3BpQ3iXAg6Yy7ar,f8AA__/Photo_34465662882117.jpg
как мне сначала узнать что суда будеть переадресация
http://eroboom.net/photo/size_3/DcnBDYAwCADAWVzAQqGlfToKUDAxxrj,S-972,HoXZAImQdBLdkC3FSCKSwUaar8Bx1JJmcvuXR0UDNzrw3BpQ3iXAg6Yy7ar,f8AA__/Photo_34465662882117.jpg
здесь и оригиналья фотка (240х320)
используй курл с поддержкой автоматической переадресации
#3.
tipsun
Off
(19)
Moderator
2012.03.12 12:12
Вроде как если какой-то "safe_mode" включен, то не будет работать что-ли.
Я пытался, у меня чет не получалось.
#4.
affet
Off
(0)
Участник
2012.03.12 12:12
он будеть ловить переадресацмю ?
Делаю так
$ch = curl_init('http://eroboom.net/photo/img.php');
curl_setopt($ch, CURLOPT_HEADER, 1); // Отображать в ответе заголовки
curl_setopt($ch, CURLOPT_NOBODY, 1); // Неотображать текст самой страницы
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "rsz=3&df=DcnBDYAwCADAWVzAQqGlfToKUDAxxrj,S-972,HoXZAImQdBLdkC3FSCKSwUaar8Bx1JJmcvuXR0UDNzrw3BpQ3iXAg6Yy7ar,f8AA__");
$header = curl_exec($ch);
curl_close($ch);
echo $header;
Вижу http заголовку location: /
Не могу поймать переадресацию (
Добавлено спустя 8 минут 25 секунд: Результат HTTP/1.1 302 Found Server: nginx/1.0.0 Date: Mon, 12 Mar 2012 08:56:25 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.2.17 location: / Content-Length: 0 1
Можеть http заголовку тоже передать ? какие нужны передать ?
Отредактировано affet (2012.03.12 13:01)
#5.
tipsun
Off
(19)
Moderator
2012.03.12 17:05
Вроде работает, просто добавь
воды кода
Код:
span style="color: #0000BB"><?php$headers[] = "\r\n\nLocation: /\r\n\n";$headers[] = "\r\n\nLocation:/2\r\n\n";$headers[] = "\r\n\nLocation: /3/dsfs/\r\n\n";$headers[] = '';$n = 0;echo '<pre>';do { if (! $result) { echo 'original address<br/>'; } else { echo $result[1] . '<br/>'; $n++; }}while (preg_match('#Location:\s{0,}([^\r\n]+)#i', $headers[$n], $result));echo '</pre>';exit(); |
Добавлено спустя 4 минуты 28 секунд: В do размести подключение.
И проверяй, если поступил адрес с result[1], то с ним работай.
Не забудь, у тебя грабб, поэтому добавляй адрес сайта-жертвы, где не указано http://
#6.
tipsun
Off
(19)
Moderator
2012.03.12 17:05
Код:
span style="color: #0000BB"><?php// Еще просто параметры добавить и нормально наверно$url = 'original address';$net = curl_init();//curl_setopt_array($net, $array);do { $url = ($result) ? $result[1] : $url; curl_setopt($net, CURLOPT_URL, $url); $headers = curl_exec($net);}while (preg_match('#Location:\s{0,}([^\r\n]+)#i', $headers, $result));curl_setopt($net, CURLOPT_URL, $url); // last current address$html = curl_exec($net);curl_close($net);echo $html; |
Отредактировано tipsun (2012.03.12 17:05)
tipsun, проблемы с Location возникают из-за того, что он написан в нарушение HTTP 1/1.
По стандарту там должен быть полный путь, а не относительный.
На php.net много костыльных реализаций на этот счет есть.
#8.
affet
Off
(0)
Участник
2012.03.12 19:07
tipsunТоже ответ location: /
Добавлено спустя 1 минуту 45 секунд: GemorrojЯ незнаю англ язык, на php.net многое на англ.
Сможешь решение написать ?
#9.
tipsun
Off
(19)
Moderator
2012.03.12 20:08
affet, не работает? Я там в RegEx указал ' i '.
Gemorroj, честно говоря забыл посмотреть на php.net решения. Вчера по поводу http_build_query смотрел.
Отредактировано tipsun (2012.03.12 20:08)
tipsun$url = 'http://eroboom.net/photo/img.php';
$net = curl_init();
//curl_setopt_array($net, $array);
do {
$url = ($result) ? $result[1] : $url;
curl_setopt($net, CURLOPT_URL, $url);
$headers = curl_exec($net);
}
while (preg_match('#Location:\s{0,}([^\r\n]+)#i', $headers, $result));
curl_setopt($net, CURLOPT_URL, $url); // last current address
curl_setopt($net, CURLOPT_POST, 1);
#curl_setopt($net, CURLOPT_USERAGENT, 'Opera 11.61');
curl_setopt($net, CURLOPT_POSTFIELDS, "rsz=3&df=DcnBDYAwCADAWVzAQqGlfToKUDAxxrj,S-972,HoXZAImQdBLdkC3FSCKSwUaar8Bx1JJmcvuXR0UDNzrw3BpQ3iXAg6Yy7ar,f8AA__");
curl_setopt($net, CURLOPT_HEADER, 1);
$html = curl_exec($net);
curl_close($net);
echo $html;
Ответ
HTTP/1.1 302 Found Server: nginx/1.0.0 Date: Mon, 12 Mar 2012 16:53:50 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.2.17 location: / Content-Length: 0
Отредактировано affet (2012.03.12 20:08)
Надо попробовать с location, неужели не ловит...
Добавлено спустя 8 минут 51 секунду: Да вроде ловит.
Возможно тебе приходит такой ответ из-за того, что не все данные формы отправляешь.
Я смотрю там всего 2 формы, и это отправляю, я в ответе вижу 1
HTTP/1.1 302 Found
Server: nginx/1.0.0
Date: Mon, 12 Mar 2012 17:20:43 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.2.17
location: /
Content-Length: 0
1
Добавлено спустя 8 минут : А как отправить ГЕТ запрос ? Я пищу так
http://eroboom.net/photo/img.php?df=DcnBDYAwCAXQWVzAgp-WcnQUWsHEGOP-J33Xt-yP34UBFumgrWQNmsM1BDHCGeb6HzWGmmQrRlVr5NG3QWIzZvNEQHwElFtdr,f8AA__&rsz=3
Захожу открываеться
Добавлено спустя 9 минут 29 секунд: Ну блин я не замечал, там стоить <form action="/photo/img.php" method="get">
метод гет
Для метод гет надо написать так ?
$url = 'http://eroboom.net/photo/img.php?rsz=3&df=DcnBDYAwCADAWVzAQqGlfToKUDAxxrj,S-972,HoXZAImQdBLdkC3FSCKSwUaar8Bx1JJmcvuXR0UDNzrw3BpQ3iXAg6Yy7ar,f8AA__';
Отредактировано affet (2012.03.12 21:09)
че то страница долго гружеться и в конце
Fatal error: Maximum execution time of 30
Добавлено спустя 3 минуты 3 секунды: Все решил проблему, сделал. Спасибо tipsun и Gemorroj
Вот щас Location: ./size_3/DcnBDYAwCADAWVzAQqGlfToKUDAxxrj,S-972,HoXZAImQdBLdkC3FSCKSwUaar8Bx1JJmcvuXR0UDNzrw3BpQ3iXAg6Yy7ar,f8AA__/Photo_34465662882117.jpg
А как сейчас выделить этот адрес.
Делаю
preg_match('#Location:\s{0,}([^\r\n]+)#i', $header, $result);
echo $result[0][0] . ", " . $result[0][1] . "\n";
echo $result[1][0] . ", " . $result[1][1] . "\n";
ничего нету (
#16.
TLENS
Off
(14)
Moderator
2012.03.13 00:12
Дурастикой занимаешься. В курла есть встроеная директива для перехода по переадресациям. FOLOWLOCATION или как то так. Ищи сам как правильно написать
Читай тему внимательно ! Дучишь ты сам, мне не надо перейти по переадреспцию. Надо найти адрес переадресецию, там контент , потом копировать на хост. Так что не оффтоми.
Все исправил, можно закрыть тему
affet, перехват корректный. Ты либо адрес не ставишь правильный, либо не все данные формы отправляешь.
affet, едуты тебе все правильно сказал. просто в добавку к той опции нужно делать обработку относительных адресов в переадресациях