Python 실시 간 모니터링 사이트 조회 기록 실현 과정 상세 설명

필요:
(1)대상 chrome 의 전날 조회 기록 에 있 는 모든 사이트 주소(url)와 방문 시간 을 가 져 오고 txt 파일 에 존재 합 니 다.
(2)이 txt 파일 을 지정 한 메 일 주소(메 일)에 보 냅 니 다.
(3)정기 적 인 임 무 를 수행 하고 매일 정기 적 으로 이 작업 을 완성 하면 메 일 을 통 해 대상 이 매일 무엇 을 보 는 지 확인 할 수 있 습 니 다.
준비 하 다.
  • macOS Sierra
  • Python3.6
  • Chrome
  • 이메일 주소
    qq 메 일 박스 인증 코드
    SMTP 서버 주소:smtp.qq.com
    이메일 주소
    실행:
    (1)우선 DB Browser for SQLite 로 History 의 urls 표 데이터 구성 을 살 펴 보 겠 습 니 다.
    표 에서 보 듯 이 우리 가 원 하 는 사이트 와 방문 시간 은 urls.url 과 urls.last 에 있 습 니 다.visit_시간 중

    (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 에서 다음 그림 은 제 가 얻 은 부분 적 인 결과 입 니 다.

    (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 를 첨부 파일 로 지정 한 메 일 로 보 낼 수 있 습 니 다.
    주소,아래 그림 은 제 가 얻 은 부분 적 인 결과 입 니 다.

    (4)./start.sh:사실 앞의 몇 개의 스 크 립 트 는 우리 의 임 무 를 완 성 했 지만 매번 이렇게 많은 발 을 수행 합 니 다.
    이..너무 귀 찮 습 니 다.이 스 크 립 트 의 실행 문 구 를 셸 스 크 립 트 로 정리 할 수 있 습 니 다.
    
    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 입 니 다.
    중요 한 일 을 다시 한 번 말 하지만,반드시 절대적 인 경 로 를 써 야 한다!!
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기