查杀指定进程时如何将chromedriver进程加入白名单避免被误关闭
解决方案
方案1:优化进程查杀逻辑,通过启动参数区分普通Chrome和爬虫Chrome
chromedriver启动的Chrome进程,命令行参数会携带--remote-debugging-port等专属标识,我们可以先过滤掉带这类标识的进程,再执行查杀,无需修改任何文件。
- 首先安装psutil库方便获取进程详情:
pip install psutil - 替换原有查杀代码为以下逻辑:
import psutil KILL_PROCESS_NAMES = {"chrome.exe"} # 爬虫Chrome进程的特征参数,可根据实际情况补充 WHITE_PARAM_FLAGS = {"--remote-debugging-port", "--headless=new", "--automation"} for proc in psutil.process_iter(['name', 'cmdline']): try: proc_name = proc.info['name'].lower() if proc_name not in KILL_PROCESS_NAMES: continue # 检查是否是白名单内的爬虫进程 cmd_line = " ".join(proc.info['cmdline']).lower() is_white = any(flag.lower() in cmd_line for flag in WHITE_PARAM_FLAGS) if not is_white: proc.kill() except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): # 跳过无法访问、已结束的进程 pass
该方案不需要修改chromedriver或Chrome的任何配置,不会影响日常爬虫的运行逻辑,误杀率极低。
方案2:修改爬虫专用Chrome的可执行文件名
如果不想修改原有查杀逻辑,可以单独为爬虫准备一个专属Chrome版本,操作步骤如下:
- 下载Chrome便携版/独立安装到单独目录,不要和日常使用的Chrome共用安装路径
- 将该目录下的
chrome.exe重命名为任意名称,比如chrome_scraper.exe - 启动chromedriver时,指定使用改名后的可执行文件:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 这里填你改名后的爬虫Chrome的完整路径 chrome_options.binary_location = r"C:\scraper_chrome\chrome_scraper.exe" driver = webdriver.Chrome(options=chrome_options)
- 原有查杀逻辑保留即可,只会查杀名为
chrome.exe的进程,不会碰你改名后的爬虫Chrome进程。
如果需要同时避免误杀chromedriver自身进程,直接将chromedriver.exe重命名为任意名称即可,比如my_scraper_driver.exe,使用时指定驱动路径即可:
driver = webdriver.Chrome(executable_path=r"C:\tools\my_scraper_driver.exe", options=chrome_options)
内容的提问来源于stack exchange,提问作者MyDisplay
相关产品推荐
相关产品推荐

