Find blinde links med powershell

SEO er bl.a. afhængig af korrekt html og styring af links. Blinde links på et site er ikke Google’s kop te. Der findes en række værktøjer, som kan teste for blinde links – f.eks. Xenu.

Blinde links findes nemt med PowerShell

Man kan nemt selv lave en test af blinde links i Windows PowerShell. Under grafikken er et eksempel på kode, som selv crawler et domæne.

 

invoke-webrequest kan bruges til at finde links der ikke virker

Invoke-Webrequest gør arbejdet

CMDlet’en Invoke-Webrequest kan loade websider ind og analysere nærmest alt – herunder links, images, html-kode m.m.

Koden starter i roden af domænet – her ZoomTek.dk. Først loades hovedsiden. Herfra findes alle links på forsiden. Links findes med .links.href. Alle links sættes i et array ($array). Der tjekkes på om et givent link allerede findes i $array.

$array indeholder derfor en unik liste over sider/links. $counter peger mod det element i arrayet, som testes lige nu. Hermed loades sider ind en ad gangen, skannes for links, som sættes i arrayet, hvis de ikke findes i forvejen. Siderne behandles en ad gangen ved hjælp af $counter.

 

$fejlkode=$_.Exception.Response.StatusCode.Value__}

 

Denne kode returnerer værdien 404 (integer), hvis en given side/link ikke findes. Det blinde link skrives ud og sættes IKKE i arrayet.

Koden ser således ud:

 

cls;$domain=”https://zoomtek.dk“;$array = @($domain+”/”);$counter=0;$blind=@()

$abl=0; $specfejl=@(“component”,”id=”,”22-page”)

do {

$a=invoke-webrequest -URI $array[$counter]

write-host “… ($($counter+1)/$($array.length))”

$urlside=@()

foreach ($li in $a.links) {

$url=$li.href.tostring()

if ($url.substring(0,1) -eq “/”) {$url=$domain+$url}

if ($url -notmatch $domain ) {$url=””}

if ($url -match “index.php”) {$url=””}

if ($url -ne “”) {$urlside=$urlside+$url}

}

 

$urlside=$urlside | select -unique

foreach ($us in $urlside) {

$fejlkode=0

if ($array -notcontains $us) {

try { $response = Invoke-WebRequest $us } catch {

$fejlkode=$_.Exception.Response.StatusCode.Value__}

if ($fejlkode -eq 404) {

$abl=$abl+1

write-host “$($array[$counter]) —$abl) BLINDT LINK–> $us”

$blind=$blind+”$($array[$counter]) —$abl) —— BLINDT LINK–> $us”

$blind | clip             }

else {

foreach ($sf in $specfejl) {

if ($us -match $sf) {

write-host “$($array[$counter]) —$abl) BLINDT LINK $sf –> $us”

}

}

$array+=$us

}

}

}

$counter=$counter+1

}

while ($counter -lt $array.length)

 

$counter er en simpel pointer, der peger mod et nth element i arrayet. Efterhånden som arrayet bygges op vil pointeren pege på næste link i arrayet.

$specfejl søger på specifikke karakterer i url’er, som OGSÅ angives som fejl. Det skyldes, at ZoomTek benytter Joomla, og ligesom andre CMS-systemer produceres der af og til dublet content med mærkelige url’er, hvis man ikke passer på.

Dem fanger jeg også i koden. Der testes også for index.php, hvilket igen er en af børnesygdommene ved Joomla, som jeg forsøger at undgå.

Koden kan køres direkte (copy/paste). Du skal blot ændre $domain – alternativt lave en read-host, hvor du kan taste domænet for hver kørsel.

Få udvidet kode gratis

Kontakt ZoomTek. Så får du en kode, der gør følgende:

  • Scanner for blinde links
  • Tester for title-tags
  • Tester for Description meta-data
  • Genererer et sitemap.txt

Mere fra ZoomTek...

K5505 PowerShell Pester Testing Framework Pester er et modul til PowerShell, som muliggør avanceret unit testing og mocking. Kurset er et 1 dags grundkursus. Ønsker du et avanceret kursus ka...
K5503 PowerShell Grundkursus PowerShell kan benyttes til at tilgå og manipulere alle Microsoft produkter - herunder operativsystem, servere og netværk. Målgruppe PowerShell ...
Premium Aftale Alle kunder, der har en Premium-aftale får følgende fordele: 5% rabat på alle kurser 10 gratis hotline timer ekstra pr. år. Gratis face-to-...
Opret forside til bøger på Saxo Forsideformat på Saxo - optimal forside med PowerPoint Saxo forside til e-bøger Når du udgiver bøger på Saxo skal forsiden (optimalt) være af JPEG-f...
Fjern password fra Excel Rediger password-beskyttet Excel regneark - fjern password Fjern passwordbeskyttelsen fra Excel regneark. Har du glemt password eller har en tidliger...
K5504 Desired State Configuration PowerShell ... Kurset henvender sig til avancerede brugere af Powershell. DSC er en nyskabelse i PowerShell 5 (delvist i PowerShell 4). Forudsætninger for kurset ...
K7530 PowerShell til SharePoint Kursus i Powershell med fokus på SharePoint administration. Lær at standardisere administrative opgaver med scripts.. SharePoint 2019 Kurset afhol...
WIndows PowerShell – Effektiv Administr... Med PowerShell kan du administrere servere og klienter nemmere end nogensinde.PowerShell er et scriptbaseret sprog med tilhørende editor. PowerShell e...
Find blinde links med powershell SEO er bl.a. afhængig af korrekt html og styring af links. Blinde links på et site er ikke Google's kop te. Der findes en række værktøjer, som kan tes...