程序固然没法预测一我的何时会死,就算人工智能跟各个流派的算命方法结合起来,应该也算不出这个时间。html
这个工具只是检测到我死了以后,作一套预设的任务流。git
我想了想这个问题,方法有两种github
我在濒临死亡只剩一口气的时候,按下一个按钮,而后任务流自动启动api
抛开瞬间死亡这种场景不说,还存在一个矛盾: “我在没死以前,即便是濒死阶段,我不知道我还剩一口气仍是两口气,万一在还剩三口气的时候按下了这个按钮,那结果不许确,程序设计是失败的”浏览器
每一个人天天都会作一些一样的事,假若有一段时间没有作,那是否是能够判断这我的可能去世了bash
这里又衍生出两种方案服务器
主动告诉脚本,今天我还活着网络
脚本呢必定是跑在服务器上,考虑到可以不限地点,不限设备的告诉脚本我还活着的消息,我最早想到的方案是:访问一个只有我知道地址的路由,只要这个路由今天被访问到了,那就证实我今天活着。架构
那么这个路由得是一个没有任何语意的拼写组合,好比说 https://hostname/whwhqiangdongqiang/23333,且须要在 robots.txt 中配置相应的路由规则,否则在我死了以后,脚本在特定的状况下,还会认为我活着。hexo
纵使一切都循序渐进的完成了,仍然会有泄露地址的可能性,因而这个方案显得不是合适,且天天都须要手动访问这个地址,比较麻烦。
脚本自动检测今天的我有没有活动痕迹
人天天都会重复一些事情,好比:吃饭、上厕所、走路等等
举个例子:吃了饭就会有垃圾产生,那么垃圾桶的重量就会加剧,可是即便在垃圾桶上装上传感器,垃圾是产生了,可是这个垃圾是谁产生的并不能肯定。并且,我有可能出去游玩,也有可能没有睡在家里。
须要找到一种 “跟身份强关联的且每日都会产生的痕迹”,社交网络上的痕迹就很符合这个要求。
途径有两种:
1. 访问开放平台对应的开发者接口
2. 爬虫爬取对应的数据
复制代码
我想了想我天天都会在互联网上留下哪些痕迹,比较常见的有:刷朋友圈、刷头条、刷微博、刷头条等等等
其中有些很难经过上述的两种方案获取相关信息,好比:朋友圈。
朋友圈比较麻烦是由于:没有网页版也没有可供使用的 api,想要获取评论信息和点赞信息预估得走不少弯路
剩余的信息源中又能分为三种状况:
须要模拟登陆获取记录的,好比头条的阅读记录,模拟登陆又有不少途径
直接访问对应用户的主页就能获取活动记录的,好比知乎
提供接口的,好比微博
想要从信息源中知道我死了没有,无非就是从检索一下信息源中最上方的一条信息是否和以前的一致,不一致就说明我还活着。
因而这里又有个问题出现了:
假如我今天没有产生信息,可是我删了一条几年前的信息,那么按照上文的规则,我会被认为已死亡。
规避这种状况有两种方案:
这是一个用户首页信息
从中能够看到,我回答了「36个问题」,有「8个想法」,赞助了「18个live」,关注了「1419个问题」 等等等等,将这些数据与首页的信息流结合起来,能规避掉一部分的误判,固然在某些特定的状况下,仍是会出现「总量没变,第一条信息流也没变的状况」,能够把信息流的条数适当增大一点,好比十条。这样操做以后,出现误判的概率能下降不少(排除人为欺骗的场景)
直接从 DOM 中找到对应的数据,这里又会出现一个问题
脚本的 get请求,只是获取到了 HTML 文本,网页中还会有一些 js 代码没有被运行,这意味着浏览器展现的 HTML 和脚本 get请求到的 HTML 是不一致的
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
<p id="test">no script</p>
</body>
<script>
window.onload = function () {
document.getElementById('test').innerText = 'hello world'
}
</script>
</html>
</code>
复制代码
浏览器中的结果:
脚本获取的结果:
能够看到,浏览器中对应的 dom节点已经变成了 「Hello World」,而 curl 到的 dom节点仍是「no script」
所以,为了让浏览器环境和脚本环境获取到的 HTML 文本保持一致,须要引入一个能解释 js 的工具:「PhantomJS」
引入后获取的 HTML:
在未登陆的状况下打开微博的我的主页
没有登陆的状态下获取不到任何数据,从 DOM 中拿数据的路数就行不通了,除非登陆。
与其在这里登陆,再解析 HTML,不如直接从现成的开放平台调接口。
一顿操做后,获取到了我发出的评论,我发出的微博,个人关注,个人收藏信息。
我写了三个信息源:「知乎」、「豆瓣」、「微博」,
像 hexo 这类的博客程序只须要进入对应的目录,执行 hexo clean && hexo g
就能发博客,流程仍是比较简单的。
代码逻辑倒转一下,这也能成为一个特别关注的工具,当特别关注的人「发布了一个新回答的时候」/「看了本新书的时候」,能通知到本身。
这玩意缺点仍然很明显,昏迷状态和被限制人身自由状态也会被误认为死亡。
并且没法保证微博不更换接口,也没法保证豆瓣和知乎的 DOM 结构永远不改。