Files
QieKan-3.0/docs/dev/request-headers.md
T

84 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 请求头配置 (Request Headers)
[[toc]]
源的请求头字段用于控制 HTTP 请求行为,包括代理设置、自定义 Headers 和动态参数注入。
## 1. 基本格式
请求头以 JSON 对象形式填写,key **区分大小写**
| 正确 | 错误 |
|:-------------|:-------------|
| `User-Agent` | `user-agent` |
| `Referer` | `referer` |
## 2. 代理配置 (Proxy)
支持 HTTP、SOCKS4、SOCKS5 三种代理协议。
| 协议 | 格式 | 示例 |
|:----------|:-----------------------------|:--------------------------------------------------|
| SOCKS5 | `socks5://host:port` | `{"proxy": "socks5://127.0.0.1:1080"}` |
| SOCKS4 | `socks4://host:port` | `{"proxy": "socks4://127.0.0.1:1080"}` |
| HTTP | `http://host:port` | `{"proxy": "http://127.0.0.1:1080"}` |
| HTTP(带认证) | `http://host:port@user@pass` | `{"proxy": "http://127.0.0.1:1080@admin@secret"}` |
## 3. URL 附加 JS 参数
在 URL 后附加 JSON 对象,可在解析 URL 时执行 JavaScript 动态处理请求。
**语法:**
```
URL,{"js":"JavaScript 代码"}
```
**示例:**
```
https://www.example.com,{"js":"java.headerMap.put('xxx', 'yyy')"}
https://www.example.com,{"js":"java.url=java.url+'yyyy'"}
```
## 4. 图片链接自定义 Headers
在正文图片链接中附加自定义请求头,适用于需要 Referer 或 Cookie 才能加载图片的场景。
```js
let options = {
"headers": {
"User-Agent": "xxxx",
"Referrer": baseUrl,
"Cookie": "aaa=vbbb;"
}
};
'<img src="' + src + "," + JSON.stringify(options) + '">'
```
## 5. 重定向拦截 (Redirect Interception)
通过 `java.get` / `java.post` 方法拦截重定向,获取最终跳转后的 URL。适用于搜索结果会重定向的网站。
```js
// 方法签名
java.get(urlStr: String, headers: Map<String, String>)
java.post(urlStr: String, body: String, headers: Map<String, String>)
```
**示例**:搜索重定向场景下获取真实 URL
```js
(() => {
if (page == 1) {
let url = 'https://www.example.com/search,' + JSON.stringify({
"method": "POST",
"body": "show=title&tempid=1&keyboard=" + key
});
return source.put('surl', String(java.connect(url).raw().request().url()));
} else {
return source.get('surl') + '&page=' + (page - 1)
}
})()
```