01

One line instead of six hundred rules

Writing rules one at a time stops working fast. Ad domains, mainland sites, a streaming service together with all of its CDN endpoints: each category runs to hundreds of lines, and pasting them into the rules block leaves you with a config nobody can read or maintain.

A rule set packs one category into a single file, and your config keeps one line pointing at it. When the list changes you swap the file. The rules block never moves.

Rule sets run on their own schedule
Refreshing a subscription does not refresh them. Every provider carries its own interval.

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

Four things every provider needs

  1. 1

    Source, behavior, path, interval

    Each entry under rule-providers takes four things. type is http for a remote list or file for one already on disk. url or the path tells the core where the file comes from and where the cached copy lands. interval sets how often it is pulled again, in seconds. And behavior is one of exactly three values: domain, ipcidr or classical.

  2. 2

    behavior has to match what is inside the file

    A file of bare domain names is domain. A file of CIDR blocks is ipcidr. Only a file whose every line carries a full rule prefix such as DOMAIN-SUFFIX or PROCESS-NAME counts as classical. Get it wrong and the set either refuses to load at all or loads cleanly and matches nothing. This one line is the most common mistake in the whole block.

  3. 3

    The reference obeys the same top-down order

    In the rules block you write RULE-SET, the name of the set, and the policy group. A set gets no special priority just because it lives in a file. It is checked in the exact position you wrote it, alongside ordinary rules, and the first match wins.

03

Where slow loading turns into failed loading

Save, reload the profile, then open the Rules page. Every set should be listed with a rule count beside it. A count of zero means the file never arrived or failed to parse, and searching the Logs page for the provider name usually turns up the reason.

  • A remote set needs working connectivity at startup; before the network is up you get a config load failure whose real cause is one missing file
  • Keep the interval generous. Once a day is plenty for almost any published list
  • A dozen large sets noticeably slows the first load and pushes memory use up. Load what you actually use
04

Common questions

My rule set keeps failing to update. Where do I start?

Read the log line, not the banner on screen. HTTP 403 or 404 means the address is gone or the host rejects the request, so find another source for the same list. A timeout means that address is unreachable on your current network: route the download through a proxy, or switch the entry to a local file. While you are in there, confirm the directory named in path exists and is writable.

What does a wrong behavior value actually look like?

Two shapes. The loud one is a set that shows zero rules on the Rules page with a parse error sitting in the log. The quiet one is worse: the count looks normal but nothing ever matches, so traffic you believed was split off drops through to your final catch-all rule. Pick a domain from inside the set, load it, and read the Chains column on the Connections page.