надо на вход подать http://dan… а получить как-то https://www.dan…
Евгений Крупченко
Нет там никакого редиректа на www
Открывается без www. Но обратите внимание на замочек.
Все потому что сертификат у вас почему-то сделан только для www.
Предполагаю, ваш хитросделанный браузер самовольно решает средиректить на www. И естественно curl ничем таким не страдает, и ни на какое www не редиректит.
runseoman
сайт не мой, мне надо картинку получить
открываю в http://dantonehome.com/upload/iblock/0ee/0ee52d9882258fd40c3007f458abcbce.jpg в yandex browser yandex browser переделывает в https://www.dantonehome.com/upload/iblock/0ee/0ee52d9882258fd40c3007f458abcbce.jpg
ну ладно пусть браузер косячит, не суть
мне то средствами PHP получить файл конечный и скачать
runseoman
runseoman #:
сайт не мой, мне надо картинку получить
открываю в http://dantonehome.com/upload/iblock/0ee/0ee52d9882258fd40c3007f458abcbce.jpg в yandex browser yandex browser переделывает в https://www.dantonehome.com/upload/iblock/0ee/0ee52d9882258fd40c3007f458abcbce.jpg
ну ладно пусть браузер косячит, не суть
мне то средствами PHP получить файл конечный и скачать
runseoman
заголовок (смотрю CURLINFO_HTTP_CODE)отдает 301 и редирект (смотрю CURLINFO_EFFECTIVE_URL) на https://dantonehome.com/upload/ibloc…f458abcbce.jpg
а при открытии (в браузере) https://dantonehome.com/upload/ibloc…f458abcbce.jpg идет редирект https://www.dantonehome.com/upload/i…f458abcbce.jpg
не могу через curl выловить ссылку с www
кто подскажет? куда копать?
Delahoya
Так она хоть с www, хоть без 200 ОК отдает
runseoman
это да
но как получить ссылку https с www из ссылки http
<?
stream_context_set_default( [
‘ssl’ => [
‘verify_peer’ => false,
‘verify_peer_name’ => false,
],
]);
$filename=»http://dantonehome.com/upload/iblock/0ee/0ee52d9882258fd40c3007f458abcbce.jpg»;
$handle = curl_init($filename);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($handle);
$last_url = curl_getinfo($handle, CURLINFO_EFFECTIVE_URL);
echo $filename.»<br>»;
echo $last_url.»<br>»;
print_r(get_headers($last_url));
print_r(get_headers($last_url, 1));
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
echo $httpCode.»n»; //тут дает 301
$filename=$last_url;
$handle = curl_init($filename);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($handle);
$last_url = curl_getinfo($handle, CURLINFO_EFFECTIVE_URL);
print_r(get_headers($last_url));
print_r(get_headers($last_url, 1));
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
echo $httpCode; //тут дает 0
$ch = curl_init($filename);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
file_put_contents(«test.jpg», $data);
?>
в чем тут косяк ?
надо на вход подать http://dan… а получить как-то https://www.dan…
Евгений Крупченко
Нет там никакого редиректа на www
Открывается без www. Но обратите внимание на замочек.
Все потому что сертификат у вас почему-то сделан только для www.
Предполагаю, ваш хитросделанный браузер самовольно решает средиректить на www. И естественно curl ничем таким не страдает, и ни на какое www не редиректит.
runseoman
сайт не мой, мне надо картинку получить
открываю в http://dantonehome.com/upload/iblock/0ee/0ee52d9882258fd40c3007f458abcbce.jpg в yandex browser
yandex browser переделывает в https://www.dantonehome.com/upload/iblock/0ee/0ee52d9882258fd40c3007f458abcbce.jpg
ну ладно пусть браузер косячит, не суть
мне то средствами PHP получить файл конечный и скачать
runseoman
сайт не мой, мне надо картинку получить
открываю в http://dantonehome.com/upload/iblock/0ee/0ee52d9882258fd40c3007f458abcbce.jpg в yandex browser
yandex browser переделывает в https://www.dantonehome.com/upload/iblock/0ee/0ee52d9882258fd40c3007f458abcbce.jpg
ну ладно пусть браузер косячит, не суть
мне то средствами PHP получить файл конечный и скачать
вот код
$ch = curl_init($filename);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
file_put_contents(«test.jpg», $data);
если $filename подставляю http — не скачивает
если $filename подставляю https без www — не скачивает
если $filename подставляю http c www — скачивает
timo-71
мне то средствами PHP получить файл конечный и скачать
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
добавить. Ну или www к урлу
voronoff_dev
если $filename подставляю https без www — не скачивает
Потому что сертификат без www у них не действительный и нужно отключить его проверку в curl.
А так вообще да, у меня хром тоже открывает ссылку с www автоматом, хотя никакого редиректа там нет.
runseoman
добавить. Ну или www к урлу
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
пробовал, не помогло
runseoman
а это помогло
timo-71
пробовал, не помогло
Там было написано добавить. К тому что у вас было
$filename=»http://dantonehome.com/upload/iblock/0ee/0ee52d9882258fd40c3007f458abcbce.jpg»;
$handle = curl_init($filename);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
Понятно, что и имена переменных привести в соответствие при этом.