HTTP & SOCKS — Xray-core
پروتکلهای پراکسی همگانی. HTTP از CONNECT و حالت قدیمی پراکسی شفاف پشتیبانی میکند؛ SOCKS از هر دو v4a و v5 پشتیبانی میکند (نسخه از اولین بایتی که کلاینت ارسال میکند بهصورت خودکار تشخیص داده میشود).
HTTP
ورودی
settings برای "protocol": "http":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
accounts | []*HTTPAccount | [] | [HTTPAccount] | فهرست کاربران. خالی احراز هویت را غیرفعال میکند (ورودی به یک پراکسی باز تبدیل میشود). |
allowTransparent | bool | false | true | false | وقتی true باشد، ورودی درخواستهای بدون CONNECT را میپذیرد و بهعنوان پراکسی شفاف HTTP ارسال میکند. |
userLevel | uint32 | 0 | <uint32> | سطح policy پیشفرض برای کلاینتهایی بدون بازنویسی به ازای کاربر. |
منبع: infra/conf/http.go:25-29 · ثابتشده در v1.260327.0 (d2758a0)
accounts[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
user | string | (required) | <string> | نام کاربری برای HTTP Basic auth. |
pass | string | (required) | <string> | گذرواژه برای HTTP Basic auth. |
منبع: infra/conf/http.go:13-16 · ثابتشده در v1.260327.0 (d2758a0)
خروجی
settings برای یک خروجی با "protocol": "http":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
address | *Address | (unset) | <host> | شکل سادهشده — میزبان پراکسی بالادست. |
port | uint16 | (required with address) | <port> | پورت پراکسی بالادست. |
level | uint32 | 0 | <uint32> | سطح policy. |
email | string | (unset) | <string> | برچسب در آمار و لاگ. |
user | string | (unset) | <string> | نام کاربری برای auth بالادست. |
pass | string | (unset) | <string> | گذرواژه برای auth بالادست. |
servers | []*HTTPRemoteConfig | (use simplified shape) | [HTTPRemoteConfig] | شکل کامل با دقیقاً یک سرور. |
headers | map[string]string | {} | {<header>: <value>} | سرآیندهای HTTP اضافی که در هر درخواست ارسال میشوند. |
منبع: infra/conf/http.go:53-62 · ثابتشده در v1.260327.0 (d2758a0)
servers[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
address | *Address | (required) | <host> | میزبان پراکسی بالادست. |
port | uint16 | (required) | <port> | پورت پراکسی بالادست. |
users | []json.RawMessage | [] | [HTTPAccount] | کاربران auth اختیاری (حداکثر یک). |
منبع: infra/conf/http.go:47-51 · ثابتشده در v1.260327.0 (d2758a0)
SOCKS
ورودی
settings برای "protocol": "socks":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
auth | string | noauth | noauth | password | حالت احراز هویت. مقادیر ناشناخته بیصدا به `noauth` بازمیگردند (`infra/conf/socks.go:45-47`). |
accounts | []*SocksAccount | [] | [SocksAccount] | فهرست کاربران برای `auth: password`. |
udp | bool | false | true | false | فعالسازی پشتیبانی UDP-associate در SOCKS5. |
ip | *Address | (unset) | <address> | آدرس عمومی اعلامشده در پاسخهای UDP-associate. وقتی شنونده پشت NAT است الزامی است. |
userLevel | uint32 | 0 | <uint32> | سطح policy پیشفرض. |
منبع: infra/conf/socks.go:30-36 · ثابتشده در v1.260327.0 (d2758a0)
accounts[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
user | string | (required) | <string> | نام کاربری. |
pass | string | (required) | <string> | گذرواژه. |
منبع: infra/conf/socks.go:13-16 · ثابتشده در v1.260327.0 (d2758a0)
خروجی
settings برای یک خروجی با "protocol": "socks":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
address | *Address | (unset) | <host> | شکل سادهشده — میزبان SOCKS بالادست. |
port | uint16 | (required with address) | <port> | پورت SOCKS بالادست. |
level | uint32 | 0 | <uint32> | سطح policy. |
email | string | (unset) | <string> | برچسب آمار. |
user | string | (unset) | <string> | نام کاربری auth. |
pass | string | (unset) | <string> | گذرواژه auth. |
servers | []*SocksRemoteConfig | (use simplified shape) | [SocksRemoteConfig] | شکل کامل با دقیقاً یک سرور. |
منبع: infra/conf/socks.go:72-80 · ثابتشده در v1.260327.0 (d2758a0)
servers[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
address | *Address | (required) | <host> | میزبان SOCKS بالادست. |
port | uint16 | (required) | <port> | پورت SOCKS بالادست. |
users | []json.RawMessage | [] | [SocksAccount] | کاربران auth اختیاری. |
منبع: infra/conf/socks.go:66-70 · ثابتشده در v1.260327.0 (d2758a0)
مثالها
ورودی HTTP با دو کاربر:
{
"inbounds": [
{
"tag": "http-in",
"listen": "127.0.0.1",
"port": 1080,
"protocol": "http",
"settings": {
"accounts": [
{ "user": "alice", "pass": "<password>" },
{ "user": "bob", "pass": "<password>" }
],
"allowTransparent": false
}
}
]
}ورودی SOCKS5 با UDP-associate:
{
"inbounds": [
{
"tag": "socks-in",
"listen": "0.0.0.0",
"port": 1081,
"protocol": "socks",
"settings": {
"auth": "password",
"accounts": [{ "user": "alice", "pass": "<password>" }],
"udp": true,
"ip": "203.0.113.10"
}
}
]
}خروجی به یک پراکسی HTTP بالادست:
{
"outbounds": [
{
"tag": "via-http",
"protocol": "http",
"settings": {
"address": "upstream.example.com",
"port": 8080,
"user": "alice",
"pass": "<password>",
"headers": { "X-Forwarded-Proto": "https" }
}
}
]
}نکات
- ورودی HTTP بدون حساب بهعنوان یک پراکسی باز عمل میکند. آن را با
listen: "127.0.0.1"، یک قاعدهٔ مسیریابی که منابع بیرونی را رد میکند، یا هر دو محدود کنید. allowTransparent: trueبهندرت چیزی است که میخواهید. حالت قدیمی سبک V2Ray «ورودی را بهعنوان ارسالکنندهٔ شفاف استفاده کنید» را فعال میکند که با متد CONNECT صریح-پراکسی برخورد میکند. مگر مورد استفادهٔ مشخصی داشته باشید آن را خاموش بگذارید.auth: "password"تنها راه نیازمند ساختن اعتبارنامهها در SOCKS است. رشتههای روش auth ناشناخته بیصدا بهnoauthتنزل مییابند — برای اشتباه تایپی خطایی نیست (infra/conf/socks.go:45-47).- فیلد
ipدر SOCKS آدرس عمومی قابل دسترسی است که در پاسخهای UDP-associate اعلام میشود. بدون آن، کلاینتهای آن سوی NAT یک آدرس داخلی غیرقابل مسیریابی دریافت خواهند کرد. - هر دو خروجی HTTP و SOCKS از الگوی سادهشده در برابر
servers[]استفاده میکنند —servers[]باید دقیقاً یک مدخل داشته باشد.
نکات بینهستهای
- sing-box HTTP و SOCKS را در یک فایل منبع (
option/simple.go) ادغام میکند و یک ورودی سوم «mixed» را نمایان میسازد که هر دو را روی یک پورت سرویس میدهد. به HTTP & SOCKS — sing-box مراجعه کنید. - mihomo از
username/password(نهuser/pass) روی خروجی استفاده میکند، شنوندگان ورودی را به سه نوع (http,socks,mixed) تقسیم میکند و از HTTP/SOCKS پیچیده در TLS از طریق فیلد گواهی شنونده پشتیبانی میکند. به HTTP & SOCKS — mihomo مراجعه کنید.
منبع: infra/conf/http.go:13-62 · v1.260327.0 (d2758a0)
