Доигрались. Двойной ответ от ВКонтакте :)

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Приветствую,

Всё балуясь с сокетами, получаю такой ответ от вк:
Код:
HTTP/1.1 302 Moved Temporarily
Server: Apache
Date: Tue, 05 Apr 2016 17:35:39 GMT
Content-Type: text/html
Content-Length: 157
Connection: keep-alive
Location: https://vk.com/err404.php?path=https://cs509602.vk.me/3/u174641510/videos/7cdaa7ed06.240.mp4&extra=bHJmD-6AL7PdqOMYt286RK5xwTunen7WZ_Rt4bERrM948W8yjV1FHiS1CZzSRNB7e4PFkSbElMfrliicwhlPNk2j4emEPkVEimYX5ZsEW0TqoemzHp7NbdOzuW2eOLKiYGr_ds1kCrdtbJg&from=91.106.207.102&hash=7a9f9338bc

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center> Apache </center>
</body>
</html>
HTTP/1.1 400 Bad Request
Server: Apache
Date: Tue, 05 Apr 2016 17:35:39 GMT
Content-Type: text/html
Content-Length: 169
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center> Apache </center>
</body>
</html>

У меня одного такое или ответ не так я получаю? А может всё во сне?

Моя функция:
Код:
function download($from, $to)
{
    $boundary = "---------------------".substr(md5(rand(0,32000)),0,10);


    $parsed = parse_url($from);

    $scheme = $parsed['scheme'] === 'https' ? 'ssl://' : '';

    $port = $scheme === 'ssl://' ? 443 : 80;

    $q = empty($parsed['query']) ? '' : '?'.$parsed['query'];

    $headers  = 'GET '.$parsed['path'].$q.' HTTP/1.0'.CRLF;
    $headers .= 'Host: '.$parsed['host'].CRLF;
    $headers .= 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'.CRLF;
    $headers .= 'Accept-Encoding: gzip,deflate,sdch'.CRLF;
    $headers .= 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,uk;q=0.2'.CRLF;
    $headers .= 'Cache-Control: no-cache'.CRLF;
    $headers .= 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/36.1.1.22 Chrome/36.0.1985.97 Safari/537.36'.CRLF;
    $headers .= 'Pragma: no-cache'.CRLF;
    $headers .= 'Connection: keep-alive'.DCRLF;
    $headers .= $boundary.CRLF;


    if(!$stream = fsockopen($scheme.$parsed['host'], $port)){
        sleep(0.5);
        if(!$stream = fsockopen($scheme.$parsed['host'], $port)) return false;
    }
    fputs($stream, $headers);

    $file = fopen($to, "w+");


    $is_content = false;

    while(!feof($stream)){
        $bytes = fgets($stream, 1024);
    
        if($bytes === "\r\n") $is_content = true;
    
        fputs($file, $bytes);
    }

    fclose($file);
    fclose($stream);

    return true;
}

from: Для просмотра ссылки Войди или Зарегистрируйся
to: файл, куда хотите сохранить вывод

Как же так?

Не надо мне рассказывать, что запрос не верный. Это я и так знаю. Это не повод 2 ответа мне присылать
 
Назад
Сверху