简单的vapid头生成库

py-vapid的Python项目详细描述


PyPI version py_vapid

轻松乏味的生成

这个最小库包含您需要的最小函数集 生成一个乏味的密钥集并获取需要在 webpush订阅更新。

vapid是webpush订阅提供商(站点)的自愿标准 向远程客户发送webpush更新)以进行自我识别 服务器(传递推送通知的服务器)。

乏味的“声明”是一组json键和值。有两个 必选字段,一个半可选字段和多个可选附加字段 领域。

至少一个乏味的索赔集应该是这样的:

{"sub":"mailto:YourEmail@YourSite.com","aud":"https://PushServer","exp":"ExpirationTimestamp"}

一些注释:

sub是您希望记录的电子邮件地址 请求,前缀为“mailto:”。如果出了问题,这是 将用于联系您(例如)的电子邮件。这可能是 一般传送地址,如“mailto:push_operations@example.com” 或者像“mailto:bob@example.com”这样的特定地址。

aud是乏味的听众。这就是你的计划 用于发送订阅终结点,通常与 endpoint在订阅信息块中指定。

例如,如果webpush订阅信息包含: {"endpoint": "https://push.example.com:8012/v1/push/...",...}

那么aud就是“https://push.example.com:8012

虽然有些推送服务认为这是一个可选字段,但其他可能是 更严格。

exp这是此vapid请求将 到期。最长周期为24小时。设置较短的周期可以 防止“重播”攻击。设置一个较长的周期允许您重复使用 多次发送的标题(例如,如果您发送了数百个更新 一个小时左右)如果不包括exp,则会过期 24小时后将为您自动生成。

声明应该存储在json兼容的文件中。在例子中 下面,我们将声明存储到名为claims.json的文件中。

py_vapid既可以作为库安装,也可以作为备用 应用程序,bin/vapid

应用程序安装

您需要python virtualenv在当前目录中运行它。

然后运行

bin/pip install -r requirements.txt

bin/python setup.py install

应用程序使用

自行运行,bin/vapid将检查并可选地创建 public_key.pem和private_key.pem文件。

bin/vapid --gen可用于生成一组新的public和 私钥PEM文件。这些将覆盖 private_key.pempublic_key.pem

bin/vapid --sign claims.json将生成一组http头 来自json格式的声明文件。包含样本claims.json。 有了这个分布。

bin/vapid --sign claims.json --json将以json格式输出头 格式,可能对其他程序有用。

bin/vapid --applicationServerKey将返回 applicationServerKey可以用来限制 端点。见 https://developer.mozilla.org/en-US/docs/Web/API/PushManager/subscribe 更多细节。请注意,此值与生成的 公钥/私钥。如果删除或生成新密钥,则 您以前生成的url需要重新分配。请注意 一些用户代理可能需要您to decode this string into a Uint8Array

有关所有选项和命令,请参见bin/vapid -h

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在GitHub中获得特定版本的所有提交?   错误GlobalBlockPalette(Nukkit)java 811   java通过一个有效的键访问Map的Map给出了NPE   java如何使用AspectJ从@Around声明的方法中获取值?   流JAVA:BufferdInputStream和BufferedOutputStream   java错误:包com。亚马逊。服务。dynamodbv2不存在?   java Android使用“instanceof”是确定“onItemSelected”中微调器返回的项目类型的唯一方法吗?   java如何更改JProgressBar文本颜色   在同一文件夹中导入java文件   jsoup这个代码有什么问题?(java)(错误:找不到符号方法getValue())   在Java中,如何以随机顺序迭代zip文件中的条目?   java如何从启动服务创建通知或Toast?   为什么我的java awt代码运行得很慢?   JavaSpring应用程序运行,但无法在测试时创建bean   如何增加一个java。sql。14天的时间戳?   Java中的开源标记云库   Java:设计并实现在程序中实现星期几的课程日   hibernate中集合的java@OneToMany映射