news 2026/8/21 1:24:40

基于Python与AI的闲鱼自动化系统:Selenium与LLM实现智能回复与发货

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于Python与AI的闲鱼自动化系统:Selenium与LLM实现智能回复与发货

1. 背景与核心概念

在二手电商运营中,尤其是像闲鱼这样的平台,卖家常常面临一个核心痛点:如何高效处理海量的商品咨询与订单,尤其是在非工作时间。手动回复“在吗?”、“还有货吗?”等重复性问题,不仅耗时耗力,还容易错过潜在订单。因此,一个能够实现自动回复、智能对话乃至自动发货的系统,成为了提升运营效率、解放卖家时间的利器。

本文将围绕“闲鱼自动发货与AI回复系统”的搭建思路展开。请注意,本文旨在探讨技术实现的原理、合法合规的自动化方案以及开源工具的应用,不涉及任何破解、绕过平台限制或使用未经授权的第三方客户端。所有讨论均基于模拟用户操作(如浏览器自动化)或利用平台官方接口(如果存在且允许)的合法合规方式。

核心概念解析:

  1. 自动回复:指系统能够自动响应买家的消息。这可以分为两个层次:

    • 关键词回复:预设规则,如买家消息包含“价格”、“包邮”等关键词,则自动回复预设的答案。
    • AI智能回复:利用大语言模型(如GPT、文心一言、通义千问等),理解买家问题的意图,生成更自然、更个性化的回复,甚至进行多轮对话。
  2. 自动发货:指在买家付款后,系统能自动完成发货流程。这通常涉及:

    • 订单监控:定时或实时检查是否有新订单产生。
    • 物流信息获取:从自己的ERP系统、电子面单平台或预设的物流模板中获取运单号。
    • 发货操作:将运单号填入闲鱼订单,并点击“发货”按钮。
  3. 系统搭建:意味着我们需要一个7x24小时运行的后台服务。它需要部署在服务器上,例如云服务器(ECS)、轻量应用服务器,或者性能足够的个人电脑(不推荐,因网络和电力不稳定)。

为什么需要了解这些?对于个人卖家或小团队,手动操作尚可应付。但当商品数量增多、咨询量变大时,自动化系统能显著降低人力成本,避免因回复不及时导致的客户流失,实现“躺赚”式的被动收入流。对于开发者而言,这是一个典型的“业务流程自动化(RPA)”与“AI应用落地”的结合项目,具有很高的学习和实践价值。

2. 环境准备与版本说明

在开始搭建之前,我们需要准备好运行环境。本文将采用一种主流且灵活的技术栈:Python+Selenium(用于Web自动化) +FastAPI(用于提供API服务) +ChatGPT API(用于AI回复)。你也可以根据熟悉的技术替换相应组件。

基础环境:

  • 操作系统:Ubuntu 20.04/22.04 LTS(推荐用于生产环境),Windows 10/11 或 macOS(可用于开发测试)。
  • Python:版本 3.8 或以上。本文示例使用 Python 3.9。
  • 版本管理工具:Git(可选,用于代码管理)。
  • 服务器:一台具有公网IP的云服务器(如阿里云ECS、腾讯云CVM)。配置建议1核2G以上,用于长期运行服务。

核心依赖库:我们将创建一个requirements.txt文件来管理依赖。

# requirements.txt # Web 自动化与浏览器驱动 selenium==4.15.0 webdriver-manager==4.0.1 # Web 框架,用于构建监控API或管理后台 fastapi==0.104.1 uvicorn[standard]==0.24.0 # HTTP 请求库,用于调用AI接口或其它API httpx==0.25.1 # 环境变量管理 python-dotenv==1.0.0 # 定时任务调度 apscheduler==3.10.4 # 数据处理 pandas==2.1.3 # 可选,用于处理订单数据 # AI 接口调用 (以OpenAI为例) openai==1.3.0

重要说明:

  • 浏览器与驱动:Selenium 需要控制真实的浏览器(如Chrome)。在服务器上,我们需要安装无头(Headless)模式的Chrome。
  • AI模型选择:除了OpenAI,你可以替换为国内可访问的模型,如百度千帆(文心一言)、阿里灵积(通义千问)、智谱AI等,只需更换对应的API调用代码。
  • 环境变量:敏感信息如API密钥、账号密码等,务必通过.env文件管理,不要硬编码在代码中。

