Bot signals — Internet scanner

Apcosys scanner IP addresses

Apcosys is an internet scanning project in the IPAPI.GR scanner catalogue. Addresses it publishes or verifiably identifies as its own set risk.is_scanner.

risk.is_scanner rDNSHosts Reviewed

Check an IP

Is this IP really Apcosys?

Checks the address against what Apcosys publishes, the same evidence behind risk.is_scanner.

01 — Verification

How IPAPI.GR verifies Apcosys.

Only from what Apcosys publishes about itself. No third-party blocklists, no behavioural guesses.

Apcosys

risk.is_scanner
Method
rDNS Forward-confirmed reverse DNS
Method
Hosts Published scanner hostnames
Reverse DNS
Exact hostnames: scan.apcosys.cc. The hostname must then resolve forward to the same address.
Hostnames
Scanner addresses are resolved from scan.apcosys.cc, honouring DNS expiry.
Refresh
Checked in the background; a new address can become flagged shortly after its first lookup.

02 — In the response

What a match looks like.

A lookup of a Apcosys address sets risk.is_scanner. The flags come with geolocation and network data in the same response, for Pro API keys.

The response says which kind of bot an address belongs to, not which operator. Pair it with the user agent: a request that claims to be Apcosys but doesn't match is unverified.

GET /api/lookup/{ip}?key=PRO_KEY
{
  // … location and network fields …
  "risk": {
    "is_ai": false,
    "is_crawler": false,
    "is_scanner": true
  }
}

03 — Questions

About Apcosys.

How do I verify Apcosys with reverse DNS?

Look up the PTR record for the IP address. The hostname must be one of scan.apcosys.cc, and a forward lookup of that hostname must return the same IP address. A PTR record alone can be set by anyone who controls the address, so the forward confirmation is the part that matters.

Which risk flag does Apcosys set?

A matching address sets risk.is_scanner in the lookup response. The risk flags are returned for Pro API keys.

Verify Apcosys on every request.

Pro: 40,000,000 requests a day with is_ai, is_crawler and is_scanner in every lookup.