uTPro.Feature.UrlViewer
1.0.0
See the version list below for details.
dotnet add package uTPro.Feature.UrlViewer --version 1.0.0
NuGet\Install-Package uTPro.Feature.UrlViewer -Version 1.0.0
<PackageReference Include="uTPro.Feature.UrlViewer" Version="1.0.0" />
<PackageVersion Include="uTPro.Feature.UrlViewer" Version="1.0.0" />
<PackageReference Include="uTPro.Feature.UrlViewer" />
paket add uTPro.Feature.UrlViewer --version 1.0.0
#r "nuget: uTPro.Feature.UrlViewer, 1.0.0"
#:package uTPro.Feature.UrlViewer@1.0.0
#addin nuget:?package=uTPro.Feature.UrlViewer&version=1.0.0
#tool nuget:?package=uTPro.Feature.UrlViewer&version=1.0.0
uTPro URL Viewer for Umbraco
Fetch and inspect any URL as Googlebot, Bingbot or a real browser, directly from your Umbraco site. Built for SEO debugging, diagnosing hacked/cloaked pages and inspecting redirects.
Supports Umbraco 16, 17 and 18.

Features
- Fetch as any user agent - Googlebot (smartphone/desktop), Bingbot, Chrome, Firefox, Edge.
- Full redirect chain - every hop with its status code and raw response headers.
- HTML source viewer - line numbers, wrap toggle, copy to clipboard, spam-word highlighting.
- Content analysis:
- Meta tags (including
<title>). - Spam / hack keyword detection.
- Hidden CSS rules (
display:none,visibility:hidden, ...), a common cloaking technique. - JavaScript issues -
eval,document.write,innerHTML, base64 obfuscation, mixed content, mismatched<script>tags and more.
- Meta tags (including
- Cloaking detection - compares what a bot sees versus what Chrome sees (title, status code and content-size differences).
- VirusTotal link for the fetched domain.
- Safe by default - the fetch runs server-side (SSRF guard) and blocks private/local addresses (localhost, RFC-1918 ranges, link-local
169.254.x.x, IPv6 loopback/ULA,.local, ...). The guard resolves DNS and re-checks every redirect hop.
Site URL Scan
- Recurring background job that scans every Content and Media URL on the site.
- Stores a summary report per run in the database (status code, redirect count, spam/cloaking flags, JS error count, timing).
- Maintains a standing Error URLs list; re-scan a single URL or all failing URLs on demand.
- Auto-discovered and controllable via uTPro Job Monitor (optional companion package).
Installation
dotnet add package uTPro.Feature.UrlViewer
Usage
The tool lives entirely in the Umbraco backoffice and requires Settings section access.
Open the backoffice, go to the Settings section, and find URL Viewer under the Advanced menu. It has three views:
- URL Viewer - enter a URL, pick the scheme, user agent and referrer, then run the fetch to see the redirect chain, headers, HTML source and analysis.
- Site URL Scan - trigger/inspect scans of all Content & Media URLs and browse the latest report.
- Error URLs - the standing list of failing URLs, with one-click re-scan (single or all).
All calls go through the authenticated Umbraco Management API under
/umbraco/management/api/v1/utpro/url-viewer/... (never a public endpoint).
Screenshots
URL Viewer — fetch a URL as any bot/browser and inspect the redirect chain, headers, HTML source and analysis

Site URL Scan — scan every Content & Media URL and browse the latest report

Error URLs — the standing list of failing URLs, with one-click re-scan (single or all)

Auto-discovered by uTPro Job Monitor — the recurring Site URL Scan background job

Configuration
The manual URL Viewer needs no configuration. The recurring Site URL Scan is configured under
uTPro:Feature:UrlViewer:SiteScan in appsettings.json (all keys optional — defaults shown):
{
"uTPro": {
"Feature": {
"UrlViewer": {
"SiteScan": {
"Enabled": true,
"Period": "24:00:00",
"Delay": "00:05:00",
"MaxConcurrency": 4,
"ThrottleDelayMs": 150,
"SkipCloakingCheck": true,
"AllowInternalHosts": false,
"RedirectWarningThreshold": 3,
"MaxRunHistory": 20
}
}
}
}
}
| Key | Default | Description |
|---|---|---|
Enabled |
true |
Master switch for the recurring scan job. |
Period |
24:00:00 |
How often the scan runs (d.hh:mm:ss). |
Delay |
00:05:00 |
Delay before the first run after startup. |
MaxConcurrency |
4 |
Max concurrent HTTP fetches (clamped 1–20). |
ThrottleDelayMs |
150 |
Delay after each fetch, in ms. |
SkipCloakingCheck |
true |
Skip the bot-vs-Chrome cloaking check during bulk scans (faster). |
AllowInternalHosts |
false |
Security: relax the SSRF guard to allow scanning private/local addresses. Only enable when the site runs on an internal host. |
RedirectWarningThreshold |
3 |
Redirect-hop count above which a result is flagged as a long chain. |
MaxRunHistory |
20 |
Scan runs retained in the DB before old runs are pruned. |
Repository layout
uTPro.Feature.UrlViewer/
├─ src/
│ ├─ uTPro.Feature.UrlViewer/ # the NuGet package (ships to the Umbraco Marketplace)
│ └─ uTPro.Feature.UrlViewer.TestSite/ # a demo Umbraco site that references the package
├─ pack.ps1 # deterministic clean pack -> Build/
├─ umbraco-marketplace.json
└─ uTPro.Feature.UrlViewer.sln
Building the package
pwsh ./pack.ps1
This wipes bin/obj, does a clean Release pack into Build/, and evicts the version from the local NuGet cache so consumers on the same machine re-extract the fresh bits.
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Umbraco.Cms.Api.Management (>= 17.0.0 && < 19.0.0)
-
net9.0
- Umbraco.Cms.Api.Management (>= 16.0.0 && < 17.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
v1.0.0: URL Viewer + Site URL Scan. Backoffice-secured tool (Settings section, under /umbraco) to fetch a URL as different user agents, follow the redirect chain, view headers/HTML source, and run spam/hidden-CSS/meta/JavaScript analysis with cloaking detection. Adds a recurring Site URL Scan job (auto-discovered by uTPro Job Monitor) that scans all Content/Media URLs, stores summary reports in the database, maintains a standing error-URL list, and supports on-demand re-scan of individual or all failing URLs.