3. 系统架构与原理拆解

一个完整的系统可以分为以下几个核心模块,它们协同工作,实现从消息监听、智能处理到订单履行的闭环。

3.1 整体架构图(文字描述)

1. 触发层: - 定时任务:每隔X分钟检查一次闲鱼PC端网页或(模拟)App端的消息和订单。 - 消息队列:理想情况下,可通过逆向工程监听WebSocket(复杂度高,风险大),本文不采用。我们主要使用定时轮询。 2. 数据获取层: - Selenium自动化:模拟登录闲鱼PC网页,定位消息列表和订单列表元素,获取未读消息和新订单数据。 - API调用(如果未来开放):直接调用闲鱼官方API(目前对普通卖家限制严格)。 3. 智能处理层: - 规则引擎:对消息进行关键词匹配,触发固定回复。 - AI引擎:将消息内容发送给大语言模型API,获取生成的回复文本。需要设计提示词(Prompt)来约束AI的回复风格和内容。 4. 执行层: - 消息回复:通过Selenium定位对话框,输入AI生成的回复文本,并点击发送。 - 订单发货:通过Selenium在订单详情页填入从其他系统获取的物流单号,点击发货。 5. 支撑层: - 配置管理:管理商品、回复话术、AI参数等。 - 日志与监控:记录所有操作和异常,便于排查问题。 - 任务调度:管理定时任务的启停和周期。

3.2 关键技术原理

1. Selenium Web自动化原理:Selenium通过WebDriver协议与真实浏览器(如ChromeDriver)通信。WebDriver直接控制浏览器,执行点击、输入、跳转等操作,并能获取页面DOM元素的内容。这模拟了真实用户的所有操作。

  • 优点:完全模拟真人,不易被简单的反爬机制拦截。
  • 缺点:速度慢,资源消耗大,浏览器环境需要维护。

2. 大语言模型(LLM)提示工程:为了让AI回复更符合“闲鱼卖家”的身份,我们需要精心设计提示词(Prompt)。例如:

你是一个专业的闲鱼二手商品卖家,性格热情、耐心、简洁。请根据用户关于商品【{商品标题}】的提问,进行友好、专业的回复。只回复对话内容本身,不要添加任何解释。 商品信息:{商品详细信息} 用户问题:{用户消息} 历史对话:{最近3条对话历史}

通过这样的Prompt,可以引导AI生成更贴合场景的回复。

3. 状态管理与防重复:系统需要记录哪些消息已回复、哪些订单已处理,避免重复操作。通常会在本地数据库(如SQLite)或文件中记录一个处理状态的日志。

4. 核心模块代码实现

接下来,我们将分步骤实现核心模块。请注意,以下代码为示例原型,在生产环境中需要添加完善的错误处理、日志记录和容错机制。

4.1 项目结构创建

首先,创建项目目录结构。

mkdir xianyu-auto-system && cd xianyu-auto-system touch main.py config.py ai_replier.py msg_monitor.py order_processor.py requirements.txt .env.example mkdir logs

4.2 环境配置与浏览器初始化

config.py用于集中管理配置。

# config.py import os from dotenv import load_dotenv from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager load_dotenv() # 加载 .env 文件中的环境变量 class Config: # 闲鱼账号(强烈建议使用小号测试!) XIANYU_USERNAME = os.getenv('XIANYU_USERNAME') XIANYU_PASSWORD = os.getenv('XIANYU_PASSWORD') # AI 配置 (以OpenAI为例) OPENAI_API_KEY = os.getenv('OPENAI_API_KEY') OPENAI_BASE_URL = os.getenv('OPENAI_BASE_URL', 'https://api.openai.com/v1') AI_MODEL = os.getenv('AI_MODEL', 'gpt-3.5-turbo') # 系统配置 CHECK_INTERVAL = int(os.getenv('CHECK_INTERVAL', 300)) # 检查间隔,默认5分钟 HEADLESS = os.getenv('HEADLESS', 'True').lower() == 'true' # 是否使用无头模式 # 日志路径 LOG_FILE = 'logs/xianyu_auto.log' @staticmethod def init_driver(): """初始化Chrome WebDriver""" chrome_options = Options() if Config.HEADLESS: chrome_options.add_argument('--headless') # 无头模式,服务器运行必备 chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--window-size=1920,1080') # 添加其他参数以避免被检测为自动化工具(部分) chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option('useAutomationExtension', False) chrome_options.add_argument('--disable-blink-features=AutomationControlled') # 使用 webdriver-manager 自动管理驱动版本 service = Service(ChromeDriverManager().install()) driver = webdriver.Chrome(service=service, options=chrome_options) # 执行CDP命令,隐藏WebDriver特征 driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', { 'source': ''' Object.defineProperty(navigator, 'webdriver', { get: () => undefined }); ''' }) return driver

