6

我想定期保存我的谷歌位置记录。

通常我使用 Web 界面: https ://maps.google.com/locationhistory/b/0

它还提供了一个导出数据的链接,如下所示:

https://maps.google.com/locationhistory/b/0/kml?startTime=1376604000000&endTime=1376690400000

我如何每天下载此链接(及其相应的时间戳),包括使用 WGET 或 curl 登录?

只需 wget 它给我带来了一个302 Moved Temporarily

4

2 回答 2

10

你得到一个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
于 2013-08-20T08:14:06.177 回答
2

对此回复较晚,但可能这也会对其他人有所帮助:

导出 cookie 的另一种简单方法是首先使用谷歌用户名和密码登录 chrome,然后使用此扩展导出 cookie将 cookie 导出到文件中。之后,您可以将此文件与 wget 一起使用,通过 --load-cookies 选项下载文档,例如:

wget --user-agent="Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:25.0) Gecko/20100101 Firefox/25.0 FirePHP/0.7.4"   --load-cookies cookie.txt -p --keep-session-cookies "http://google.com/"
于 2013-12-17T13:17:21.843 回答