• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

microlinkhq / is-antibot / 40594891716
96%

Build:
DEFAULT BRANCH: master
Ran 27 Oct 2026 10:27PM UTC
Jobs 1
Files 1
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

27 Oct 2026 10:26PM UTC coverage: 95.781% (+0.2%) from 95.552%
40594891716

push

github

web-flow
perf(html): scan lookahead rules lazily, prefilter contains literals, drop helpers (#87)

* perf(html): scan lookahead rules lazily

Eight html rules have the shape `^(?=[\s\S]*A)(?=[\s\S]*B)`. The greedy
`[\s\S]*` runs to the end of the document and then backtracks one char at a
time, so a clean 200KB page pays ~155us per rule. `[\s\S]*?` walks forward
and costs the same as a plain `/A/` search (~20us). A lookahead only asks
whether some position matches, so greedy and lazy give the same boolean.

Checked rule by rule against the base on every provider fixture, the bench
pages, status/uppercase/no-url variants and synthetic A-then-B, B-then-A,
A-only and B-only inputs: 25,520 rule checks, 0 differences.

A/B, base vs this commit, 7 alternating runs per side, median (ms):

| case                     | base  | change | delta  |
|--------------------------|-------|--------|--------|
| imperva fixture html     | 113.4 | 63.9   | -43.7% |
| clean synthetic html     | 203.4 | 143.1  | -29.6% |
| linkedin fixture headers | 49.6  | 48.1   | noise  |
| headers only set-cookie  | 183.9 | 186.2  | noise  |
| url gated walmart        | 34.6  | 37.1   | noise  |

node v24.16.0, arm64, load avg 13-15 (shared machine).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* perf(html): skip contains rules when no literal occurs

Every html call ran `indexOf` over the lowercased page once per `contains`
rule, about 60us each on a 200KB page. Most pages contain none of them. All
html literals now compile into one alternation that runs once per call
against the same lowercased string; when it fails every `contains` rule is
false, and when it matches the per-rule `indexOf` decides as before. It
tests the same string with the same literals, so results stay identical.
Urls are short and skip the prefilter.

A per-literal `/lit/i` was measured too: 2290us vs 1963us for the literals on
the clean page, so it is slower there and was dropped.

A/B, previous commit vs this... (continued)

189 of 202 branches covered (93.56%)

Branch coverage included in aggregate %.

29 of 29 new or added lines in 1 file covered. (100.0%)

424 of 438 relevant lines covered (96.8%)

694.61 hits per line

Jobs
ID Job ID Ran Files Coverage
1 40594891716.1 27 Oct 2026 10:27PM UTC 1
95.78
GitHub Action Run
Source Files on build 40594891716
  • Tree
  • List 1
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #40594891716
  • d9b11791 on github
  • Prev Build on master (#40560042349)
  • Next Build on master (#40670580511)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc