2021-12-21

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-12-21相关的知识,希望对你有一定的参考价值。

参考技术A 青龙openAPI非官方文档

前言:之前预告发一个小工具,本来后端部分已经写完,在本地测试成功,但是搬到服务器就出现错误,再加上沉迷游戏,先鸽了。授人以鱼不如授人以渔,发个openapi使用说明,应该有人需要,其实看青龙的源码也能看明白,这里以环境变量的api为例,抛砖引玉了。官方源码:https://github.com/whyour/qinglong/blob/develop/back/api/env.ts

一些缩写介绍:

id:青龙应用的client_id

secret:青龙应用的client_secret

token:通过id和secret请求得到的用于身份验证的东西

URL:代表 http://ip:5700 ,在这里我代指青龙的地址,新版的端口应该是5600

话不多说,直接开始:

请求token:

方法:get,

请求参数:client_id、client_secret

示例:

constdata:data:token=awaitaxios.get(URL+'/open/auth/token',params:client_id:ID,client_secret:SECRET)

ps:此后的请求都要携带请求头,可以全局设置在axios里,也可以每次请求携带。

添加ck:

方法:post,

参数:name,value,remarks。对应JD_COOKIE,ck的值,备注。备注的值可以为空

示例:

constdata:data:[_id,...res]=awaitaxios.post(URL+'/open/envs',[name,value,remarks],headers:Authorization:"Bearer "+token)

ps:参数需要以数组形式传递,否则格式验证出错。这里的_id是青龙返回的,用于后面的请求携带

更新ck:

方法:put

参数:

示例:

constdata:res=awaitaxios.put(URL+'/open/envs',

name,

value,

remarks,

_id,

headers:

Authorization:"Bearer "+token

  

)

ps:这里的_id即相当于某个ck的身份证,需要更新某条ck就要传递它的身份证

删除ck:

方法:delete

参数:_id,需要删除的ck的id

示例:

constdata:res=awaitaxios(

url:URL+'/open/envs',

method:'delete',

data:[_id],

headers:Authorization:"Bearer "+token

)

根据id值获取完整ck信息:

方法:get

参数:_id,参数直接拼接在url里面

示例:

constdata:data:value,status,remarks=''=awaitaxios(

url:URL+'/open/envs/'+_id,

method:'get',

headers:Authorization:"Bearer "+token

)

ps:remarks可为空,避免报错设置一个默认值。value是ck值。status是ck的状态,用1和0表示启用和禁用。原本的返回值内容更加丰富,我这里只解构三个相对实用的信息。

获取所有ck信息:

方法:get

参数:可不填

示例:

constdata:data=awaitaxios(

url:URL+"/open/envs",

method:'get',

headers:"Authorization":"Bearer "+token

)

ps:返回值是一个数组。由于环境变量中可能存在其他不是JD_COOKIE的变量,可以过滤出数组中name位JD_COOKIE的值

data.filter(item=>item.name=="JD_COOKIE")

还有其他接口,大家就自行探索吧。

ICMP:Internet控制报文协议

ICMP:Internet控制报文协议。

 

是IP层的组成部分,传递差错报文或其他信息。

 
ICMP报文被封装在IP数据报内部:
技术分享
 
详细格式例如以下所看到的:
技术分享
 
个字段含义例如以下:
  • 8位类型。表示该ICMP报文的含义。如目的不可达、超时、请求回显等。
  • 8为代码。

     

    进一步描写叙述该ICMP报文。ICMP报文的类型由类型字段和代码字段共同决定

  • 16位检验和。和IP首部检验和的算法同样。
 
我们常常使用的ping程序就是基于ICMP报文进行的传输。pingclient发送一个ICMP回显请求报文,server收到此报文后返回一个ICMP回显应答报文作为应答。client和server都是在内核层发送和接受该报文的,而不是通过用户进程。

 

回显请求和回显应答报文格式例如以下:

技术分享
 
类型0 + 代码0 = 回显应答
类型8 + 代码0 = 回显请求
 
ICMP回显请求和回显应答报文多出了几个特有的字段:
  • 标识符。表示发送进程的ID号。
  • 序号。

     

    从0開始,每发送一个新的回显请求就加1.

  • 选项数据。实际载荷,比如保存发送时间。接收端用当前时间减去发送时间就能计算出往返时间。

     

     

以下是抓包的结果:
技术分享
 
client一共向server发送了4个回显请求。TTL字段是在IP首部中的。因为ICMP属于IP层协议,而IP层又是不可靠、无连接、尽力而为式的传输,所以ping偶尔会出现传输出错的情况。
 
參考:
《TCP/IP具体解释》第6章、第7章。

以上是关于2021-12-21的主要内容,如果未能解决你的问题,请参考以下文章

填写两组缺失的日期并将数据转换为 Spark dataFrame 中的每周

如何将字符串转换为时间,使其具有时区意识,并在 Python 中转换时区?

错误:运行应用程序时出现错误“意外的空值”

终于!Spring Boot 最新版发布,一招解决 Log4j2 核弹级漏洞!

Java中将时间格式转化为yyyy-MM-dd HH:mm:ss

Java中将时间格式转化为yyyy-MM-dd HH:mm:ss