.env.example文件,使用时复制为.env并填写真实信息。

# .env.example XIANYU_USERNAME=your_username XIANYU_PASSWORD=your_password OPENAI_API_KEY=sk-your_openai_api_key_here CHECK_INTERVAL=300 HEADLESS=True

4.3 消息监控与获取模块

msg_monitor.py负责登录闲鱼并获取未读消息。

# msg_monitor.py import time from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from config import Config import logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) class MessageMonitor: def __init__(self, driver): self.driver = driver self.wait = WebDriverWait(driver, 20) def login(self): """模拟登录闲鱼PC端(此处为示例,实际登录逻辑可能因页面改版失效)""" logger.info("正在尝试登录闲鱼...") self.driver.get('https://login.taobao.com/') # 淘宝统一登录入口 time.sleep(3) # 等待并点击密码登录(示例定位,实际需根据页面调整) try: pwd_login_btn = self.wait.until( EC.element_to_be_clickable((By.XPATH, "//a[contains(text(), '密码登录')]")) ) pwd_login_btn.click() time.sleep(1) except Exception as e: logger.warning("未找到密码登录标签页,可能已默认显示。") # 输入用户名和密码 username_input = self.wait.until( EC.presence_of_element_located((By.ID, 'fm-login-id')) ) password_input = self.driver.find_element(By.ID, 'fm-login-password') username_input.clear() username_input.send_keys(Config.XIANYU_USERNAME) time.sleep(0.5) password_input.send_keys(Config.XIANYU_PASSWORD) time.sleep(1) # 处理滑块验证(这是一个难点,可能需要更复杂的识别方案,此处仅示意) # 在实际项目中,可能需要接入打码平台或使用图像识别库 logger.warning("请注意:如需滑块验证,请手动完成。自动化处理滑块验证涉及复杂识别,本文不展开。") time.sleep(10) # 留出时间手动操作 # 点击登录按钮 login_btn = self.driver.find_element(By.XPATH, "//button[@type='submit']") login_btn.click() time.sleep(5) # 登录后跳转到闲鱼消息页 self.driver.get('https://message.taobao.com/') # 淘宝消息中心,闲鱼消息在此 time.sleep(5) logger.info("登录流程执行完毕。") def fetch_unread_messages(self): """获取未读消息列表(示例逻辑,需根据实际页面结构调整)""" messages = [] try: # 假设未读消息有一个特定的CSS类,例如 ‘unread’ # 实际中需要分析闲鱼消息页面的HTML结构 unread_elements = self.driver.find_elements(By.CSS_SELECTOR, '.message-item.unread') for elem in unread_elements[:5]: # 每次最多处理5条,避免超时 try: sender = elem.find_element(By.CSS_SELECTOR, '.sender-name').text preview = elem.find_element(By.CSS_SELECTOR, '.message-preview').text link = elem.find_element(By.CSS_SELECTOR, 'a').get_attribute('href') messages.append({ 'sender': sender, 'preview': preview, 'link': link, 'element': elem # 保存元素,方便后续点击 }) except Exception as e: logger.error(f"解析单个消息元素失败: {e}") continue except Exception as e: logger.error(f"获取未读消息列表失败: {e}") return messages

4.4 AI智能回复模块

ai_replier.py负责调用大模型生成回复。

