You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redbubble自动上传程序:验证码、Cookie登录及弹窗处理求助

Redbubble自动上传程序问题解决方案

一、验证码处理

Redbubble的反爬验证码直接用Selenium很难自动识别,给三个可行方案:

  • 接入打码平台:把验证码区域截图传给第三方打码API,拿到识别结果后自动填充输入框。
  • 手动介入:脚本触发验证码时暂停,提示你手动完成验证,验证通过后再继续执行。
  • 换用undetected-chromedriver:这个是修改过的ChromeDriver,能绕过大部分反爬检测,降低验证码出现的概率。

二、Cookie复用失败修复

你的Cookie复用代码有几个关键错误,修复后就能正常复用登录状态:

  1. 获取Cookie前必须确保完全登录,别用固定sleep,改用显式等待直到登录成功的元素出现(比如个人中心图标)。
  2. 添加Cookie前必须先访问Redbubble域名,否则Cookie无法绑定到正确站点。
  3. 过滤Cookie里的不兼容字段,比如expiry要转成整数,sameSite字段可能导致添加失败,直接删掉。

修复后的Cookie复用代码:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pickle

# 首次登录并保存Cookie
path = Service(r'C:\Users\yazha\OneDrive\Pictures\New folder\chromedriver.exe')
driver = webdriver.Chrome(service=path)
driver.get('https://www.redbubble.com/')

# 等待登录按钮可点击并点击
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, "Login"))).click()

# 填写账号密码
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "ReduxFormInput1"))).send_keys("你的账号")
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "ReduxFormInput2"))).send_keys("你的密码")

# 点击登录按钮
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "app-ui-components-Button-Button_button_1_MpP"))).click()

# 等待登录完成(验证个人中心元素出现)
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "a[href='/account']")))

# 保存Cookie到本地文件
pickle.dump(driver.get_cookies(), open("redbubble_cookies.pkl", "wb"))
driver.quit()

# 复用Cookie登录
driver = webdriver.Chrome(service=path)
driver.get('https://www.redbubble.com/')

# 加载并添加Cookie
cookies = pickle.load(open("redbubble_cookies.pkl", "rb"))
for cookie in cookies:
    # 处理过期时间和不兼容字段
    if 'expiry' in cookie:
        cookie['expiry'] = int(cookie['expiry'])
    if 'sameSite' in cookie:
        del cookie['sameSite']
    try:
        driver.add_cookie(cookie)
    except Exception as e:
        print(f"Cookie添加失败: {e}")

driver.refresh()
# 验证登录状态
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "a[href='/account']")))

三、手动操作时的弹窗处理

分两种弹窗类型处理:

  • 系统弹窗(alert/confirm):用Selenium的弹窗切换方法处理:
try:
    alert = WebDriverWait(driver, 5).until(EC.alert_is_present())
    alert.accept()  # 确认弹窗,取消用alert.dismiss()
except:
    pass  # 没弹窗就跳过
  • 自定义弹窗:找到弹窗的关闭按钮元素,定位后点击:
try:
    close_btn = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".modal-close")))
    close_btn.click()
except:
    pass

四、基于CSV的批量上传实现

先准备好CSV文件(比如upload_list.csv),字段包含image_path(本地图片路径)、title(作品标题)、description(描述)、tags(标签,用逗号分隔),然后用以下代码实现批量上传:

import csv
from selenium.webdriver.common.keys import Keys

# 读取CSV数据
with open('upload_list.csv', 'r', encoding='utf-8') as csv_file:
    reader = csv.DictReader(csv_file)
    for item in reader:
        # 进入上传页面
        driver.get('https://www.redbubble.com/upload')
        
        # 上传图片:找到文件输入框,传入本地路径
        upload_input = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[type='file']")))
        upload_input.send_keys(item['image_path'])
        
        # 填充标题和描述
        WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "title"))).send_keys(item['title'])
        WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "description"))).send_keys(item['description'])
        
        # 输入标签(每个标签输入后按回车)
        tag_input = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "tags-input")))
        for tag in item['tags'].split(','):
            tag_input.send_keys(tag.strip())
            tag_input.send_keys(Keys.ENTER)
        
        # 提交上传
        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "app-ui-components-Button-Button_button_1_MpP"))).click()
        
        # 等待上传完成,可根据成功提示调整定位
        WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".upload-success")))

内容的提问来源于stack exchange,提问作者Yazhamuthan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 06:30:10