affet » 2012.03.12 02:13

Добрый день, у меня есть граббер сайта 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)

Gemorroj » 2012.03.12 11:51

используй курл с поддержкой автоматической переадресации

tipsun » 2012.03.12 12:52

Вроде как если какой-то "safe_mode" включен, то не будет работать что-ли.
Я пытался, у меня чет не получалось.

affet » 2012.03.12 12:52

он будеть ловить переадресацмю ?

Делаю так

$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 заголовку тоже передать ? какие нужны передать ?

tipsun » 2012.03.12 17:07

Вроде работает, просто добавь воды кода :)

Код:

1
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://

tipsun » 2012.03.12 17:34

Код:

1
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;
Gemorroj » 2012.03.12 17:54

tipsun, проблемы с Location возникают из-за того, что он написан в нарушение HTTP 1/1.
По стандарту там должен быть полный путь, а не относительный.
На php.net много костыльных реализаций на этот счет есть.

affet » 2012.03.12 19:50

tipsun
Тоже ответ  location: /
Добавлено спустя   1 минуту  45 секунд:
Gemorroj
Я незнаю англ язык, на php.net многое на англ.
Сможешь решение написать ?

tipsun » 2012.03.12 20:56

affet, не работает? Я там в RegEx указал ' i '.
Gemorroj, честно говоря забыл посмотреть на php.net решения. Вчера по поводу http_build_query смотрел.

affet » 2012.03.12 20:56

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

tipsun » 2012.03.12 21:01

Надо попробовать с location, неужели не ловит...
Добавлено спустя   8 минут  51 секунду:
Да вроде ловит.

tipsun » 2012.03.12 21:12

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

affet » 2012.03.12 21:20

Я смотрю там всего 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:33

че то страница  долго гружеться и в конце

Fatal error: Maximum execution time of 30
Добавлено спустя   3 минуты  3 секунды:
Все решил проблему, сделал. Спасибо tipsun и Gemorroj

affet » 2012.03.12 23:38

Вот щас 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";

ничего нету (

TLENS » 2012.03.13 00:14

Дурастикой занимаешься. В курла есть встроеная директива для перехода по переадресациям. FOLOWLOCATION или как то так. Ищи сам как правильно написать

affet » 2012.03.13 00:18

Читай тему внимательно ! Дучишь ты сам, мне не надо перейти по переадреспцию. Надо найти адрес переадресецию, там контент , потом копировать на хост. Так что не оффтоми.

Все исправил, можно закрыть тему

tipsun » 2012.03.13 09:10

affet, перехват корректный. Ты либо адрес не ставишь правильный, либо не все данные формы отправляешь.

Gemorroj » 2012.03.13 10:59

affet, едуты тебе все правильно сказал. просто в добавку к той опции нужно делать обработку относительных адресов в переадресациях