Socket Custom

HTTP RAW payload control inside the app.

Socket Custom is a transport branch created by the V2K team to handle injector-style HTTP RAW payload workflows inside the Xray-based app flow. It is designed for restrictive networks where a standard transport is not enough or where route behavior depends on the shape of the first HTTP-like bytes.

What it is

Use Socket Custom when the payload shape matters

Good fit

HTTP RAW payload workflows, ISP/carrier-specific behavior, restrictive gateways, and cases where a classic WS/gRPC/XHTTP route is not enough by itself.

Not a fit

It is not meant to replace every normal route. If a standard TLS/WS/XHTTP path already works, that is usually the cleaner and faster production option.

What it is not

Socket Custom does not create an SSH tunnel. It keeps the flow inside the Xray runtime and shapes the first bytes and handshake behavior according to payload rules.

Where it lives

In the app, Socket Custom is visible in the Inject flow for fast payload work and in the Config tab for the full advanced block of payload, handshake, throughput, and chunk settings.

Markers

Supported payload markers users will see most often

Marker Meaning Typical use
[host] Insert the selected server/route host alias. Portable payloads that should survive export/import and server switching.
[path] Insert the route path. HTTP-style requests that need to follow the selected path preset.
[ua] Insert a runtime User-Agent string. HTTP-like requests that should not hardcode a single UA everywhere.
[crlf] Carriage-return + line-feed. Normal HTTP header line endings.
[lf] Line-feed only. Payloads that need simplified line endings.
[split] Split payload into segments immediately. Bypass patterns that react differently to segmented first writes.
[delay_split] Split payload with delay between segments. Carrier/firewall cases where timing between chunks matters.
Examples

Typical payload shapes

Simple HTTP-style GET

GET / HTTP/1.1[crlf]
Host: [host][crlf]
User-Agent: [ua][crlf]
Connection: keep-alive[crlf]
[crlf]

Segmented payload

CONNECT [host]:443 HTTP/1.1[crlf]
Host: [host][crlf]
[split]
Connection: keep-alive[crlf]
[crlf]
Field guide

What each advanced Socket Custom field does

Field What it controls When to change it
Payload The raw injector-style request template sent by the runtime. Change it only when your carrier/gateway expects a specific request shape.
Mode How the payload branch behaves: raw, HTTP-like, or ignore mode. Use the route profile default unless you know the server-side expectation.
Strict Handshake Tighter response validation for the initial handshake. Enable when false positives are a problem; disable when intermediary responses vary too much.
Payload Delay / Split Delay Timing between write segments and delayed splits. Useful only when the network reacts differently to chunk timing.
Response Timeout How long the client waits for a valid handshake response. Raise it in slow, lossy, or high-latency paths.
Response Payload Optional expected response signature/body for matching. Use it when you need to distinguish the correct response from noisy intermediaries.
Early Response Allows earlier response processing in compatible flows. Only change it if a known route specifically benefits from earlier reads.
Throughput Optional upstream/downstream shaping and burst budget. Useful for experiments when a route fails only under aggressive send behavior.
Chunk Mode Send outbound payload in fixed chunks. Advanced troubleshooting only, usually on plain/security-none flows.
Use cases

When Socket Custom is usually chosen

Carrier-sensitive payload routes

When the route only works if the first request looks like a specific HTTP pattern.

HTTP injector-style setups

When you want injector-like payload behavior but still inside the app’s Xray-based flow.

Exportable tuned configs

When you want to share payload presets through `.v2k` files or Store listings without rewriting them manually.

Path-specific compatibility work

When a direct route exists but only a particular payload/handshake sequence survives the network.

Accepts and does not accept

Operational limits to keep in mind

Socket Custom accepts: injector-style markers, manual payload text, catalog payload defaults, `.v2k` export/import roundtrip, Store publication, and direct app-side tuning of handshake or chunk behavior.
Socket Custom does not guarantee: that any random server or any random carrier will accept the payload. It still depends on route design, server expectation, HTTP behavior, and network filtering.
Socket Custom is not an SSH mode. If you are expecting the classic “payload over SSH account” model, that is not what this transport is.

Need the route families around it?

Open the CDN guide to understand how host/fronting style presets are grouped, or open V2K if you are comparing payload workflows against a custom binary/session transport.