01

Updating a subscription needs a working connection

A subscription update is an ordinary HTTP request. The client has to download the config file before it can parse or apply anything. That sounds obvious until you hit the loop it creates: every node is dead, the subscription is set to update through the proxy, so no new config arrives, so no working node appears, so the update never finishes.

Break it directly. Open the edit dialog for that subscription and switch the update path to direct for one attempt, or turn off the system proxy and press update again. A phone hotspot does the same job: connect the computer to it, update once, then put everything back.

Check whether the request left the machine
When the update spins forever, look on the Logs page for a matching request. No entry at all means nothing was sent and the problem is local.

SponsoredWhere does the subscription link come from?Our partner provider gives you 1 GB of high-speed Hong Kong data at signup — import it in one click.Get high-speed nodes
02

Sort it by what came back

  1. 1

    401 and 403: dead link or suspended account

    The provider refused the request. Usually the plan expired, the traffic quota ran out, the subscription token was reset, or the same link is in use on more devices than the provider allows. Log into the provider dashboard and check whether the link changed. If it did, copy the new one.

  2. 2

    404 and timeouts: wrong address versus blocked path

    A 404 means that address does not exist on the server, which normally comes from a truncated copy or a domain change on the provider side. Timeouts and reset connections are a network path problem instead: the subscription domain itself may be interfered with, so try another network or let the update run through the proxy.

  3. 3

    200 that fails to parse: what you got is not a config

    This one gets misread constantly. The request succeeded, but the log shows a yaml parse error. The provider returned a web page, usually a login prompt, a regional block, or a bot check, and the client tried to read HTML as YAML. Paste the link into a browser address bar once. If a page renders, that is your answer.

03

Check the link text and the User-Agent

Start with the link itself. A missing tail from a partial copy, a stray space at either end, curly quotes pulled in by an input method, or the provider dashboard URL pasted in place of the actual subscription URL all produce the same symptom. A real subscription URL usually carries a token or a long query string. A dashboard URL does not.

Then the User-Agent. Some providers decide which format to return based on it, so the wrong value hands you a config built for a different client. The subscription edit dialog has a separate field for this.

  • The browser downloads plain yaml text from that link instead of rendering a page
  • The Logs page shows this update as a request that returned 200
  • The expiry date and traffic numbers on the subscription card refreshed
04

Common questions

The update returns 403. Does that mean the subscription is banned?

Not necessarily. A 403 only says the provider refused this request. An expired plan, an exhausted traffic quota, a reset token, or too many devices sharing one link all return it. Check the subscription status and the current link in the provider dashboard first, and replace the link if it changed.

The subscription opens fine in a browser but the client cannot update it. Why?

The two requests do not take the same path and do not carry the same headers. The browser may be going through the system proxy while the subscription is set to direct, or the reverse. The User-Agent also differs, and some providers serve different content because of it. Line up the network path first, then set the subscription User-Agent to what the client should be sending.