# 请求头配置 (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;"
}
};
'
'
```
## 5. 重定向拦截 (Redirect Interception)
通过 `java.get` / `java.post` 方法拦截重定向,获取最终跳转后的 URL。适用于搜索结果会重定向的网站。
```js
// 方法签名
java.get(urlStr: String, headers: Map)
java.post(urlStr: String, body: String, headers: Map)
```
**示例**:搜索重定向场景下获取真实 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)
}
})()
```