2016-11-26 3 views
0

나는 this link에서 더 이상 사용할 수 없다고 말합니다.Google의 KML 파일을 다운로드하는 방법

그러나 당신은 단지 다음과 같이 링크를 생성하는 스크립트를 실행하는 경우 : 당신은 당신이 실제로 당신은 쉽게 자신의 데이터를 생성 할 수 있습니다 특정 날짜에 대해 KML 기록 파일을 다운로드 할 수 있음을 알게 될 것이다

$timespan = [ 
     'year' => '2015', 
     'month'=> '0', 
     'day' => '28', 
    ]; 
    $path = 'https://www.google.com/maps/timeline/kml?authuser=0&pb=!1m8!1m3!1i'.$timespan['year'].'!2i'.$timespan['month'].'!3i'.$timespan['day'].'!2m3!1i'.$timespan['year'].'!2i'.$timespan['month'].'!3i'.$timespan['day']; 

    echo "<a href='".$path."'>link</a>"; 

. 이 문제는 프로그래밍 방식으로 할 수 없다는 것입니다. 따라서 브라우저를 열어 다운로드하면 file_get_contents (예 : 물론)가 작동하지 않습니다.

저는 Postman의 Inceptor를 사용하여 요청을 다시 보내려고 프로그래밍 방식으로 변조 할 수 있습니다. 그러나 나는 성공적인 요청을 보내지 못했습니다. Google은 400 페이지로 응답합니다.

브라우저의 동작을 모방하여 파일을 다운로드 할 수있는 방법이 있습니까? 구글 서버가 호출, 그것은 아래 그림에서 볼 수있는 권한을 부여하기 위해 필요로하기 때문에

답변

0

요청 file_get_contents를 통해 실패 (Cookie 헤더가 소위 포함 인증 토큰 같은 HSID, SSIDSID 등)

enter image description here 인증에 대한

구글은를 사용하여 토큰 818,:

로그인 자격 증명, 의 부정 사용을 방지하고 허가받지 않은 자로부터 사용자 데이터를 보호, 사용자를 인증합니다.

This python example (GetAuthTokens 함수 참조)은 인증 토큰을 얻는 방법을 보여줍니다.

$authTokens = array(
    'HSID' => '', 
    'SSID' => '', 
    'SID' => '', 
); 

$opts = array(
    'http'=>array(
     'method'=>"GET", 
     'header'=> 
      'Cookie: HSID=' . $authTokens["HSID"] . '; SSID=' . $authTokens["SSID"] . '; SID=' . $authTokens["SID"] 
    ) 
); 

$context = stream_context_create($opts); 
$content = file_get_contents($url,false, $context); 
:

다음의 예는 보안 쿠키를 지정하여 호출을 허가 수행하는 방법을 보여줍니다

관련 문제