使用Python自动化提交Google表单遇Selenium登录拦截如何解决
Selenium绕过Google登录检测的解决方案
Google的反爬机制会识别Selenium驱动浏览器时留下的特征标记,比如默认值为True的navigator.webdriver变量、自动化控制的开关标识等,匹配到这类特征就会触发登录拦截,你可以通过以下两种方案绕过检测:
方案1:修改原生Selenium启动配置(适配火狐浏览器)
通过修改浏览器启动参数和运行时属性,隐藏webdriver相关特征,修改后的代码如下:
from selenium import webdriver from selenium.webdriver.firefox.options import Options import time options = Options() # 禁用自动化控制特征标识 options.set_preference("dom.webdriver.enabled", False) options.set_preference("useAutomationExtension", False) # 排除自动化控制相关的特征开关 options.add_argument("--disable-blink-features=AutomationControlled") options.add_argument("--no-sandbox") # 可选:加载本地火狐用户配置,可直接使用已登录的Google账号,免去重复登录步骤 # 本地配置路径可在火狐地址栏输入about:support,找到「配置文件夹」的路径填入即可 # options.add_argument("-profile", "你的火狐本地配置文件夹路径") web = webdriver.Firefox(options=options, executable_path='geckodriver') # 动态删除webdriver标记 web.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})") web.get('https://docs.google.com/forms/d/e/1FAIpQLSeRTrUApzzGYOzxBCf-0gJjWkK2OFMlZ10pZxWKHl9iS-2WuQ/viewform') time.sleep(2) input('Check if working')
方案2:使用undetected-chromedriver(推荐)
这个第三方库专门修改了Chrome驱动的底层特征,对Google反爬的绕过效果远好于原生Selenium,用法简单,适配性更高。
首先安装依赖:pip install undetected-chromedriver
示例代码:
import undetected_chromedriver as uc import time # 可选:添加user_data_dir参数加载本地Chrome用户配置,保留登录状态 # web = uc.Chrome(user_data_dir="你的Chrome本地用户数据路径") web = uc.Chrome() web.get('https://docs.google.com/forms/d/e/1FAIpQLSeRTrUApzzGYOzxBCf-0gJjWkK2OFMlZ10pZxWKHl9iS-2WuQ/viewform') time.sleep(2) input('Check if working')
注意事项
- 不要短时间内多次重复提交表单,否则即便绕过浏览器检测,也可能触发Google的行为风控拦截
- 若使用加载本地用户配置的方案,启动脚本前要完全关闭正在运行的对应浏览器,避免出现配置占用报错
- 尽量不使用无痕模式启动浏览器,无痕模式的特征更容易被反爬机制识别
内容的提问来源于stack exchange,提问作者Siddhant Shah
相关产品推荐
相关产品推荐

