使用Selenium访问网站时遭遇DisallowedHost异常求助
Selenium访问http://dbtoolkit.cistrome.org异常问题解决办法
问题说明
尝试用Selenium访问http://dbtoolkit.cistrome.org实现数据分析自动化,正常浏览器访问无问题,但使用Selenium时出现异常。
原代码
def setup_driver(): #Establish settings options = Options() options.add_argument('--ignore-ssl-errors=yes') #ignore insecure warning options.add_argument('--ignore-certificate-errors') #establish driver driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) return driver driver = setup_driver() driver.get('http://dbtoolkit.cistrome.org')
解决思路及修改后的代码
这类异常大多是网站检测到了自动化工具,通过以下配置可规避检测:
- 伪装用户代理,模拟真实浏览器请求
- 禁用Selenium的自动化特征标识
- 移除webdriver属性
- 添加等待确保页面加载完成
修改后的完整代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager def setup_driver(): # 配置浏览器选项 options = Options() # 忽略SSL证书错误 options.add_argument('--ignore-ssl-errors=yes') options.add_argument('--ignore-certificate-errors') # 模拟真实用户代理(可根据你的Chrome版本调整) options.add_argument('--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"') # 禁用自动化检测 options.add_argument('--disable-blink-features=AutomationControlled') options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) # 初始化驱动 driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) # 移除navigator.webdriver标识 driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})") return driver driver = setup_driver() driver.get('http://dbtoolkit.cistrome.org') # 添加隐式等待确保页面加载完成 driver.implicitly_wait(10)
内容的提问来源于stack exchange,提问作者Epic Cabbage
相关产品推荐
相关产品推荐

