使用Selenium+Python上传YouTube视频突然失败,求助排查
YouTube Selenium上传机器人报错「哎呀,出问题了」的原因及解决方向
核心原因:自动化行为被YouTube反爬机制识别
虽然手动在同一个Selenium实例里上传正常,但自动化脚本的操作模式和人类操作存在差异,被YouTube的检测系统判定为非人类行为,从而拦截上传请求。
具体排查方向及解决方法
模拟真实用户操作路径
不要直接跳转至上传页面,严格复刻人类操作流程:- 打开YouTube首页,等待页面加载完成
- 点击右上角头像,进入创作者工作室(中间加入1-3秒随机等待)
- 点击「上传」按钮,期间模拟鼠标移动、页面滚动等行为
避免操作过于机械,每步操作之间加入随机延迟(比如time.sleep(random.uniform(1,3)))
优化文件上传的代码实现
- 优先使用
send_keys直接操作隐藏上传控件:
YouTube的上传功能依赖页面中隐藏的<input type="file">元素,无需点击上传按钮,直接定位该元素并传入文件绝对路径即可,避免触发页面的交互检测:from selenium.webdriver.common.by import By # 定位隐藏的文件上传input upload_input = driver.find_element(By.XPATH, '//input[@type="file"]') # 传入文件绝对路径(Windows下用原始字符串避免转义问题) upload_input.send_keys(r"C:\path\to\your\video.mp4") - 若用pyautogui,需确保浏览器窗口处于前台:
执行上传前先最大化窗口并激活:driver.maximize_window() # 点击上传按钮后等待2-3秒,确保系统弹出文件选择窗口 time.sleep(2) # 输入文件路径后按回车确认 pyautogui.typewrite(r"C:\path\to\your\video.mp4") pyautogui.press('enter')
- 优先使用
强化浏览器反检测配置
- 复用手动登录的浏览器配置:
使用undetected_chromedriver时,加载本地Chrome的用户数据目录,复用已登录的会话和浏览器配置,避免重新登录带来的检测风险:import undetected_chromedriver as uc from selenium.webdriver.chrome.options import Options options = Options() # 替换为你的Chrome用户数据目录路径 options.add_argument(r"user-data-dir=C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data") options.add_argument(r"profile-directory=Default") driver = uc.Chrome(options=options) - 禁用自动化特征标记:
添加浏览器参数,隐藏Selenium的自动化痕迹:options.add_argument("--disable-blink-features=AutomationControlled") options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False)
- 复用手动登录的浏览器配置:
检查文件路径的合法性
确保传入的文件路径是绝对路径,Windows下避免反斜杠转义错误,优先使用原始字符串(r"路径")或正斜杠(/)替代反斜杠。
内容的提问来源于stack exchange,提问作者kareem mahlees
相关产品推荐
相关产品推荐

