我们在做浏览器自动化登录或者已经登录后再进行自动化的时候,很多时候都会碰到智能验证环节,如下图的点击按钮智能验证。
也有可能是向左滑动的智能验证等等,那么怎么绕过这个环节呢,其中一种方法可以在你的代码中加一小段代码即可解决
# 创建一个浏览器对象
driver = webdriver.Chrome()
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""})
当前也可以通过设置无头浏览器,设置一些浏览器参数,禁用一些图片、js加载来防止弹出验证码。
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--disable-gpu')
options.add_argument('--disable-extensions')
options.add_argument('--disable-infobars')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--no-sandbox')
options.add_argument('--disable-popup-blocking')
options.add_argument('--disable-default-apps')
options.add_argument('--disable-translate')
options.add_argument('--disable-web-security')
options.add_argument('--disable-features=IsolateOrigins,site-per-process')
options.add_argument('--blink-settings=imagesEnabled=false')
options.add_argument('--disable-javascript')
driver = webdriver.Chrome(chrome_options=options)
还可以尝试登录前删除Cookie。
如果网站使用Cookie来识别用户并显示验证码,您可以尝试在每次登录之前删除Cookie。这将模拟每次新用户登录网站的情况,从而避免验证码。
driver.delete_all_cookies()
也可以使用代理IP
有些网站会通过IP地址来识别用户并显示验证码。您可以尝试使用代理IP来避免这种情况。
例如,以下代码将使用代理IP启动Chrome浏览器:
from selenium import webdriver
options = webdriver.ChromeOptions()options.add_argument('--proxy-server=http://your-proxy-ip:your-proxy-port')
driver = webdriver.Chrome(chrome_options=options)
总之,在使用Selenium登录网站时,您可以尝试上述方法来避免验证码登录。但是,请注意,如果网站具有强大的反爬虫保护机制,这些方法可能无法奏效。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理