haotianblog
IP Reputation Scorer
Search
Ask the AI

IP Reputation Scorer

This page shows the reputation score this site computes for your current IP address, and how that score was reached. It doubles as the documentation for the site’s anti-abuse mechanism: requesting an @haotianblog.com mailbox runs the same scoring, and a higher score means a harder proof-of-work puzzle.

A verification run is required before the lookup. Without that gate this page would be a free IP reputation API: anyone could point a proxy pool at it and enumerate which of their addresses this site rates as clean. Making each lookup cost a second of CPU does not deter one curious reader, and does deter that.

What this score is not

It calls no external reputation API, uses no third-party blocklist, and applies no country weighting. Every signal comes from what this site can observe by itself.

Country is deliberately excluded: it correlates far more strongly with where readers live than with abuse, and this site has readers in two languages across many regions. Charging by region would reliably penalise a group of ordinary readers without buying corresponding protection.

Also, the score sets the price, never the verdict. No score is ever refused outright — a high score only means a harder puzzle. That is intentional: local signals inevitably misjudge, and the cost of a misjudgement should be a few extra seconds, not a blocked request.

The five signals

SignalPointsWhy
Reverse DNS points to hosting or cloud+30 A home connection almost never resolves to names like amazonaws or digitalocean; automation almost always runs on one
No reverse DNS record+5 Most residential ISPs publish a PTR record, but absence is far too common to weigh heavily
Recent failed verifications+10 each, capped at 30 Repeated failure usually means probing the rules rather than ordinary use
Repeated solves in a short window+8 each beyond 2, capped at 25 Solving a few is normal; solving a dozen within an hour is farming
Account age+15 under a day, +8 under a week A new account carries none of the history that makes an established one costly to burn
Missing or automation-shaped User-Agent+20 An unmasked curl or python-requests string says the caller was not trying to look otherwise

The score caps at 100 and maps onto a 17-21 bit difficulty band. 17 bits is roughly 131k expected hashes (about 0.4s in a browser); 21 bits is about 2.1M (roughly 6s). Each additional bit doubles the work.

Privacy boundary

Raw addresses are never stored. Counters are keyed by an HMAC of the address, salted with a site key, so even with the database in hand the stored values cannot be walked back into an address list. Reverse DNS results are cached for a day under the same hashed key.

The address shown on the page is your own — you already know it, so displaying it discloses nothing new, but it does let you check which address this site actually sees, which is useful behind a proxy.

Why proof of work rather than a visual captcha

A visual captcha outsources the decision to a third party, adds a blocking script to the page, and is solved in bulk by commercial farms for fractions of a cent. Proof of work does not try to distinguish a human from a machine — it makes each attempt cost real CPU time. One request costs a reader a second they will not notice; ten thousand cost an abuser hours of compute per machine.

Its limits should be equally clear: proof of work does not stop a patient single attacker, it only changes the economics. That is why the mailbox flow does not rely on it alone — it also requires a signed-in account, a verified email address, and permits one mailbox per account. This is one layer of defence in depth, not the only door.

Ways it can fail

  • No Web Worker or TextEncoder support: the verification button stays in the failed state. Nothing here needs recent browser features, but a very old browser may still fall short.
  • Challenge expired: puzzles are valid for ten minutes after issue; past that you need to run it again.
  • One puzzle, one use: after a successful lookup a fresh verification is needed for the next one. That is replay protection, not a bug.
  • Slower on mobile: phone CPUs run at roughly a third to a half of desktop speed, so the high end of the band can take upwards of ten seconds.

Related reading

Scroll down