# ai_replier.py import openai from config import Config import logging import json logger = logging.getLogger(__name__) # 初始化OpenAI客户端(如果使用其他平台,替换此部分) client = openai.OpenAI( api_key=Config.OPENAI_API_KEY, base_url=Config.OPENAI_BASE_URL ) class AIReplier: def __init__(self, product_info=None): self.product_info = product_info or "这是一个二手商品,功能完好,详情见描述。" def generate_reply(self, user_message, conversation_history=None): """ 调用AI生成回复 :param user_message: 用户发送的消息 :param conversation_history: 最近的对话历史列表,格式 [{'role':'user','content':'...'}, {'role':'assistant','content':'...'}] :return: AI生成的回复文本 """ prompt = f""" 你是一个闲鱼二手商品卖家,请用热情、简洁、专业的口吻回复买家。 商品信息:{self.product_info} 买家提问:{user_message} 请直接给出回复内容,不要添加任何额外的解释或标记。 """ messages = [{"role": "system", "content": prompt}] if conversation_history: # 将历史对话并入上下文,注意长度限制 messages.extend(conversation_history[-6:]) # 只保留最近3轮对话 try: response = client.chat.completions.create( model=Config.AI_MODEL, messages=messages, max_tokens=150, temperature=0.7, # 控制创造性,0.7较为平衡 ) reply = response.choices[0].message.content.strip() logger.info(f"AI生成回复成功。问题:『{user_message}』 -> 回复:『{reply}』") return reply except openai.APIError as e: logger.error(f"调用AI API失败: {e}") # 降级策略:返回一个预设的通用回复 return "您好,我现在暂时无法处理复杂问题。您可以查看商品描述,或稍后联系我。" except Exception as e: logger.error(f"生成回复时发生未知错误: {e}") return "收到您的消息,稍后回复您。"

4.5 订单处理模块

order_processor.py负责监控并处理新订单。

# order_processor.py import time from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import logging logger = logging.getLogger(__name__) class OrderProcessor: def __init__(self, driver): self.driver = driver self.wait = WebDriverWait(driver, 20) def check_new_orders(self): """检查是否有待发货的新订单(示例逻辑)""" new_orders = [] try: # 导航到闲鱼“我卖出的”页面 self.driver.get('https://trade.taobao.com/trade/itemlist/list_sold_items.htm') time.sleep(5) # 寻找状态为“等待卖家发货”的订单 # 实际XPath需要根据闲鱼页面实时调整 order_elements = self.driver.find_elements(By.XPATH, "//div[contains(@class, 'order-item') and .//span[contains(text(), '等待卖家发货')]]") for elem in order_elements[:5]: # 每次处理最多5个订单 try: order_id = elem.find_element(By.CSS_SELECTOR, '.order-id').text buyer_name = elem.find_element(By.CSS_SELECTOR, '.buyer-name').text product_name = elem.find_element(By.CSS_SELECTOR, '.product-name').text new_orders.append({ 'order_id': order_id, 'buyer': buyer_name, 'product': product_name, 'element': elem }) except Exception as e: logger.error(f"解析订单元素失败: {e}") continue except Exception as e: logger.error(f"检查新订单失败: {e}") return new_orders def ship_order(self, order_info, tracking_number): """ 执行发货操作 :param order_info: 订单信息字典 :param tracking_number: 物流单号 """ try: # 点击进入订单详情页 order_info['element'].click() time.sleep(3) # 切换到新打开的标签页 window_handles = self.driver.window_handles if len(window_handles) > 1: self.driver.switch_to.window(window_handles[-1]) time.sleep(2) # 点击“发货”按钮 ship_btn = self.wait.until( EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), '发货')]")) ) ship_btn.click() time.sleep(2) # 选择物流方式并填入单号(这里以“其他物流”为例) # 实际页面可能有多步操作 other_logistics = self.wait.until( EC.element_to_be_clickable((By.XPATH, "//div[text()='其他物流']")) ) other_logistics.click() time.sleep(1) tracking_input = self.wait.until( EC.presence_of_element_located((By.XPATH, "//input[@placeholder='请输入物流单号']")) ) tracking_input.clear() tracking_input.send_keys(tracking_number) time.sleep(1) # 确认发货 confirm_btn = self.driver.find_element(By.XPATH, "//button[contains(text(), '确认发货')]") confirm_btn.click() time.sleep(3) logger.info(f"订单 {order_info['order_id']} 发货成功,物流单号:{tracking_number}") # 关闭详情页标签页,切回主窗口 self.driver.close() self.driver.switch_to.window(window_handles[0]) except Exception as e: logger.error(f"订单 {order_info.get('order_id')} 发货失败: {e}") # 错误处理:截图保存 self.driver.save_screenshot(f'logs/ship_error_{order_info.get("order_id", "unknown")}.png')

