2016-11-26 11 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

要求は、Googleのサーバーが許可されるべきコールを必要とするので、それは

enter image description hereCookieヘッダは、HSIDSSIDSIDとしていわゆる認証トークンを含有する)下の写真から見ることができたfile_get_contents介し失敗

Googleはを使用しています

認証トークンについて:

ログイン資格情報、 の不正使用を防止し、権限のない者からユーザデータを保護し、ユーザーを認証します。

This python exampleGetAuthTokens関数を参照)は、認証トークンの入手方法を示しています。

$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); 

次の例では、セキュリティクッキーを指定してコールを許可を実行する方法を示しています

関連する問題