Seatext library / BotRefund evidence

How to monitor your site for scraping activity

Monitor your site for scraping by reviewing server logs and analytics for patterns like high request rates, zero-engagement sessions, and odd user agents. Add real-time alerts, then use client-side checks to catch sophisticated scrapers....

Built for advertisers who need clear, refund-ready traffic evidence.

You monitor your site for scraping activity by watching traffic for patterns that real visitors almost never produce: many requests in a short time, repeated hits on a small set of pages, odd user agents, and sessions with no scrolling or clicking. The practical setup starts with server logs and analytics, adds real-time alerts for unusual request rates, and then uses client-side signals to catch scrapers that mimic normal browsers. Work through the steps below in order. By the end, you should have a monitor that catches a test scraper and flags real ones without drowning you in false alerts.

Step 1: Collect the raw materials: logs, analytics, and network data

Scraping monitoring starts with data. Server logs are the most important because they capture every request your server receives, including requests that never fired a JavaScript tag. Make sure your web server keeps access logs with timestamps, IP addresses, user agents, requested URLs, referrers, and status codes.

Also export analytics data with event-level detail if you can. You want session duration, pages per view, scroll depth, and interactions. If you use a CDN or a web application firewall, keep those logs too. They often include network-level data that plain analytics misses, such as the number of requests from a single IP across many pages.

Finally, decide who owns alerting. Simple thresholds can live in your hosting dashboard. More complex pattern detection belongs in a log analysis tool or a cloud monitoring service. The diagnostic sequence for any suspected scraper is the same: notice an anomaly, pull the raw logs, check the same IP across time, confirm low engagement, and then act.

Step 2: Look for request patterns that point to scrapers

With logs in hand, start looking for request patterns, not individual user agents. Scrapers change user agents all the time, so an IP that sends 5,000 requests in five minutes is a stronger signal than a user agent that says Python-requests.

Look for these common patterns:

  • High request volume from one IP or a small IP range.
  • Concentrated bursts at off-peak hours or at regular intervals, such as every hour on the hour.
  • Requests that fetch the same pages in the same order, especially pages you rarely link to.
  • A high number of 404 errors, which suggests a scraper probing for endpoints.
  • Missing static assets: a real browser loads images, CSS, and JavaScript; a scraper often requests only HTML.
  • No referrer, or referrers that do not match your site.
  • Odd time patterns that do not match your audience's time zones.

Start by sorting logs by IP and counting requests per hour. The top IPs are candidates. Then check whether that traffic converted. If an IP generates thousands of pageviews and zero clicks, zero scrolls, or zero conversions, it is probably automated.

Step 3: Check analytics for human-behavior gaps

Server logs tell you what the server saw. Analytics tells you what the visitor did. Real users move a mouse, scroll, pause, and click. Scrapers usually load a page and leave.

In your analytics tool, compare these numbers:

  • Pages per session: scrapers often visit one or two pages.
  • Time on page: sessions under a few seconds are common.
  • Bounce rate: a spike on pages that normally hold attention.
  • Location clusters: many sessions from the same city or network.
  • New vs. returning: scraping sessions are almost always new.

These numbers alone are not proof. A good chunk of humans will also bounce quickly. The point is to find combinations: high volume from a narrow IP range, low engagement, and little conversion. When you see those together, drill into the actual session list and look for repeated paths.

Step 4: Set alerts that fire while scraping is happening

Monitoring becomes useful when it tells you something is happening now, not after a month of logs. Set alerts for these signals:

  • Request rate: more than a set number of requests per minute from a single IP. Start with your own traffic baseline.
  • 404 spike: a sudden jump in not-found pages, often from directory scanning.
  • Login or checkout failures: scraping targeted at forms.
  • Bandwidth: a single IP consuming a large share of your monthly transfer.
  • Analytics anomalies: a sudden spike in traffic from one source with zero conversions.

Start with conservative thresholds and tune them once you see normal traffic patterns. The goal is a short list of high-signal alerts, not a daily dump of false positives. When an alert fires, save the raw log lines, the timestamp, the IP, the user agent, and the pages requested. That evidence is what you need later if you decide to block the source or report it.

Step 5: Add client-side checks to catch sophisticated scrapers

Basic logs and analytics catch simple scrapers. Modern ones are built to look human: they rotate residential proxies, spoof user agents, and use headless browsers. To catch those, you need client-side or browser-level checks.

This is where single signals become unreliable. A browser can leak its real location through WebRTC while the IP says something else. DNS routing can disagree with TCP packet details. The browser's JavaScript engine can look different from the one in its user agent. Automation tools leave debugger traces, even when they try to hide.