4.6 主调度程序

main.py将以上模块串联起来,形成定时任务。

# main.py import time import schedule from datetime import datetime from config import Config from msg_monitor import MessageMonitor from ai_replier import AIReplier from order_processor import OrderProcessor import logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler(Config.LOG_FILE), logging.StreamHandler() ] ) logger = logging.getLogger(__name__) # 全局状态记录,防止重复处理 processed_messages = set() processed_orders = set() def job(): """定时执行的任务""" logger.info("=== 开始执行定时检查任务 ===") driver = None try: driver = Config.init_driver() monitor = MessageMonitor(driver) processor = OrderProcessor(driver) ai = AIReplier(product_info="【示例商品】九成新无线蓝牙耳机,音质好,续航强。") # 1. 登录(仅在首次或会话过期时执行,这里简化处理) # 实际应增加登录状态检查 monitor.login() # 2. 检查并回复消息 unread_msgs = monitor.fetch_unread_messages() for msg in unread_msgs: msg_key = f"{msg['sender']}_{msg['preview'][:20]}" if msg_key in processed_messages: continue # 点击进入聊天窗口(简化示意) # driver.get(msg['link']) # time.sleep(3) # 实际需要定位输入框并发送消息 # reply_text = ai.generate_reply(msg['preview']) # send_reply(driver, reply_text) # 需要实现send_reply函数 logger.info(f"待回复消息来自: {msg['sender']}, 内容预览: {msg['preview']}") processed_messages.add(msg_key) time.sleep(2) # 避免操作过快 # 3. 检查并处理订单 new_orders = processor.check_new_orders() for order in new_orders: if order['order_id'] in processed_orders: continue # 假设从其他系统获取了物流单号,这里用模拟数据 fake_tracking_number = f"YT{int(time.time())}CN" # processor.ship_order(order, fake_tracking_number) # 实际发货,测试时注释掉 logger.info(f"检测到待发货订单: {order['order_id']} - {order['product']}。模拟发货单号: {fake_tracking_number}") processed_orders.add(order['order_id']) time.sleep(3) except Exception as e: logger.error(f"定时任务执行过程中发生严重错误: {e}", exc_info=True) finally: if driver: driver.quit() logger.info("=== 定时检查任务结束 ===\n") if __name__ == '__main__': logger.info("闲鱼自动发货回复系统启动...") # 立即执行一次 job() # 每隔 CHECK_INTERVAL 秒执行一次 schedule.every(Config.CHECK_INTERVAL).seconds.do(job) while True: schedule.run_pending() time.sleep(1)

5. 部署与运行

5.1 服务器环境准备(以Ubuntu为例)

  1. 安装Python3和pip:

    sudo apt update sudo apt install python3-pip python3-venv -y
  2. 安装Chrome浏览器(无头模式):

    wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' sudo apt update sudo apt install google-chrome-stable -y # 检查版本 google-chrome --version
  3. 克隆或上传代码到服务器:

    git clone <你的代码仓库地址> # 或使用scp上传 cd xianyu-auto-system
  4. 创建虚拟环境并安装依赖:

    python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
  5. 配置环境变量:

    cp .env.example .env nano .env # 使用vim或nano编辑,填入真实的账号和API密钥

5.2 运行与测试

  1. 首次运行测试(非无头模式,便于调试): 在.env中设置HEADLESS=False,然后在服务器上运行:

    python main.py

    此时会弹出图形界面的Chrome(需要服务器有桌面环境或使用VNC)。观察登录、消息获取等流程是否正常。请务必准备好手动处理滑块验证

  2. 生产环境运行(无头模式): 在.env中设置HEADLESS=True。使用nohupsystemd让程序在后台运行。

    nohup python main.py > output.log 2>&1 &

    查看日志:

    tail -f logs/xianyu_auto.log

6. 常见问题与排查思路

