社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

女友半夜发自拍,我用30行Python代码发现了一个大秘密

Python极客专栏 • 4 年前 • 318 次点击  
点击关注公众号,Python干货及时送达

PyCharm操作手册,点击获取

剧情纯属虚构

『老公,我今晚和闺蜜去做指甲,你下班自己吃饭,乖乖等我哦。』 小阿B的手机上跳出了女朋友这样一条微信,随后发了一张自拍照。

小阿B,放下了手中的代码。快速的回复到「好的,路上注意安全,我还有几个bug要改得加班一会」

小阿B继续改着Bug,突然有一种莫名其妙的感觉,似乎哪里不对劲,女朋友不是前阵子刚做的指甲吗?难道是...


小阿B随手创建了一个py文件,撸了一段代码。

看到执行结果在某商务酒店,小阿B的心都碎了。。


如何获取女朋友的位置呢?

怎么获取到女朋友的地址呢,这一切都要从那张照片说起。任何智能手机拍摄照片时,都含有Exif参数,调用GPS全球定位系统,在照片中记录位置、时间等信息。无论是通过微信、QQ、邮箱、短信等对照片进行传输时,都会附带这些信息一并发送。

不过朋友圈的图片不会携带这些信息,因为发送朋友圈时,图片会被自动压缩

如何避免这种信息泄露呢,一方面不发送原图,另一方面可以关闭定位。还有一个就是P完再发图

说到这,在Python中有一个叫exifread的库,通过这个库就可以获取到图片信息,当然呢 也包括经纬度

首先呢,安装这个库
pip intsall exifread

用法也比较简单,直接如下所示

f = open('pic.jpeg''rb')
tags = exifread.process_file(f)

如上代码会返回一个图片信息的对象,其中我们用到的字段有

  • GPS GPSLatitude :北纬
  • GPS GPSLongitude:东经
  • Image DateTime:拍摄时间

exifread返回的经纬度是一个类似列表的数据结构。通过对返回的经纬度数据进行处理得到6位小数的经纬度坐标值

 # 最后一个元素单独处理
  last = int(lst[-1]) / 3600
  new_x = lst[0].num + lst[1].num / 60 + last / 3600
  return '%.6f' % new_x

这样我们就获取到了详细经纬度值,然后通过调用高德地图的API,当然你也可以使用百度地图、谷歌地图的API

按照API文档配置拼接相关参数,发送请求,就可以获得详细的位置信息了

地址参考:https://lbs.amap.com/api/webservice/guide/api/georegeo/


必要参数如下:

  • key:高德地图Web服务api的key值,可以自己申请(免费的)
  • location:内容规则,经度在前,纬度在后,用连接
  • output:返回数据类型格式,为了方便处理,设置为json

于是最终我的请求URL为

https://restapi.amap.com/v3/geocode/regeo?output=json&key={key}&location={lat},{lng}

最终,传入参数,发送请求。通过解析响应的Json,就可以获取到图片的拍摄时间和拍摄地点了。

  url = f'https://restapi.amap.com/v3/geocode/regeo?output=json&key={key}&location={lat},{lng}'
  response = requests.get(url)
  address = ''
  if response.status_code == 200:
      resp_json = response.json()
      print(resp_json)
      address = resp_json['regeocode']['formatted_address']
  return address

关于如何通过Python获取到图片的详细信息,写起来也是比较简单。另外一方面,如果没有必要,大家可以关闭手机上的位置信息。这样别人就不会通过照片获取你的一些隐私信息啦~

完整源代码可以在「Python极客专栏」公众号后台回复「pic」获取。

最后,小伙伴们可以给下面的视频来个三连(点赞+收藏+评论/转发)支持一下(或者点击阅读原文观看)

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/114667
 
318 次点击