mirror of
https://github.com/MetaCubeX/subconverter.git
synced 2025-11-04 18:19:42 +08:00
Add 'ua' param for User-Agent in subscription fetching
Some checks are pending
GitHub CI / Linux ${{ matrix.arch }} Build (aarch64, subconverter_aarch64, ubuntu-24.04-arm) (push) Waiting to run
GitHub CI / Linux ${{ matrix.arch }} Build (amd64, subconverter_linux64, ubuntu-latest) (push) Waiting to run
GitHub CI / Linux ${{ matrix.arch }} Build (armv7, subconverter_armv7, ubuntu-24.04-arm) (push) Waiting to run
GitHub CI / Linux ${{ matrix.arch }} Build (x86, subconverter_linux32, ubuntu-latest) (push) Waiting to run
GitHub CI / macOS ${{ matrix.arch }} Build (arm, subconverter_darwinarm, macos-14) (push) Waiting to run
GitHub CI / macOS ${{ matrix.arch }} Build (x86, subconverter_darwin64, macos-13) (push) Waiting to run
GitHub CI / Windows ${{ matrix.arch }} Build (amd64, subconverter_win64, x86_64, MINGW64) (push) Waiting to run
GitHub CI / Windows ${{ matrix.arch }} Build (x86, subconverter_win32, i686, MINGW32) (push) Waiting to run
Publish Docker Image / Build ${{ matrix.platform }} Image (ubuntu-24.04-arm, linux/arm/v7) (push) Waiting to run
Publish Docker Image / Build ${{ matrix.platform }} Image (ubuntu-24.04-arm, linux/arm64) (push) Waiting to run
Publish Docker Image / Build ${{ matrix.platform }} Image (ubuntu-latest, linux/386) (push) Waiting to run
Publish Docker Image / Build ${{ matrix.platform }} Image (ubuntu-latest, linux/amd64) (push) Waiting to run
Publish Docker Image / Merge (push) Blocked by required conditions
Some checks are pending
GitHub CI / Linux ${{ matrix.arch }} Build (aarch64, subconverter_aarch64, ubuntu-24.04-arm) (push) Waiting to run
GitHub CI / Linux ${{ matrix.arch }} Build (amd64, subconverter_linux64, ubuntu-latest) (push) Waiting to run
GitHub CI / Linux ${{ matrix.arch }} Build (armv7, subconverter_armv7, ubuntu-24.04-arm) (push) Waiting to run
GitHub CI / Linux ${{ matrix.arch }} Build (x86, subconverter_linux32, ubuntu-latest) (push) Waiting to run
GitHub CI / macOS ${{ matrix.arch }} Build (arm, subconverter_darwinarm, macos-14) (push) Waiting to run
GitHub CI / macOS ${{ matrix.arch }} Build (x86, subconverter_darwin64, macos-13) (push) Waiting to run
GitHub CI / Windows ${{ matrix.arch }} Build (amd64, subconverter_win64, x86_64, MINGW64) (push) Waiting to run
GitHub CI / Windows ${{ matrix.arch }} Build (x86, subconverter_win32, i686, MINGW32) (push) Waiting to run
Publish Docker Image / Build ${{ matrix.platform }} Image (ubuntu-24.04-arm, linux/arm/v7) (push) Waiting to run
Publish Docker Image / Build ${{ matrix.platform }} Image (ubuntu-24.04-arm, linux/arm64) (push) Waiting to run
Publish Docker Image / Build ${{ matrix.platform }} Image (ubuntu-latest, linux/386) (push) Waiting to run
Publish Docker Image / Build ${{ matrix.platform }} Image (ubuntu-latest, linux/amd64) (push) Waiting to run
Publish Docker Image / Merge (push) Blocked by required conditions
This commit is contained in:
parent
a810601250
commit
a6eee00a32
22
README-cn.md
22
README-cn.md
@ -306,7 +306,7 @@ http://127.0.0.1:25500/sub?target=%TARGET%&url=%URL%&emoji=%EMOJI%····
|
||||
#### 调用说明 (进阶)
|
||||
|
||||
| 调用参数 | 必要性 | 示例 | 解释 |
|
||||
| ------------- | :-: | :------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ------------- | :-: |:--------------------------| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| target | 必要 | surge&ver=4 | 指想要生成的配置类型,详见上方 [支持类型](#支持类型) 中的参数 |
|
||||
| url | 可选 | https%3A%2F%2Fwww.xxx.com | 指机场所提供的订阅链接或代理节点的分享链接,需要经过 [URLEncode](https://www.urlencoder.org/) 处理,**可选的前提是在 `default_url` 中进行指定**。也可以使用 data URI。可使用 `tag:xxx,https%3A%2F%2Fwww.xxx.com` 指定该订阅的所有节点归属于`xxx`分组,用于配置文件中的`!!GROUP=XXX` 匹配 |
|
||||
| group | 可选 | MySS | 用于设置该订阅的组名,多用于 SSD/SSR |
|
||||
@ -340,6 +340,7 @@ http://127.0.0.1:25500/sub?target=%TARGET%&url=%URL%&emoji=%EMOJI%····
|
||||
| classic | 可选 | true / false | 用于设置是否生成 Clash classical rule-provider |
|
||||
| tls13 | 可选 | true / false | 用于设置是否为节点增加tls1.3开启参数 |
|
||||
| new_name | 可选 | true / false | 如果设置为 true,则将启用 Clash 的新组名称 (proxies, proxy-groups, rules) |
|
||||
| ua | 可选 | shadowrocket%2F2.2.65 | 用于自定义User-Agent字符串,需要经过 [URLEncode](https://www.urlencoder.org/) 处理。如果不指定,将使用默认的User-Agent |
|
||||
|
||||
举个例子:
|
||||
|
||||
@ -361,6 +362,25 @@ http://127.0.0.1:25500/sub?target=surge&ver=4&tfo=true&udp=true&emoji=true&exclu
|
||||
最后将该链接填写至 Surge 的订阅处就大功告成了。
|
||||
```
|
||||
|
||||
**使用自定义User-Agent的例子:**
|
||||
|
||||
```txt
|
||||
有订阅 `https://example.com/subscribe`,想转换成 Clash 的订阅,并指定User-Agent为 `shadowrocket/2.2.65`
|
||||
|
||||
首先确认需要用到的参数:
|
||||
target=clash 、 ua=shadowrocket/2.2.65
|
||||
url=https://example.com/subscribe
|
||||
|
||||
然后将需要 URLEncode 的部分进行处理:
|
||||
ua=shadowrocket%2F2.2.65
|
||||
url=https%3A%2F%2Fexample.com%2Fsubscribe
|
||||
|
||||
接着将所有元素进行拼接:
|
||||
http://127.0.0.1:25500/sub?target=clash&ua=shadowrocket%2F2.2.65&url=https%3A%2F%2Fexample.com%2Fsubscribe
|
||||
|
||||
这样在获取订阅时就会使用指定的User-Agent字符串。
|
||||
```
|
||||
|
||||
### 配置档案
|
||||
|
||||
> 当通过上述 [进阶链接](#进阶链接) 配置好订阅链接后,通常会使得链接十分冗长和难以记忆,此时可以考虑使用配置档案。
|
||||
|
||||
@ -41,6 +41,7 @@ int addNodes(std::string link, std::vector<Proxy> &allNodes, int groupID, parse_
|
||||
RegexMatchConfigs &time_rules = *parse_set.time_rules;
|
||||
string_icase_map *request_headers = parse_set.request_header;
|
||||
bool &authorized = parse_set.authorized;
|
||||
string_icase_map custom_headers;
|
||||
|
||||
ConfType linkType = ConfType::Unknow;
|
||||
std::vector<Proxy> nodes;
|
||||
@ -142,7 +143,17 @@ int addNodes(std::string link, std::vector<Proxy> &allNodes, int groupID, parse_
|
||||
writeLog(LOG_TYPE_INFO, "Downloading subscription data...");
|
||||
if(startsWith(link, "surge:///install-config")) //surge config link
|
||||
link = urlDecode(getUrlArg(link, "url"));
|
||||
strSub = webGet(link, proxy, global.cacheSubscription, &extra_headers, request_headers);
|
||||
|
||||
// 处理自定义用户代理
|
||||
if(request_headers)
|
||||
custom_headers = *request_headers;
|
||||
|
||||
if(parse_set.custom_user_agent && !parse_set.custom_user_agent->empty())
|
||||
{
|
||||
custom_headers["User-Agent"] = *parse_set.custom_user_agent;
|
||||
}
|
||||
|
||||
strSub = webGet(link, proxy, global.cacheSubscription, &extra_headers, &custom_headers);
|
||||
/*
|
||||
if(strSub.size() == 0)
|
||||
{
|
||||
|
||||
@ -24,6 +24,7 @@ struct parse_settings
|
||||
std::string *sub_info = nullptr;
|
||||
bool authorized = false;
|
||||
string_icase_map *request_header = nullptr;
|
||||
std::string *custom_user_agent = nullptr;
|
||||
#ifndef NO_JS_RUNTIME
|
||||
qjs::Runtime *js_runtime = nullptr;
|
||||
qjs::Context *js_context = nullptr;
|
||||
|
||||
@ -334,6 +334,7 @@ std::string subconverter(RESPONSE_CALLBACK_ARGS)
|
||||
std::string argCustomGroups = urlSafeBase64Decode(getUrlArg(argument, "groups")), argCustomRulesets = urlSafeBase64Decode(getUrlArg(argument, "ruleset")), argExternalConfig = getUrlArg(argument, "config");
|
||||
std::string argDeviceID = getUrlArg(argument, "dev_id"), argFilename = getUrlArg(argument, "filename"), argUpdateInterval = getUrlArg(argument, "interval"), argUpdateStrict = getUrlArg(argument, "strict");
|
||||
std::string argRenames = getUrlArg(argument, "rename"), argFilterScript = getUrlArg(argument, "filter_script");
|
||||
std::string argUserAgent = getUrlArg(argument, "ua");
|
||||
|
||||
/// switches with default value
|
||||
tribool argUpload = getUrlArg(argument, "upload"), argEmoji = getUrlArg(argument, "emoji"), argAddEmoji = getUrlArg(argument, "add_emoji"), argRemoveEmoji = getUrlArg(argument, "remove_emoji");
|
||||
@ -610,6 +611,7 @@ std::string subconverter(RESPONSE_CALLBACK_ARGS)
|
||||
parse_set.sub_info = &subInfo;
|
||||
parse_set.authorized = authorized;
|
||||
parse_set.request_header = &request.headers;
|
||||
parse_set.custom_user_agent = &argUserAgent;
|
||||
parse_set.js_runtime = ext.js_runtime;
|
||||
parse_set.js_context = ext.js_context;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user