问题现象可能原因排查思路与解决方案
Selenium无法启动Chrome1. Chrome未安装。
2. ChromeDriver版本不匹配。
3. 服务器内存不足。
1. 运行google-chrome --version确认安装。
2.webdriver-manager通常能自动匹配,检查日志。
3. 使用free -h检查内存,考虑升级配置。
登录时出现滑块验证,无法通过闲鱼/淘宝的风控机制检测到自动化行为。1. 这是最大难点。可尝试:增加随机延迟、模拟人类移动鼠标轨迹、使用更稳定的Cookie登录(需定期更新)。
2. 考虑接入第三方打码平台进行识别。
3.终极方案:研究是否有合法的官方API或合作渠道。
获取不到消息或订单列表页面HTML结构发生变化。1. 使用浏览器开发者工具重新分析页面元素,更新代码中的CSS选择器或XPath。
2. 增加等待时间time.sleep()或使用更智能的WebDriverWait
3. 在关键步骤后截图 (driver.save_screenshot('debug.png')) 辅助分析。
AI回复内容不相关或违规Prompt设计不佳或AI模型理解偏差。1. 优化Prompt,更明确地限定身份、场景和回复格式。
2. 在Prompt中加入禁止项,如“不要透露价格”、“不要使用营销话术”。
3. 对AI回复内容进行二次过滤和检查。
重复回复或重复发货状态记录 (processed_messages,processed_orders) 未持久化,服务重启后丢失。1. 将已处理状态存入数据库(如SQLite)或文件,每次启动时加载。
2. 使用更精确的唯一标识,如“消息ID”而非“发送者+预览”。
程序运行一段时间后崩溃1. 内存/资源泄漏。
2. 网络波动。
3. 浏览器会话过期。
1. 确保在finally块中调用driver.quit()
2. 添加全面的异常捕获和重试机制。
3. 实现会话心跳或定期重新登录。
服务器IP被闲鱼封禁同一IP高频访问。1. 大幅增加检查间隔(如30分钟一次)。
2. 使用代理IP池(需谨慎,确保合规)。
3.最重要的:控制操作频率,模拟真实用户行为。

7. 最佳实践与工程建议

  1. 合规与风险第一

    • 严格遵守平台规则:频繁、机械的自动化操作可能违反闲鱼用户协议,存在账号被封风险。务必使用备用小号进行测试和运营。
    • 控制操作频率:将检查间隔 (CHECK_INTERVAL) 设置得足够长(如5-10分钟),避免秒级请求。
    • 人工兜底:AI回复无法处理复杂议价、纠纷等问题。系统应标记这类对话,提醒人工介入。
  2. 代码健壮性

    • 异常处理:每个网络请求、页面操作、API调用都必须有try...except,并记录详细日志。
    • 重试机制:对于临时性失败(如网络超时),应实现指数退避的重试逻辑。
    • 状态持久化:使用轻量级数据库(SQLite)记录任务状态、消息日志、订单日志,便于排查和恢复。
  3. 可维护性

    • 配置外化:所有变量(如URL、选择器、时间间隔)都应放在配置文件或环境变量中。
    • 模块化设计:如本文所示,将登录、监控、AI、订单处理分离,方便单独调试和替换。
    • 日志分级:使用logging模块,区分INFOWARNINGERROR级别,并输出到文件。
  4. 性能与扩展

    • 单浏览器实例:避免为每个任务创建新浏览器,应复用同一个Driver实例(注意会话管理)。
    • 异步处理:考虑使用asyncioaiohttp来处理多个AI请求,提升并发能力。
    • 任务队列:如果商品和订单量极大,可引入Redis或RabbitMQ作为任务队列,实现分布式处理。
  5. 安全

    • 密钥管理:绝不在代码中硬编码密码和API Key。使用.env文件,并在生产环境使用密钥管理服务。
    • 权限最小化:运行程序的系统用户应具有最小必要权限。
    • 输入检查:对AI返回的内容进行敏感词过滤,避免自动发出违规信息。

8. 总结与展望

通过本文的拆解,我们实现了一个基于Python Selenium和大型语言模型的闲鱼自动化系统原型。它涵盖了从环境搭建、原理分析、模块编码到部署运行的全流程。核心价值在于提供了一套合法合规前提下,提升电商运营效率的技术思路和实现参考

