Har*_*rry 7 bash curl location google-maps wget
我想定期保存我的谷歌位置记录.
通常我使用Web界面:https://maps.google.com/locationhistory/b/0
它还提供了导出数据的链接,如下所示:
https://maps.google.com/locationhistory/b/0/kml?startTime=1376604000000&endTime=1376690400000
如何每天下载此链接(及其固定的时间戳),包括使用WGET或curl登录?
简单地告诉它给我带来了一个 302 Moved Temporarily
cbl*_*ard 10
您得到的是302 Moved Temporarily因为您需要进行身份验证:Google正在将您重定向到其登录页面.
经过身份验证后,Google凭据会存储在浏览器Cookie中.如果您要下载Google地图位置历史记录链接,则必须提供浏览器Cookie curl.该-b的选项curl允许你使用一个cookies.txt相对的Netscape/Mozilla浏览器的cookie文件格式.
每行
cookies.txt有七个以制表符分隔的字段:
- domain - 创建AND的域,可以读取变量.
- flag - 一个TRUE/FALSE值,指示给定域中的所有计算机是否都可以访问该变量.此值由浏览器自动设置,具体取决于您为域设置的值.
- path - 变量有效的域内路径.
- secure - 一个TRUE/FALSE值,指示是否需要与域进行安全连接以访问变量.
- 到期 - 变量将过期的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
Run Code Online (Sandbox Code Playgroud)
请注意,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
Run Code Online (Sandbox Code Playgroud)
要避免将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
Run Code Online (Sandbox Code Playgroud)