Selenium WebDriver调用get(url)后页面跳回data:的问题求助
问题描述
目标URL:
url_TKLLPG_1 = 'https://truyenhdx.com/truyen/than-kiem-luu-lac-phap-gioi/chap/10323547-chuong-19/'
原代码实现每隔2秒自动刷新页面,之后定位并点击下一章按钮,代码如下:
def open_and_refresh_websiteVL(driver, url, interval_seconds, number_of_chapter = 0): try: driver.get(url) time.sleep(6) time.sleep(2) except ConnectionRefusedError: print(f'WebDriverException caught at {number_of_chapter}, url: {url}') driver.quit() new_driver = get_chrome_driver() open_and_refresh_websiteVL(new_driver, url, interval_seconds, number_of_chapter) except WebDriverException: driver.quit() return count = 0 while(count<=2): time.sleep(interval_seconds) driver.refresh() time.sleep(interval_seconds) driver.refresh() time.sleep(interval_seconds) driver.refresh() time.sleep(interval_seconds) driver.refresh() time.sleep(interval_seconds) count+=1 if(number_of_chapter > 80): driver.quit() if(driver.find_elements(By.XPATH, '//*[@id="html"]/body/div[5]/div/div/div[8]/div[3]/a')!=[]): buttonNext = driver.find_element(By.XPATH, '//*[@id="html"]/body/div[5]/div/div/div[8]/div[3]/a').click() nexturl = driver.current_url open_and_refresh_websiteVL(driver,nexturl, interval_seconds, number_of_chapter+1)
ChromeDriver配置(基于反爬规避方案):
def get_chrome_driver(): ua = UserAgent() user_agent = ua.random print(user_agent) chrome_options = webdriver.ChromeOptions() # 添加参数禁用AutomationControlled标识 chrome_options.add_argument("--disable-blink-features=AutomationControlled") # 排除enable-automation开关 chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) # 关闭userAutomationExtension chrome_options.add_experimental_option("useAutomationExtension", False) chrome_options.add_argument(f'user-agent={user_agent}') driver = webdriver.Chrome(options=chrome_options, service=ChromeService(ChromeDriverManager().install())) return driver
调用方式:
refresh_interval = 2 driver = get_chrome_driver() open_and_refresh_websiteVL(driver, url_TKLLPG_1, refresh_interval)
异常现象
此前代码运行正常,但现在执行driver.get(url)后,页面加载约1秒自动跳回data: URL。仅该网站出现此问题,其他网站代码正常,手动访问该网站无异常。
已尝试手段
- 使用随机User-Agent
- 添加反自动化标识的Chrome配置
- 使用无任何配置的
driver.get(url)
问题依旧。
请问是代码存在问题,还是目标网站检测到了Selenium的使用?
分析与解决方案
这是目标网站升级了反爬检测,精准识别出了Selenium的自动化特征,和代码本身逻辑无关。
针对性解决建议:
- 补充CDP指令隐藏更多痕迹:初始化driver后执行以下代码,覆盖浏览器的自动化识别特征:
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }); Object.defineProperty(navigator, 'plugins', { get: () => [1, 2, 3, 4, 5] }); Object.defineProperty(navigator, 'languages', { get: () => ['vi-VN', 'vi'] }); """ }) - 优化刷新逻辑:原代码短时间内连续4次刷新的操作完全不符合人类浏览习惯,极易触发检测。建议减少刷新次数,或设置1-3秒的随机间隔:
import random # 替换固定sleep为随机值 time.sleep(random.uniform(1,3)) - 加载真实浏览器配置:导出你手动访问该网站时的Chrome配置文件,初始化driver时加载该配置,让自动化环境与真实环境一致:
chrome_options.add_argument("--user-data-dir=/path/to/your/chrome/profile") - 改用undetected-chromedriver:该库专门针对反爬优化,能自动隐藏大部分Selenium特征,替换原有的ChromeDriver初始化逻辑即可。
内容的提问来源于stack exchange,提问作者Darkie
相关产品推荐
相关产品推荐

