Вы не зашли.
Главная » PHP » Помогите! (Граббер)
#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)
#2. Gemorroj Off (107)
Administrator
2012.03.12 11:11
используй курл с поддержкой автоматической переадресации
#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
Вроде работает, просто добавь воды кода smile
Код:
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)
#7. Gemorroj Off (107)
Administrator
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)
#10. affet Off (0)
Участник
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)
#11. tipsun Off (19)
Moderator
2012.03.12 21:09
Надо попробовать с location, неужели не ловит...
Добавлено спустя   8 минут  51 секунду:
Да вроде ловит.
#12. tipsun Off (19)
Moderator
2012.03.12 21:09
Возможно тебе приходит такой ответ из-за того, что не все данные формы отправляешь.
#13. affet Off (0)
Участник
2012.03.12 21:09
Я смотрю там всего 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)
#14. affet Off (0)
Участник
2012.03.12 21:09
че то страница  долго гружеться и в конце

Fatal error: Maximum execution time of 30
Добавлено спустя   3 минуты  3 секунды:
Все решил проблему, сделал. Спасибо tipsun и Gemorroj
#15. affet Off (0)
Участник
2012.03.12 23:11
Вот щас 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 или как то так. Ищи сам как правильно написать
#17. affet Off (0)
Участник
2012.03.13 00:12
Читай тему внимательно ! Дучишь ты сам, мне не надо перейти по переадреспцию. Надо найти адрес переадресецию, там контент , потом копировать на хост. Так что не оффтоми.

Все исправил, можно закрыть тему
#18. tipsun Off (19)
Moderator
2012.03.13 09:09
affet, перехват корректный. Ты либо адрес не ставишь правильный, либо не все данные формы отправляешь.
#19. Gemorroj Off (107)
Administrator
2012.03.13 10:10
affet, едуты тебе все правильно сказал. просто в добавку к той опции нужно делать обработку относительных адресов в переадресациях
Страниц: 1 2 Все
Главная
WEB
PunBB Mod v0.6.2
0.019 s