关键点回顾:

  1. 自动化基础:Selenium WebDriver 是模拟网页操作的核心工具。
  2. 智能核心:通过设计良好的Prompt调用大模型API,可以实现拟人化的自动回复。
  3. 系统集成:将消息监控、智能回复、订单处理通过定时任务串联,形成一个闭环系统。
  4. 风险控制:必须高度重视频率控制、异常处理和平台规则,这是项目能否长期运行的关键。

下一步可以探索的方向:

  • 多渠道集成:将这套逻辑适配到其他电商平台或社交软件。
  • 知识库增强:为AI回复接入商品知识库,使其回答更精准。
  • 可视化后台:使用Flask或Django开发一个Web管理后台,方便配置话术、查看日志、管理任务。
  • RPA平台:考虑使用更专业的RPA平台(如影刀、UiPath)来构建流程,可能更稳定且易于维护。

自动化工具是一把双刃剑,它能极大提升效率,但也需在平台规则和用户体验的边界内谨慎使用。希望本文提供的技术方案能为你打开思路,在实际应用中,请务必以测试为先,小步迭代,平稳运行。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 1:22:34

V3 Admin Vite 的坑,一次说清:从环境版本到动态路由权限

V3 Admin Vite 的坑&#xff0c;一次说清&#xff1a;从环境版本到动态路由权限 【免费下载链接】v3-admin-vite ☀️ AI-friendly Vue3 admin template | Vue Admin | Vue Template | Vue3 Admin | Vue3 Template | Vue 后台 | Vue 模板 | Vue3 后台 | Vue3 模板 项目地址: …

作者头像 李华
网站建设 2026/8/21 1:20:00

系统设计中的路径抉择:直接暴露与多智能体中介策略解析

1. 项目概述&#xff1a;当目标一致&#xff0c;路径相左 在复杂系统设计、组织管理乃至个人决策中&#xff0c;我们常常会遇到一个核心矛盾&#xff1a;面对同一个高风险、高价值的目标&#xff0c;团队内部或不同专家给出的实现路径却截然相反&#xff0c;甚至完全对立。最近…

作者头像 李华
网站建设 2026/8/21 1:19:10

Windows鼠标速度调校全攻略:从注册表到DPI的精准控制

鼠标移动速度调校指南&#xff1a;从注册表参数到DPI设置的完整解决方案最近在调试开发环境时&#xff0c;遇到了一个非常具体且实际的问题&#xff1a;一位同事&#xff08;我们暂且称他为“钊哥”&#xff09;在调整Windows鼠标指针速度时陷入了困惑。他的原话是&#xff1a;…

作者头像 李华
网站建设 2026/8/21 1:18:43

AI图像生成技术滥用:从Grok事件看深度伪造风险与防范

最近&#xff0c;AI图像生成技术的滥用问题再次成为社会焦点。一起令人震惊的诉讼案件揭示了技术被用于恶意目的的阴暗面&#xff1a;一名女子指控其继父利用名为“Grok”的AI工具&#xff0c;将她童年的照片转换生成了露骨的图像。这起案件不仅是一起家庭纠纷&#xff0c;更是…

作者头像 李华
网站建设 2026/8/21 1:07:18

大模型数学推理新范式:批评家引导的异构多智能体协同求解

1. 项目概述&#xff1a;当大模型遇上数学难题&#xff0c;为何需要“批评家”与“混合军团”&#xff1f;数学问题求解&#xff0c;尤其是那些需要多步推理、逻辑严谨的复杂题目&#xff0c;一直是衡量人工智能系统认知能力的关键试金石。传统的单一大型语言模型&#xff08;L…

作者头像 李华
网站建设 2026/8/21 0:57:05

Ubuntu 22.04上使用DevStack快速部署OpenStack开发测试环境

在国内开发或测试环境中&#xff0c;快速搭建一个可用的 OpenStack 平台是很多学习者和开发者面临的第一道门槛。手动部署 OpenStack 组件复杂且耗时&#xff0c;而 DevStack 作为一个自动化部署脚本工具&#xff0c;能够极大地简化这一过程。它通过一系列 Shell 脚本&#xff…

作者头像 李华