你得到一个302 Moved Temporarily
因为你需要被认证:谷歌正在将你重定向到它的登录页面。
一旦通过身份验证,谷歌凭据就会存储在浏览器 cookie 中。如果您想下载谷歌地图位置历史链接,那么您必须为浏览器 cookie 提供curl
. -b
选项curl
允许您使用cookies.txt
相对于Netscape /Mozilla cookie 文件格式。
的每一行cookies.txt
都有七个制表符分隔的字段:
- domain - 创建并且可以读取变量的域。
- flag - 一个 TRUE/FALSE 值,指示给定域内的所有机器是否都可以访问该变量。此值由浏览器自动设置,具体取决于您为域设置的值。
- path - 变量有效的域中的路径。
- 安全- 一个 TRUE/FALSE 值,指示是否需要与域的安全连接才能 * 访问变量。
- expiration - 变量到期的 UNIX 时间。UNIX 时间定义为自 1970 年 1 月 1 日 00:00:00 GMT 以来的秒数。
- name - 变量的名称。
- value - 变量的值。
因此,最简单的解决方案是将浏览器 cookie 导出到cookies.txt
文件并指示curl
使用它们。在 Chrome 中,cookie 存储在 sqlite3 数据库中。您可以使用以下命令导出它们:
sqlite3 ~/.config/google-chrome/Default/Cookies \
'select host_key, "TRUE", path, "FALSE", expires_utc, name, value from cookies where host_key like "%google.com"' \
| tr '|' '\t' > /tmp/cookies.txt
请注意host_key like "%google.com"
哪些限制了导出的 cookie。
调用curl
以-b /tmp/cookies.txt
使用导出的 cookie 并对谷歌地图进行身份验证,您将能够下载谷歌地图位置历史记录
curl -b /tmp/cookies.txt https://maps.google.com/locationhistory/b/0/kml\?startTime\=1376604000000\&endTime\=1376690400000
为避免将 cookie 存储在临时文件中,请使用以下命令:
curl -b <(sqlite3 ~/.config/google-chrome/Default/Cookies 'select host_key, "TRUE", path, "FALSE", expires_utc, name, value from cookies' | tr '|' '\t') https://maps.google.com/locationhistory/b/0/kml\?startTime\=1376604000000\&endTime\=1376690400000