Skip to content

Some lines contain multiple domains concatenated with no separator (missing newlines) #7

Description

@malpanez

Hi, and thanks for maintaining this list! I consume blocklist.txt in a downstream
generator and hit a data-quality issue I think is worth flagging.

Summary

A subset of lines in blocklist.txt contain two or more domains concatenated with no
separator
(no newline, no space). Because the concatenation is still a syntactically
valid
FQDN, it passes validity checks — including, I believe, the "Valid 99.975%" badge —
and ends up in the list as a single bogus entry that resolves to nothing.

Evidence

The raw file uses pure \n line endings (no \r), yet some single physical lines hold
several domains run together, e.g.:

images-na.ssl-images-amazon.cominit.itunes.apple.comjs.moatads.com

which is three separate domains glued with zero delimiter:

  • images-na.ssl-images-amazon.com
  • init.itunes.apple.com
  • js.moatads.com

More examples (each is one physical line in the current file):

api-glb-ash.smoot.apple.comat1.listrakbi.com
xp.apple.com131788053.log.optimizely.comaccounts.google.comad.sxp.smartclip.net
0.0.0.0kryptonchain.org            # a sink IP glued to the host, also no space

Longest single line I observed — 128 chars, several phishing domains concatenated:

paypal.de-signin-sicherheit-7295.paypal.de-signin-sicherheit-3339.amazon.de-signin-meinkundenservice-4630.amazon.de-signin-siche...

Rough line-length distribution over ~2.66M lines: ~25,800 lines are 51–80 chars and ~767
exceed 80 chars — well beyond a single domain, consistent with concatenation.

Why it can't be fixed downstream

Because apple.comjs is a valid DNS label and the whole string ends in a real TLD, a
consumer can't tell apple.com + js… from one legitimate domain without risking deletion
of real domains. I measured a Public-Suffix-List-based splitter at up to ~37% false
positives on legitimate domains, so the only robust fix is at the source.

Likely cause

A generation/merge step appears to drop line separators when joining records or chunks
(writing without a trailing \n, or concatenating lists without a separator). The
0.0.0.0host cases suggest the same when emitting hosts-format lines.

Suggested fix

  • Ensure exactly one domain per line, with a trailing newline on every record.
  • A cheap CI guard: after stripping any leading sink IP, reject a line that contains more
    than one registrable domain (validate against the Public Suffix List), or flag lines whose
    length / label-count is implausible for a single FQDN. (Pure FQDN-syntax validity won't
    catch these, since the concatenations are syntactically valid.)

Happy to share the full list of affected lines if that helps. Thanks again!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions