阅读此文档需要了解基础的JavaScript语法和正则表达式
如果您有兴趣学习JavaScript的教程可以移步至:菜鸟教程-JavaScript教程
如果您有兴趣学习正则表达式的内容可以移步至:30分钟入门正则表达式
本人非Loon作者,在官方文档没有出来之前,本API手册可作为脚本编写的API参考。
Loon支持三种脚本类型:http-request,http-response,cron http-request类型:获取到表达式匹配的URL地址发生请求事件时触发的脚本 http-response类型:获取到表达式匹配的URL地址完成请求,取得响应消息体时触发的脚本 cron类型:定时任务脚本,在Loon中有表达式的详细注解,cron可自行百度进行学习
Loon支持通过脚本向用户推送通知信息
API名称:$notification API方法:post API方法参数:Title,SubTitle,Content Title:通知标题 SubTitle:子标题 Content:内容 Tips:SubTitle和Content必须传入的,可以传入空字符串,则只会显示通知标题;SubTitle显示的内容长度有限,如果内容过长,建议写入Content。
API代码示例: function Notify_Demo() { var Title,SubTitle,Content; TItle = "我是主标题"; SubTitle = "我是子标题"; Content = "我是要推送的内容"; $notification.post(Title,SubTitle,Content); } //Call Function Notify_Demo()
Loon支持发送Http请求,许多签到脚本的实现也是基于此API。
API名称:$httpClient API方法:get,post 本API分为两个方法,get方法和post方法,其中get请求支持两种参数格式: GET请求的API方法参数(第一种):Url,CallBackFunction(error,response,data) GET请求的API方法参数(第二种):Params,CallBackFunction(error,response,data) POST请求的API方法参数:Params,CallBackFunction(error,response,data) Url:请求的URL,字符串类型 CallBackFunction(error,response,data):回调函数,用于获取请求回来的消息体,传入三个参数:error,response,data;response:消息头,对象类型;data:消息体,字符串类型;error一般表示错误信息 Params:请求对象,对象类型,其中包括三个内容:url,headers,body;分别表示请求的URL,请求头信息,需要携带的消息体;headers:对象类型,写入请求所需要的各种头部信息。
GET请求的两种方式:
//$httpClient.get(url,callbackfunction(error,response,data)); function Get_One()//第一种方式 { var ExampleUrl = "https://example.com"; $httpClient.get(ExampleUrl,function(error,response,data) { var StatusCode,ResponseHeaders; StatusCode = response.status; ResponseHeaders = response.headers; console.log(response); console.log(StatusCode);//400 console.log(ResponseHeaders);//Object console.log(error); console.log(data); console.log(Json.parse(data));//if data is Json String //Loon支持使用Console.log输出调试信息 }) } //$httpClient.get(params,callbackfunction(error,response,data)) function Get_Two()//第二种方式 { var GetExampleParams { url:"https://www.baidu.com", headers: { "User-Agent":"Example.Agent", Cookies:"ExampleCookie", //... }, body:"ExampleBodyMessage" } $httpClient.get(GetExampleParams,function(error,response,data) { var StatusCode,ResponseHeaders; StatusCode = response.status; ResponseHeaders = response.headers; console.log(response); console.log(StatusCode);//400 console.log(ResponseHeaders);//Object console.log(error); console.log(data); console.log(Json.parse(data));//if data is Json String //Loon支持使用Console.log输出调试信息 }) }
POST请求
//$httpClient.post(params,callbackfunction(error,response,data)) function Post_Data() { var GetExampleParams { url:"https://www.baidu.com", headers: { "User-Agent":"Example.Agent", Cookies:"ExampleCookie", //... }, body:"ExampleBodyMessage" } $httpClient.post(GetExampleParams,function(error,response,data) { var StatusCode,ResponseHeaders; StatusCode = response.status; ResponseHeaders = response.headers; console.log(response); console.log(StatusCode);//400 console.log(ResponseHeaders);//Object console.log(error); console.log(data); console.log(Json.parse(data));//if data is Json String //Loon支持使用Console.log输出调试信息 }) } }
Loon中的http-request类型的脚本,除了支持公共API外,还有自有的变量,不过该变量只有在其被触发时才有效。
API名称:$request API属性:url,headers....等等 本API只有在匹配了正则表达式匹配的URL链接才会被触发,直接运行会报错。 tips:非cron类型脚本,都需要在MITM中添加要解密的域名,否则不会生效;您需要添加正则表达式 使用$request.url可以获取到请求链接等信息,如果您不知道$request中包含哪些信息 可以使用console.log($request)输出其完整的信息
//获取请求URL和请求头信息 function Get_RequestInfo() { var RequestURL,RequestHeaders; RequestURL = $request.url; RequestHeaders = $request.headers; console.log(RequestURL); console.log(RequestHeaders); } //修改请求头信息 function Change_Request() { var RequestHeaders = $request.headers; RequestHeaders["Cookie"] = "ChangeExampleCookie"; $done({RequestHeaders});//修改完成之后需要调用$done }
Loon中的http-response类型的脚本,除了支持公共API外,还有自有的变量,不过该变量只有在其被触发时才有效。
API名称:$response API属性:headers....等等 本API只有在匹配了正则表达式匹配的URL链接才会被触发,直接运行会报错。 tips:非cron类型脚本,都需要在MITM中添加要解密的域名,否则不会生效;您需要添加正则表达式 如果您不知道$response中包含哪些信息 可以使用console.log($response)输出其完整的信息 注意:如果要修改消息体的内容,需要打开Body开关
//获取响应信息 function Get_ResponseInfo() { var ResponseHeaders; RequestHeaders = $response.headers; console.log(RequestHeaders); } //修改消息体 function Change_ResponseBody() { var RespnseBodyData = $response.body RespnseBodyData = Json.parse(RespnseBodyData); RespnseBodyData["ExampleTree"] = "ExampleChangeTree"; $done({RespnseBodyData});//修改完成之后需要调用$done }
我也不知道API的意思是不是这个,姑且这么叫吧。 在Loon中,提供了一个能在全局存储数据的API,也就是一个脚本在运行的时候,可以读取其他多个脚本运行中存入公共区域的数据。 本函数在Loon的进程被杀死之前,存储的数据一直会被保留。
API名称:$peristentStroe 方法:write,read,remove write:用于写入数据到公共存储区 read:用于读取在公共存储区已有的数据 remove:移除公共存储区存储的数据
API代码示例: function Write_PeristentStore()//写入存储区 { var WriteString = "WriteExample"; $peristentStore.write(WriteString,"ExampleKey");//参数分别代表:写入的数据,数据存储的Key名称,用于取出数据 } function Read_PeristentStore()//读取写入的数据 { var ReadKey = "ExampleKey";//上一个API写入数据的KEY名称 var ReadResult = $peristentStore.read(ReadKey); console.log(ReadResult);//输出数据 } //Remove方法我就不写例子了,和read相同
本API多被用于需要获取Cookie的脚本进行Cookie获取写入持续存储区,再供签到脚本读取Cookie来运行。
其实文档还没有结束,目前官方正式的文档还没有出来,希望我的文档能够帮助到大家。 Tips:Loon中所有的内建函数,如$httpClient等,都可以使用console.log($functionName)来查看它的方法和属性。 一个小贴士:$loon也是属于一个内建函数,可以使用本函数输出loon版本,也可以通过这个来判断脚本是否再loon中运行。 loon的config部分我就不讲了,没有深入了解过,只了解了以上提到的内容。 END. PwnInt32