Witam!
Mam pewien problem z którym sobie nie mogę poradzić. Dla sportu piszę aplikacje w PHP do zassania klipów z YT. Tak wiem, uznacie pewnie że nie ten dział, jednak potrzebuje pomocy fachowców od JAVY.
Mam działający poprawnie (który pobiera z YT) program w javie, na jego bazie staram się utworzyć odpowiednik w php, jednak napotykam duży problem. javove HttpURLConnection zwraca mi (poprzez .getHeaderField("location")) inny nagłówek niż podobne rozwiązanie w php wukorzystujące CURL. Nadmienię tylko, że dane a właściwie link generowany przez JAVE jest poprawny i pozwala na pobranie klipu z YT. Link generowany w analogiczny sposób przez PHP (CURL) jest nie tylko krótszy, ale posiada również mniejszą ilość zmiennych (GET) oraz posiada różne wartości tych zmiennych które się pokrywają. Nie rozumiem dlaczego tak się dzieje. Wykluczam powodowanie takiego zachowania przez fakt ze program w Javie jest uruchamiany lokalnie a w php po stronie serwera, gdyż na lokalnym serwerze (a więc zachowanie podobne do javy - serwery YT widzą moją maszyne) również link jest krótszy oraz z innym początkiem ( chodzi o zmienną &ip dla javy -> 0.0.0.0 a dla php na serwerze -> 91.0.0.0 a na lokallu 81.0.0.0) czego przyklady są poniżej. Zamieszczam również kod zarówno w JAVIE jak i php. Proszę o wskazanie różnic zachować, a właściwie jak je zniwelować. Wydawało mi się, że odpowiedzi serwera YT powinny być takie same dla każdego, dlatego też myślę, że problem tkwi w samym formowaniu REQUESTÓW przez phpi jave

Z góry dziękuję za okazaną pomoc

oto kod PHP

<?php 

function wyluskaj($data,$poczatek,$koniec)
{
	$start=strpos($data,$poczatek)+strlen($poczatek);
	$end=strpos($data,$koniec,$start);
	$token=substr($data,$start,$end-$start);
	if($end==NULL || $start==NULL || $start>$end)
	{
		return (NULL);
	}
	else 
		return($token);
	
}

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://www.youtube.com/watch?v=D5BGuOUOHcQ");
curl_setopt ($ch, CURLOPT_HEADER, false);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, false);
//curl_setopt ($ch, CURLOPT_REFERER, "http://www.youtube.com/watch?v=D5BGuOUOHcQ");
curl_setopt ($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
$cache = curl_exec($ch);
curl_close($ch); 
//echo($file_contents);
$cache=utf8_decode($cache);
$token=wyluskaj($cache,"&t=","&");
$id=wyluskaj($cache,"/watch?v=",'"');





echo("<br>http://www.youtube.com/get_video?video_id=$id&t=$token&fmt=13<br>");

$ch = curl_init("http://www.youtube.com/get_video?video_id=$id&t=$token&fmt=13");
curl_setopt ($ch, CURLOPT_URL, "http://www.youtube.com/get_video?video_id=$id&t=$token&fmt=13");
curl_setopt ($ch, CURLOPT_HEADER, true);
curl_setopt ($ch, CURLOPT_NOBODY, 1);
curl_setopt ($ch, CURLOPT_ENCODING, "");
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, false);
//curl_setopt ($ch, CURLOPT_REFERER, "http://www.youtube.com/watch?v=D5BGuOUOHcQ");
curl_setopt ($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
$cache = curl_exec($ch);
curl_close($ch);





$link=wyluskaj($cache,"Location:","Content-Type");

a oto kod w JAVIE

 

String vParam = getParameter("v");
            String uParam = getParameter("u");
            String siteParam = getParameter("site");
            System.out.println((new StringBuilder()).append("param v: ").append(vParam).append("\r\n").toString());
            System.out.println((new StringBuilder()).append("param site: ").append(siteParam).append("\r\n").toString());
            if(siteParam.contains("youtube.com"))
                try
                {
                    super.init();
                    String video_id = vParam; // vParam="D5BGuOUOHcQ"
                    String u_id = uParam; *uParam="http:*www.youtube.com/watch?v=D5BGuOUOHcQ"
                    if(video_id == null)
                        video_id = inbtwn(URLDecoder.decode(getRedirUrl(u_id), "UTF-8"), "v=", "&");
                    String pageSource = getUrlContent((new StringBuilder("http://www.youtube.com/watch?v=")).append(video_id).toString(), "GET");
                    String title = inbtwn(pageSource, "'VIDEO_TITLE': '", "',");
                    if(title == null)
                        title = inbtwn(pageSource, "name=\"title\" content=\"", "\"");
                    title = setHTMLEntity(title);
                    String token = inbtwn(pageSource, "\"t\": \"", "\"");
                    if(token == null)
                        token = inbtwn(pageSource, "&t=", "&");
                    if(!token.endsWith("%3D"))
                        token = inbtwnmore(pageSource, "&t=", "&", 2);
                    String dl_3gplow = null;
                    if(dl_3gplow == null)
                        dl_3gplow = getRedirUrl((new StringBuilder()).append("http://www.youtube.com/get_video?video_id=").append(video_id).append("&t=").append(token).append("&fmt=13").toString());




private String getRedirUrl(String url)
    {
        String hdr = "";
        try
        {
            HttpURLConnection conn = (HttpURLConnection)(new URL(url)).openConnection();
            conn.setInstanceFollowRedirects(false);
            conn.addRequestProperty("User-Agent", getParameter("ua"));
            hdr = conn.getHeaderField("location");
        }
        catch(Exception e)
        {
            e.printStackTrace();
            return null;
        }
        return hdr;
    }

Tak wygląda odpowiedź z php:

http://v16.lscache7.c.youtube.com/videoplayback?ip=91.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=52689%2C901903&algorithm=throttle-factor&itag=13&ipbits=8&burst=40&sver=3&expire=1271912400&key=yt1&signature=44F6DC5958C845007CFC5E3607AE42521EF72DF1.142AF27ED1F5A0364FE4BABA333811F955BFF949&factor=1.25&id=0f9046b8e50e1dc4

A tak odpowiedź skryptu javy:
http://v16.lscache7.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0dWRllLU19FSkNNNl9RRVdD&fexp=902218%2C904510%2C901903&algorithm=throttle-factor&itag=13&ipbits=0&burst=40&sver=3&expire=1271905200&key=yt1&signature=9FEFEE740885B5228704EAF001CF52E38E071240.309DAEEA2EF44F7D5E826845E780A5ABA312E17D&factor=1.25&id=0f9046b8e50e1dc4

w PHP brakuje np zmiennej parametru oc. Nadmieniam, że link z php jest linkiem przekierowującym pobranym z nagłówka wywołania strony, tak samo ( jak mi się wydaje ) zostało to zrobione w JAVIE.
Dlaczego więc te nagłówki się tak bardzo różnią?