Получение url ссылки без редиректа

A
На сайте с 30.11.2005
Offline
193
1290

есть страница , например http://freesoft.ru/?id=7179 (ссылка дял примера), там есть ссылка на скачивание (внизу Скачать "NOD32 2.7") если копировать этот url то будет ссылка вида http://freesoft.ru/file.html?id=7179&dl=0&filename=nentrust.exe но затем файл начнет скачиваться с url http://download1.eset.com/eval/win/v2/nentrust.exe ..существует ли возможность средствами php выцепить сразу нормальный линк..т.е. как вариант симитировать клик и подождатьпока сервер даст урл ссылки...програмисты кто как думает?

Дмитрий
На сайте с 23.08.2006
Offline
222
#1

Можно, читаете заголовки от http://freesoft.ru/file.html?id=7179&dl=0&filename=nentrust.exe и смотрите куда редиректит

Разрабатываю и автоматизирую на php http://jonnyb.ru/
A
На сайте с 30.11.2005
Offline
193
#2

2JonnyB

я не силен в php если не сложно то попродробнее

A
На сайте с 26.01.2005
Offline
58
#3

10 curl'ов

T
На сайте с 11.07.2007
Offline
43
#4

1. Идем сюда http://parosproxy.org/ и берем там софтину.

2. Смотрим ей, что передается серверу при клике по указанной ссылки (кликать надо с целевой страницы, особенное внимание надо обратить на куки и реферер).

3. Смотрим что сервер отвечает. (в данном конкретном случае он среди прочего отдаст поле location, в котором нужный урл и есть).

далее при помощи fsockopen() отсылаем то что видили в п.1, смотрим ответ сервера на предмет того что видели в п.2

а проще - никак... скорее всего нужный урл всегда будет именно в заголовке ответа, и отдаватся он будет скорее всего только валидным пользователям, т.е. с правельным реферером, UA, куками, параметрами авторизации..

Дмитрий
На сайте с 23.08.2006
Offline
222
#5

<?php

$fp=fsockopen('freesoft.ru',80);

fputs($fp,'GET http://freesoft.ru/file.html?id=7179&dl=0&filename=nentrust.exe HTTP/1.0'."\r\n\r\n");

$buff='';

while(!feof($fp)) {

$buff .= fgets($fp,2048);

}

echo $buff // выведет заголовки, вам нужен Location: ....

?>

Дмитрий
На сайте с 23.08.2006
Offline
222
#6

По-моему в php есть отдельная функция для получения заголовков, так же их можно получить используя не GET запрос, но непомню как..

unknown
На сайте с 10.06.2006
Offline
94
#7

$fp = fopen('http://ya.ru/', 'r');

$s = stream_get_meta_data($fp);
print_r($s['wrapper_data']);
fclose($fp);

Вот так ещё можно получить заголовки

edogs software
На сайте с 15.12.2005
Offline
775
#8

azazelka,

Для задач аналогичного плана можно брать rapidget (php версию), очень неплохая качалка. Для задач с которыми она не справится "от природы" можно взять оттуда примеры решений, т.к. написано вполне грамотно.

P.S.: Учтите, что даже если Вы выдерите прямой линк, не факт что этот прямой линк потом будет напрямую работать в любой момент времени. Ибо такой редирект нередко используется как раз для защиты от "прямых" скачиваний.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий