|
||||
|
|
|||
f i r m a e t p e r s o n e n s a g e r k o n t a k t |
Indexering af RetsinformationCa. 581 ord. Retsinformation er en guldgrube af information. Desværre har de et utroligt tungt søgeinterface. Det ville ikke være så slemt, hvis blot deres sider blev indexeret af andre søgerobotter. Det sker imidlertid ikke og det er der flere grunde til:
Javascript-URL'erJeg har i hånden lavet en søgning på Status = gældende. Det gav d. 28-02-2002 22117 dokumenter. Resultatlisten tog jeg direkte fra Mozillas cache. Derefter lavede jeg en simpel oversættelse af javascript-URL'er med nedenstående perl-script. Resultatet lagde jeg på http://home.tange.dk/~tange/retsinfo.html.#!/usr/bin/perl $/="<LI>"; <>; while(<>) { if(/Dokumentet er (.*) og indeholder (.*) lin.er/) { $gaeldende = $1; $linjer = $2; } else { die ("Gældende eller linjer findes ikke $_"); } # <a href=JavaScript:openDoc("1238&A16652000130REGL&0001&000001","A16652000130REGL") # onMouseOver="self.status='Hent dokument. ACCN: A16652000130';return true">LOV # nr 20001 af 14/11/1665</a><br> <P>Lex Regia (Konge-Lov)</P> <hr> if (m{<a href=JavaScript:openDoc."(.*)","(.*)". onMouseOver="self.status='Hent dokument. ACCN: (.*)';return true">(.*)</a><br> <P>(.*)</P> <hr>}) { $purl1=$1; $purl2=$2; $accn=$3; $lovtitel=$4; $lovbesk=$5; } else { die ("Titel eller beskrivelse findes ikke $_"); } $purl2=~m{([A-Z]\d\d\d\d)(\d*)}; # C19861168760REGL #$docurl="http://147.29.40.91/DELFIN/HTML/$1/$2.htm"; $docurl="/DELFIN/HTML/$1/$2.htm"; print "<P>$gaeldende $linjer ", "<A HREF=\"$docurl\">$lovtitel</A> $lovbesk</P>\n"; } robots.txtFor at snyde indexeringsrobotterne til at indexere sitet, så lavede jeg en proxy for http://147.29.40.91 (som er der, hvor dokumenterne i Retsinfo ligger). Denne proxy en almindelig proxy med 2 små ændringer: /robots.txt og /index.html er anderledes. 127.0.0.1 er nødvendigt pga. den NAT jeg sidder bag ved - det burde have været home.tange.dk istedet. I apache.conf-sprog ser det sådan ud:Listen 5556 <VirtualHost 127.0.0.1:5556> # Retsinfo - proxy ProxyPass /index.html http://127.0.0.1/~tange/retsinfo.html ProxyPass /robots.txt http://127.0.0.1/robots.txt ProxyPass / http://147.29.40.91/ </VirtualHost> Adskildelse mellem robot og menneskeEgentlig var proxyløsningen nok i sig selv. Men da jeg ikke ønsker at blive beskyldt for at hugge besøgende fra Retsinfo, så vil jeg gerne sende folk over på den rigtige Retsinfo-side. Dette kan gøres med en redirect. Men alle må ikke blive redirected: Robotterne skal blive på den proxy'ede version - ellers læser de robots.txt og nægter at indexere sitet.Der skal altså opstilles en regel, så man kan kende forskel på en person (som skal redirectes) og en robot (som skal proxyes). Jeg har valgt reglen, at hvis user-agent hedder noget med 'bot', så er det en robot og ellers er det en person. I apache.conf-sprog ser det sådan ud: Listen 5555 <VirtualHost 192.168.1.2:5555> # Retsinfo # Starturl: http://retsinfo.tange.dk:5555/index.html ServerName retsinfo.tange.dk RewriteEngine On RewriteCond %{HTTP_USER_AGENT} bot RewriteRule ^/(.*)$ http://127.0.0.1:5556/$1 [proxy] RewriteCond %{HTTP_USER_AGENT} !bot RewriteRule ^/(.*)$ http://147.29.40.91/$1 [redirect] </VirtualHost> Hvis din user-agent hedder noget med bot, så får du en proxyet version uden robots.txt. Hvis ikke, så bliver du redirected. EksempelHvis man vil lave et mirror, så skal man blot kalde sin user-agent for noget med 'bot' i: wget -m -U robotus http://retsinfo.tange.dk:5555/index.htmlHvis man vil redirectes til en Retsinfo-side, så skal man blot kalde sin user-agent noget andet: wget -m -U rootus http://retsinfo.tange.dk:5555/DELFIN/HTML/A1953/0016930.htm |
|||
|
Sidst ændret Sun Apr 27 01:34:56 2003 |
|||