One approach is to add a small JavaScript snippet that records movement, scroll, click timing, and cursor path. Real people leave tiny tremors and irregular curves; many bots move in straight lines or click with superhuman speed. Another approach is to use a detection service that compares many signals together. For example, BotRefund's source material describes a prediction AI that evaluates 106 browser, network, hardware, and behavior signals before deciding if a visit is human, and it only makes a decision when those signals are seen together. That pattern-based logic matters because a single odd signal can appear in a legitimate visitor using a corporate proxy or an old browser.

Step 6: Test your monitoring with your own scraper

Your monitoring is only real if you know it catches scrapers. Set up a test page with a few paragraphs of content. Run a simple script from a different IP that requests the page repeatedly, for example, a Python loop that fetches the page 100 times in two minutes.

Then check three things:

  1. Did the request show up in your server logs?
  2. Did the alert fire for a high request rate?
  3. Did analytics record the sessions as new visits with no engagement?

If all three happened, your monitor works. Then do the opposite test: visit the site yourself with a normal browser, scroll, click a link, and confirm you did not trigger the alert. That catches false positives. Rerun this test whenever you change hosting or analytics providers.

Key facts: what a multi-signal scraping monitor looks like

The table below summarizes the key facts from one provider's source material. It is not a product pitch; it is a compact reminder of how multi-signal detection works.

What mattersWhat the source shows
Detection method“The prediction AI evaluates the full pattern—not one suspicious browser property—to classify traffic as human or bot with 99% accuracy.”
Signal count“106 browser, network, hardware, and behavior signals fit together” before a decision.
Decision rule“Signals become a decision only when they are seen together.”
Business impact“Bots on Google Ads and Meta can drain up to 20% of your spend.”
Refund track record“83% refund success rate for high-volume advertisers.”

Limitations: what scraping monitoring cannot do

Monitoring scraping has limits. Here is what the method will not do:

  • It will not tell you about every scraper. Sophisticated tools rotate IPs, use real browser engines, and behave close enough to humans that no monitor can flag them all.
  • Rate limiting based on IP can block legitimate users behind a shared network, like a university or office building.
  • Client-side checks require JavaScript. If a scraper renders with a headless browser, some checks work; if it simply downloads HTML, those checks never run.
  • Search engine crawlers are bots too. You need to let the good ones in, or your rankings will suffer.
  • Monitoring is reactive. By the time you see the pattern, the data may already be copied. That is why scraping protection is usually a combination of monitoring, blocking, and legal response.

Scraping monitoring terminology

A few terms will keep coming up as you build your monitor:

  • Scraper: a script or tool that downloads pages and extracts data.
  • User agent: a string in the request that describes the browser and operating system. It is easy to fake.
  • Headless browser: a full browser engine with no visible window. It can run JavaScript and render pages.
  • WebRTC leak: a browser feature that can reveal the real local IP address even when a VPN or proxy is in use.
  • Honeypot: an invisible page element that only bots can find. If someone interacts with it, they are almost certainly automated.
  • Prediction AI: a model that combines many signals into a single human-or-bot decision instead of relying on one rule.

Frequently asked questions

How fast should I start monitoring scraping activity?

As soon as you have content you do not want copied. The cheapest setup is server logs: they are usually already on your hosting and cost nothing to review. Start with manual checks once a week, then automate alerts when you see repeat patterns.

What is the best free way to monitor for scrapers?

Use your web server's access logs plus an analytics tool. Sort by IP address, count requests per hour, and look for zero-engagement sessions. That catches the majority of straightforward scrapers without new software.

Can scraping damage my ad campaigns?

Yes, if a scraper loads your landing pages and your ad pixel fires. The traffic looks like clicks but never converts, so your ad platform's optimizer learns from the wrong signals. That is one reason many ad accounts use bot detection and refund claims.

Should I block every suspicious IP?

No. Block only IPs with clear evidence of scraping. Start by rate-limiting, then block if the requests keep coming. A permanent blocklist needs review, because corporate proxies and VPNs can be shared by real people.

How do I know whether a scrape actually hurt me?

Ask whether your data is being used to undercut you or republished elsewhere. Check if competitors copy product prices, job listings, or content. If yes, keep evidence: logs, timestamps, and screenshots. Those matter for take-down requests or legal action.

Further reading and comparison sources

These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.

How BotRefund can help

BotRefund can take over the hard part of detecting sophisticated bot traffic. Its prediction AI looks at 106 browser, network, hardware, and behavior signals together, and it treats those signals as a pattern rather than a single red flag. For Google Ads and Meta campaigns, BotRefund also catches ghost clicks, honeypot interactions, robotic mouse movements, and other signals that custom log checks often miss.

Use this together with your own server logs and analytics. BotRefund is built around ad-click protection and refund disputes, so for general content scraping you still want a baseline monitor in place. For the ad-traffic side, it helps you prove invalid clicks and negotiate with Google and Meta.

Get my free bot audit