如何通过Python Selenium禁用Chrome中AdBlockerPlus的可接受广告
Selenium控制Chrome启动AdBlockerPlus关闭可接受广告的解决方案
完全可以实现需求,以下是两种可直接复用的方案:
方案1:预注入扩展配置(无界面操作,性能最优)
通过Chrome启动参数直接写入ABP的偏好配置,启动时直接关闭可接受广告开关,无需额外界面操作。
修改后的完整代码如下:
from selenium import webdriver EXECUTABLE = r"~/chromedriver.exe" ADBLOCK = r"~/AdBlock –-der-beste-Ad-Blocker_v4.35.0.crx" # set options for driver options = webdriver.ChromeOptions() options.add_extension(ADBLOCK) # 新增:预配置ABP禁用可接受广告 prefs = { "extensions.settings": { "gighmmpiobklfepjocnamgkkbiglidom": { "preferences": { "acceptable_ads_enabled": False } } } } options.add_experimental_option("prefs", prefs) driver = webdriver.Chrome(executable_path = EXECUTABLE, options=options) # get the URL url = "https://www.dcclothesline.com/author/deangarrison/" driver.maximize_window() driver.implicitly_wait(30) driver.get(url) # calculate size of the loaded page w2 = driver.execute_script("return document.body.offsetWidth;") h2 = driver.execute_script("return document.body.offsetHeight;") print("Webpage size with ad block", w2*h2) driver.close()
方案2:模拟操作设置界面(全版本兼容)
如果方案1因为ABP版本差异不生效,可通过自动访问ABP内置设置页,模拟手动取消勾选的操作,兼容性最强。
修改后的完整代码如下:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC EXECUTABLE = r"~/chromedriver.exe" ADBLOCK = r"~/AdBlock –-der-beste-Ad-Blocker_v4.35.0.crx" # set options for driver options = webdriver.ChromeOptions() options.add_extension(ADBLOCK) driver = webdriver.Chrome(executable_path = EXECUTABLE, options=options) driver.implicitly_wait(30) # 新增:操作ABP设置关闭可接受广告 driver.get("chrome-extension://gighmmpiobklfepjocnamgkkbiglidom/options.html") # 等待选项加载完成 accept_ad_toggle = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "acceptable-ads-allow")) ) # 已勾选则取消 if accept_ad_toggle.is_selected(): accept_ad_toggle.click() # 再访问目标URL url = "https://www.dcclothesline.com/author/deangarrison/" driver.maximize_window() driver.get(url) # calculate size of the loaded page w2 = driver.execute_script("return document.body.offsetWidth;") h2 = driver.execute_script("return document.body.offsetHeight;") print("Webpage size with ad block", w2*h2) driver.close()
注意事项
如果ABP版本更新后元素ID变更,可手动打开ABP设置页,通过F12开发者工具重新定位「可接受的广告」复选框的选择器替换即可。
内容的提问来源于stack exchange,提问作者NPD
相关产品推荐
相关产品推荐

