Bark上手及脚本操作介绍

引言

  Bark 是一款我最近很常用的推送 App,具体介绍可以参考少数派的 这篇文章 以及小众软件的 这篇文章。简单来说,Bark 是一款超级轻量级的 iOS 端消息 push 接收工具,消息推送走的是苹果官方的 push 通道,实时性和稳定性都非常可靠。这个 App 支持自定义请求,自行部署服务器, 客户端服务端 均是开源的,适合注重隐私的用户。

Bark上手及脚本操作介绍

Bark上手

  首先在 App Store 上下载 Bark 客户端,安装完成后打开安装的应用。第一次打开时,主界面如图,点击”注册设备”,并在弹出的授权窗口中,允许应用发送通知。

主界面

  授权之后的应用主界面如图,显示了目前支持的几种推送消息格式的请求链接,它们均以 https://服务端地址/设备识别码/推送内容及参数 为格式。直接在浏览器中访问各个链接,可以测试 Bark 推送的各项功能,目前支持标题、正文、URL 跳转及自动复制功能。

Bark 应用主页

Bark 请求参数说明

  Bark 支持 GET 和 POST 请求,只需向服务端发起相应类型的请求,并传递相应的参数即可。请求的标准格式为 https://{server}/{key}/{category}/{title}/{message}?{option}={opt_val}&{option}={opt_val} ,各项参数的说明如下:

  • server: 接收请求的服务端地址, 默认为 api.day.app,是 App 作者自有的服务器。用户自行部署服务端后可以将其替换掉;
  • key:设备识别码,用于区分不同的设备,每次删除 Bark 应用再重新安装后会重置。发起请求时设备识别码决定了通知会被推送到哪部设备上,请保管好自己的设备识别码,避免被无聊人士骚扰;
  • category: 保留字段,目前无用,后续作者可能会用于扩展功能,可以为空;
  • title: 推送通知的标题,字号比正文粗,可以为空;

  • message: 推送消息的正文,文本内容用”\n”换行;

  • option: 其它参数,用于设置手机在接收到通知后的特殊操作,可以为空,目前支持以下三个参数:
  •   automaticallyCopy: 参数值为1时,收到通知推送后系统会自动复制通知文本。可通过 copy 参数配置复制的文本;
  •   copy: 配置自动/手动复制时,具体要复制的文本。没有该参数时默认复制通知文本全文;
  •   url: 配置点击通知时,要跳转的网页。没有该参数时点击通知自动打开 Bark 应用。

Bark 脚本操作方法

GET 请求

  GET 请求会将请求的各个参数直接放在链接中,Bark 应用的首页介绍的各个链接都是使用这种请求形式,可以直接使用浏览器访问来发起,如直接访问 https://api.day.app/yourkey/验证码是1234?automaticallyCopy=1 可以向 yourkey 对应的设备发送”验证码是1234”的通知,并让设备在收到通知后自动复制通知全文。

  除了通过浏览器直接访问,还可以通过程序/脚本发起请求。以 Python 为例,通过 requests 库可以很简单地向服务端发起请求:

1
2
3
4
5
6
7
8
9
10
import requests

url = "{server}/{key}/{title}/{msg}?automaticallyCopy=1"
server_addr = "https://api.day.app" # 此处填写服务端地址
my_key = "abcd1234dcba" # 此处填写自己的设备识别码
my_title = "这是标题" # 此处填写通知标题
my_msg = "验证码是1234" # 此处填写通知内容

url = url.format(server=server_addr, key=my_key, title=my_title, msg=my_msg)
r = requests.get(url)

POST 请求

  GET 请求会将参数明文暴露在访问的 URL 中,出于安全考虑,使用 POST 请求更为妥当。通过 POST 发起请求时,可以使用 这个工具 来发起。注意,通过 POST 发起请求时,应该向 {server}/{key}/ (如 https://api.day.app/abcd1234dcba/ )而不是 {server} (如 https://api.day.app )发起请求,设备识别码是请求地址的一部分。

在线发送 POST 请求

  设备收到的推送通知如图:

通知推送

  同样,我们可以通过程序/脚本发起请求。以 Python 为例,POST 请求的代码与 GET 请求的不太一样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import requests

url = "{server}/{key}/"
server_addr = "https://api.day.app" # 此处填写服务端地址
my_key = "abcd1234dcba" # 此处填写自己的设备识别码
my_title = "这是标题" # 此处填写通知标题
my_msg = "验证码是1234" # 此处填写通知内容

req_data = {}
req_data["body"] = my_msg
req_data["title"] = my_title
# req_data["automaticallyCopy"] = "1"
# req_data["copy"] = "自动拷贝文本"
# req_data["url"] = "https://cn.bing.com"
# req_data["category"] = ""

req_url = url.format(push_server, push_key)
r = requests.post(url=req_url, data=req_data, headers={'Content-Type':'application/x-www-form-urlencoded;charset=utf-8'})

后记

  写这篇文章是因为现在网上很少 Bark 相关的内容,尤其是如何通过程序/脚本来发送通知的内容,根本找不到资料,只能自己摸索(大概是我太菜了吧……)。这篇文章算是个整理吧,接下来准备马克一下怎么部署自己的服务端,以及配置 Apache 实现 https 安全连接。Mew~

显示 Gitment 评论