备份一个项目
以下是加入了无痕浏览功能的 Python 浏览器代码: ```python import tkinter as tk import webbrowser import requests import os import re from bs4 import BeautifulSoup class Browser: def __init__(self): self.history = [] # 记录浏览历史的列表 self.bookmarks = {} # 标签页的字典,每个键存储对应的url self.ad_blocker = True # 广告拦截器的状态 self.private_mode = False # 私密浏览模式的状态 self.temp_folder = "temp" # 缓存临时文件的文件夹名称 def create_browser_gui(self): # 创建浏览器窗口和组件 self.root = tk.Tk() self.root.title("Python Browser") self.address_frame = tk.Frame(self.root) self.address_label = tk.Label(self.address_frame, text="Address:") self.address_entry = tk.Entry(self.address_frame, width=50) self.address_button = tk.Button(self.address_frame, text="Go", command=self.go_to_website) self.address_label.pack(side=tk.LEFT self.address_entry.pack(side=tk.LEFT) self.address_button.pack(side=tk.LEFT) self.address_frame.pack() self.browser_window = tk.Text(self.root, height=50, width=120) self.browser_window.pack() self.root.mainloop() def go_to(self): # 转到指定的网页 url = self.address_entry.get() if url: # 检查网址格式是否正确 if 'http://' not in url and 'https://' not in url: url = 'http://' + url self.address_entry.delete(0, tk.END) self.history.append(url) # 将网址添加到浏览历史中 self.browser_window.delete(1.0, tk.END) self.browser_window.insert(tk.END, f"Now loading: {url}") self.root.update() if self.private_mode: self.get_website_from_cache(url) else: self.get_website_text(url) if url not in self.bookmarks: # 添加未加入书签的网站到最近访问列表中 self.bookmarks[url] = 'Latest Site' self.remove_old_cache_files() # 删除超时的缓存文件 def get_website_text(self, url): # 获取网页内容并显示 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, "html.parser text = soup.get_text() if self.ad_blocker: text = self.remove_ads(text) # 若广告拦截器打开,则去除内容中广告 self.browser_window.delete(1.0, tk.END) self.browser_window.insert(tk.END, text) if not self.private_mode: self.write_website_to_cache(url, text) # 将网站内容写入缓存文件 def write_website_to_cache(self, url, text): # 将网站内容写入缓存文件 if not os.path.exists(self.temp_folder): os.mkdir(self.temp_folder) filename = re.sub(r'\W+', '', url) # 以URL中的合法字符创建文件名 filepath = os.path.join(self.temp_folder, filename) with open(filepath, "w") as f: f.write(text) def get_website_from_cache(self, url): # 从缓存文件中读取网页内容 filename = re.sub(r'\W+', '', url) filepath = os.path.join(self.temp_folder, filename) if os.path.exists(filepath): with open(filepath) as f: text = f.read() self.browser_window.insert(tk.END, text) else: self.get_website_text(url) def remove_old_cache_files(self): # 删除超时的缓存文件 if os.path.exists(self.temp_folder): now = time.time() for file in os.listdir(self.temp_folder): filepath = os.path.join(self.temp_folder, file) if os.stat(filepath).st_mtime < (now - 86400): # 超时时间设为一天 os.remove(filepath) def remove_ads(self, text): # 从内容中删除广告 #