请求规则
亦搜使用 HTTP 协议收发请求。HTTP请求包括请求方法(GET
、POST
等),请求头(headers
),请求体(body
)。有兴趣可查看《http请求消息数据格式详解》。
请求规则主要用于搜索、发现、章节、正文的请求地址。
HTTP 请求简介
下面是一个 POST 请求的示例:
POST /search/error.html HTTP/1.1
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
Content-Type: text/html; charset=UTF-8
Accept-Encoding: gzip, deflate
Content-Length: 19
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Connection: Keep-Alive
name=tom&pwd=123456
普通的 GET 请求
直接设置 URL 地址即可。如:
https://www.baidu.com/
带变量关键词的 GET 请求
基础变量
变量名 | 可用规则 | 描述 |
---|---|---|
host | 全部规则 | 域名 URL |
keyword | 搜索地址规则 | 搜索关键字 |
page | 地址规则 | 地址规则当前页码 |
pageSize | 地址规则 | 地址规则当前分页大小 |
cookie | 全部规则 | 请求规则 cookie 数据 |
kind | 发现地址规则 | 筛选模式 可用,栏目类别值 |
在请求的 URL 中可使用 $变量名
的方式使用以上变量。在运行时,会用变量的值替换变量关键词。
示例:
https://www.baidu.com/s?ie=UTF-8&wd=$keyword&page=$page
扩展变量
变量名 | 可用规则 | 描述 |
---|---|---|
verificationCode('url') | 搜索地址规则 | 获取验证码 |
获取验证码(只支持搜索地址规则)
使用 verificationCode('url')
,搜索时提供一个输入验证码的弹窗。弹窗中显示验证码图像和输入框。
示例:
https://www.baidu.com/s?ie=UTF-8&wd=$keyword&page=$page&code=$verificationCode('https://www.baidu.com/img/flexible/logo/pc/result.png')
设置编码方式 (encoding) 的 GET 请求
以爱奇文学为例。
他的搜索是一个带gbk编码的GET请求。搜索汉字 "玄幻",链接为:
http://www.iqiwx.com/modules/article/search.php?searchkey=%D0%FE%BB%C3&searchtype=articlename&page=1
可知玄幻的编码是 %D0%FE%BB%C3,去掉百分号即 D0FEBBC3,数字节得1汉字对于2字节,这是GBK编码特征,
使用 $keyword
替换搜索关键词,使用$page替换页码位置,指定编码 "encoding":"gbk"
,使用JSON写法如下:
{
"url": "http://www.iqiwx.com/modules/article/search.php?searchkey=$keyword&searchtype=articlename&page=$page",
"encoding": "gbk"
}
自定义 header 的 GET 请求
如果需要携带请求头信息,则加上 headers
。有两种方式:
{
"url": "/modules/article/search.php?searchkey=$keyword&searchtype=articlename&page=$page",
"headers":{
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.40"
}
}
提示
图像规则,如封面图,可在得到图像的 url
后使用下面的方式指定获取图像的http 请求header
:
格式为: url@headers{"name":"value",...}
示例:
http://www.iqiwx.com/logo.jpg@headers{"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.40"}
POST 请求
因为 POST 请求不像 GET 请求那样,可以只有一个 URL 地址,所以都会是以 JSON 的写法来。
GET 请求 JSON 写法的内容同样适用于 POST 请求。其实只是 method
不一样。
示例1:
{
"url": "http://www.iqiwx.com/modules/article/search.php",
"method": "POST",
"body": "searchkey=$keyword&searchtype=articlename",
"headers": {
"Content-Type": "application/x-www-form-urlencoded"
}
}
示例2:
{
"url": "http://www.iqiwx.com/modules/article/search.php",
"method": "POST",
"body": {
"searchkey": "$keyword",
"searchtype": "articlename"
}
}
示例3: POST包含表单和JSON
{
"url": "/modules/article/search.php",
"method": "POST",
"body": "{\"searchkey\": \"$keyword\",\"searchtype\": \"articlename\"}",
"headers":{
"Content-Type": "application/json"
}
}
提示
可在 url
字符串或JSON后使用下面的方式获取需要的 cookie
:
格式为: url@cookie:key1|key2|...|kn
举例:获取响应 set-cookie
中的 key
值:
{
"url": "http://www.iqiwx.com/modules/article/search.php",
"method": "POST",
"body": ...
}@cookie:key
设置请求的最大重定向次数
使用JSON写法时,亦搜大白版允许使用 maxRedirects
参数来设置最大允许重定向次数,如果设为 0
则禁止重定向。如果不设置,默认为 5
。
示例: 设置重定向次数的POST请求
{
"url": "/modules/article/search.php",
"method": "POST",
"body": "{\"searchkey\": \"$keyword\",\"searchtype\": \"articlename\"}",
"headers":{
"Content-Type": "application/json"
},
"maxRedirects": 0
}
提示
大白版 V3.6.0
开始正式支持 maxRedirects
最大重定向次数设置。
@js
规则
配合 @js:
({
"url": "/modules/article/search.php",
"method": "POST",
"body": JSON.stringify({
"searchkey": keyword,
"searchtype": "articlename"
}),
"headers":{
"Content-Type": "application/json"
}
})
提示
模板只是参考,要根据实际情况按需使用,所有写法都有js写法,不妨试试。
@http:
规则
高级 可以在多个规则之间,使用 @http:
请求 HTTP 资源。
例子:
- 将上一个规则返回的返回内容作为请求
url
,发起请求,并将响应结果返回。
// 获取百度首页的html内容
@js:'http://www.baidu.com/';@http:1
- 检测上一个规则返回的结果是否符合条件(正则匹配),如果不符合才发起请求,否则直接返回上一次的结果
// 判断上一次的结果中是否包含 ".m3u8" , 如果没有才请求
// 格式: @http:1@@regexp
@js:lastResult;@http:1@@.m3u8
提示
@http:
规则有结果缓存,在一些情况下能提升效率。
其它
跳过请求
有时候,我们并不需要发起 HTTP 请求,这个时候,可以在请求规则中写上 null
。此时,会将地址规则中的 result
作为请求结果向下传递。
贯穿章节模式
当章节地址规则 chapterUrl
为空 null
,并且章节列表规则 chapterList
为空时, 自动启用章节贯穿模式。
有时候,我们搜索或发现列表的数据已经是最终数据,不需要再获取章节数据时,可以使用此模式,简化规则编写。
此模式下会自动添加一个 阅读
或 查看
的章节,并以章节地址规则的 result
作为结果向下传递。