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

如何实现Python脚本定时向Chrome扩展发送事件?

Python脚本与Chrome扩展的事件通信实现思路

一、Socket通信方案(完全可行)

  • Python端实现逻辑:
    1. 利用Python内置的socket模块搭建本地TCP/UDP服务端,绑定127.0.0.1和固定端口,专注本地通信避免网络问题。
    2. 借助time.sleep()或schedule库实现定时任务,到达指定时间就将数据序列化为JSON字符串,通过Socket发送出去。
  • Chrome扩展端实现逻辑:
    1. 在扩展的后台脚本中,使用Chrome提供的chrome.sockets API(需在manifest.json中声明sockets权限),连接Python的本地Socket服务。
    2. 监听Socket连接的onMessage事件,收到数据后解析为JSON格式,再执行对应的业务处理逻辑。
    3. 额外处理连接断开的重连逻辑,确保Python服务重启后扩展能恢复通信。

二、Chrome Native Messaging方案(官方推荐,更稳定)

这是Chrome官方为本地应用与扩展通信设计的标准方案,兼容性和安全性更好:

  • Python端实现逻辑:
    1. 遵循Chrome Native Messaging规范编写脚本,通过标准输入输出(stdin/stdout)作为通信通道——Chrome会启动Python进程,双方以此传递JSON数据。
    2. 在Python脚本内部实现定时任务,到点后先发送4字节无符号整数表示数据长度,再发送JSON格式的事件数据(必须遵循这个格式要求)。
    3. 在系统中注册该Python脚本:Windows修改注册表,Linux/macOS配置特定目录下的JSON文件,让Chrome能识别对应的本地应用ID。
  • Chrome扩展端实现逻辑:
    1. 在manifest.json中声明nativeMessaging权限,并指定允许通信的本地应用ID。
    2. 调用chrome.runtime.connectNative()建立长连接,监听onMessage事件接收数据,对应你示例中的on_receive_event处理逻辑。
    3. 若需要主动触发通信,可使用chrome.runtime.sendNativeMessage(),但Python定时推送场景下保持长连接更合适。

三、本地HTTP服务方案(实现简单)

  • Python端实现逻辑:
    1. 用Flask或FastAPI搭建本地HTTP服务,可选两种模式:
      • 提供POST接口,Python定时任务调用接口发送数据;
      • 基于Server-Sent Events(SSE)实现长连接,定时主动向扩展推送数据。
    2. 绑定127.0.0.1和固定端口,确保仅本地可访问。
  • Chrome扩展端实现逻辑:
    1. 在后台脚本中,用fetch定时发起GET请求拉取数据,或用EventSource连接SSE服务监听实时推送。
    2. 该方案无需额外权限声明(Chrome默认允许本地HTTP请求),开发成本较低。

Socket方案的补充说明

Socket完全能满足需求,但需要自行处理连接管理、数据序列化、异常重连等细节;而Native Messaging作为官方适配方案,更贴合Chrome扩展的安全模型,无需手动处理端口占用、权限适配等问题,稳定性更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:45:29