Skip to content
Free during open beta · no credit card required

Crawler ScriptPatrol Indexu

Tento crawler provozuje ScriptPatrol. Pro ScriptPatrol Index jednou za čtvrtletí měří veřejné stránky českých a slovenských internetových obchodů: jaký cizí kód načítají a jak zacházejí se souhlasem s cookies. Dívá se také na základní zabezpečení webu a domény. Výsledky vycházejí jen jako souhrnná čísla a žádný obchod v nich nejmenujeme.

Pokud jste ho viděli v logu svého serveru, níže najdete, na co se ptá a jak ho pro svou doménu vypnout.

English version

Na co se ptá

Nejdřív hledá obchody. Na úvodní stránku každého webu ze svého seznamu pošle jeden požadavek a projde přesměrování, na která odpověď odkáže. Z odpovědi si ponechá nejvýš 2 MB. Seznam českých a slovenských webů skládáme z veřejně dostupných zdrojů. Většina webů od nás za čtvrtletí nic dalšího nedostane.

Weby, které podle první odpovědi vypadají jako obchod, a obchody, které už známe, pak navštíví prohlížeč, jako by přišel nový zákazník. Otevře úvodní stránku, přihlášení a košík, případně kontakt a obchodní podmínky. Nic nevloží do košíku, nic nekoupí, nepřihlásí se a neodešle žádný formulář. Stejně navštívíme i malý náhodný vzorek ostatních webů.

Obchody pak navštívíme ještě jednou. Vyzkoušíme lištu souhlasu s cookies a formuláře tak, jak by to udělal zákazník. Nic neodešleme a nikam se nepřihlásíme.

U obchodů a webů, které tak vypadají, se také podíváme na základní zabezpečení domény a serveru tak, jak ho vidí kdokoli z internetu: záznamy DNS, hlavičky úvodní stránky, soubor security.txt a spojení TLS.

Když se návštěva nepovede, třeba proto, že server nestíhá, zkusíme ji později nejvýš jednou znovu. Když úvodní stránku nepřečteme, třeba proto, že server návštěvu odmítl, zkusíme ji otevřít ještě jinými prohlížeči, jeden po druhém, takže se může načíst ještě několikrát.

Část obchodů navštívíme ještě jednou, abychom ověřili, že měříme přesně.

Požadavky prvního kroku posíláme na jednu adresu serveru vždy jen po jednom a mezi dvěma necháme aspoň 1,5 sekundy. Když server odpoví víc webům, že se ptáme příliš často (kód 429), necháme ho nejméně hodinu na pokoji a na zbylé weby na něm se zeptáme později. Obchody navštěvujeme v náhodném pořadí, aby návštěvy obchodů na jednom hostingu nepřišly všechny najednou.

V uložených skriptech hledáme i známky útoku, třeba kód, který odesílá údaje z platebních nebo přihlašovacích formulářů. Když útok potvrdíme, dáme vědět provozovateli obchodu a národnímu CERTu jeho země.

Kdy

Jednou za čtvrtletí. Návštěvy obchodů začínají 16. února, května, srpna a listopadu a trvají několik dní. Hledání nových obchodů, tedy první krok a návštěvy webů, které podle něj vypadají jako obchod, může proběhnout už v týdnech předtím.

Kromě toho navštěvujeme malé vzorky webů, když Index zkoušíme nebo měníme jeho kód. Některé weby tak od nás dostanou požadavek nebo návštěvu i vícekrát za čtvrtletí.

Jak ho poznáte

Přes IPv6 se první krok ohlašuje tímto user-agentem:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (compatible; ScriptPatrolIndex/1.0; +https://scriptpatrol.com/index-crawler)

Požadavky prvního kroku přes IPv6 najdete podle značky ScriptPatrolIndex, celý řetězec porovnávat nemusíte. Přes IPv4 se první krok ohlašuje jako běžný prohlížeč, bez značky. Ostatní kroky značku nenesou vůbec a ohlašují se jako běžný prohlížeč, aby jim obchod ukázal stejnou stránku jako zákazníkovi. Níže je přehled, co od kterého kroku uvidíte.

Krok
Hledání obchodů
Které weby
každý web ze seznamu
Co přijde na server
jeden požadavek na úvodní stránku a přesměrování, na která odkáže
User-agent
ScriptPatrolIndex přes IPv6, Chrome přes IPv4
Krok
Návštěva prohlížečem
Které weby
obchody, weby, které tak vypadají, a malý vzorek ostatních
Co přijde na server
úvodní stránka, přihlášení, košík, případně kontakt a obchodní podmínky, se vším, co stránky načtou
User-agent
Chrome
Krok
Druhá návštěva
Které weby
obchody
Co přijde na server
úvodní stránka a přihlášení
User-agent
Chrome
Krok
Kontrola zabezpečení
Které weby
obchody a weby, které tak vypadají
Co přijde na server
úvodní stránka přes http i https, /.well-known/security.txt, zásady MTA-STS, spojení TLS
User-agent
Chrome
Krok
Opakovaná návštěva
Které weby
weby, které první návštěva nepřečetla, a část obchodů pro kontrolu přesnosti
Co přijde na server
stejné stránky znovu, nebo jen úvodní stránka
User-agent
Chrome nebo jiný prohlížeč

Když k vám přijdeme přes IPv6, je to vždy z adresy 2a01:4f8:1c1a:6d2c::100. Její reverzní záznam vede na index-crawler.scriptpatrol.com a to jméno vede zpět na stejnou adresu. Ověříte to takto:

$ dig -x 2a01:4f8:1c1a:6d2c::100 +short
index-crawler.scriptpatrol.com.
$ dig AAAA index-crawler.scriptpatrol.com +short
2a01:4f8:1c1a:6d2c::100

První krok se ptá přes IPv6 všude, kde to web umí, a to je u českých a slovenských domén zhruba čtyři z deseti. Jinak, a v ostatních krocích často, chodíme přes IPv4, z adresy, kterou nezveřejňujeme.

Jak svou doménu vyřadit

Doménu vyřadíte e-mailem. Napište na [email protected], o kterou doménu jde. Můžete poslat i celý seznam. Doménu zapíšeme na seznam vyřazených a potvrdíme vám to e-mailem. Seznam přečte každý krok Indexu, než začne, a první krok ho kontroluje i u každého přesměrování. Od dalšího kroku se proto na vaši doménu sami neobrátíme, ani prvním krokem, a doména už nebude v dalších vydáních Indexu. Krok, který už běží, může do svého konce na vaši doménu ještě poslat požadavek. Vyřazení platí i pro subdomény, třeba www.

Požadavky, které na vaši doménu vyvolá jiný web, vyřazení nezastaví. Když web, který navštívíme, na vaši doménu přesměruje nebo z ní načítá soubory, třeba skript, obrázek nebo písmo, náš prohlížeč si o ně řekne stejně jako prohlížeč kteréhokoli jiného návštěvníka toho webu.

Když píšete z adresy na jiné doméně, můžeme vás požádat o potvrzení, že doménu spravujete, třeba e-mailem z adresy na ní.

Blokovat crawler podle adresy IPv6 nebo podle značky ScriptPatrolIndex můžete. Zastaví to jen část požadavků, protože značku nese jen první krok, a to jen přes IPv6, a přes IPv4 chodíme z adresy, kterou nezveřejňujeme. Spolehlivější je napsat nám.

Co si ukládáme

Z každého kroku si ukládáme nanejvýš tohle:

Krok
Hledání obchodů
Co si ukládáme
čas požadavku, stavový kód, adresu, kam vedla přesměrování, IP adresy serverů, na které požadavky šly, a nejvýš 2 MB úvodní stránky
Krok
Návštěva prohlížečem, i opakovaná
Co si ukládáme
z každé stránky, kterou prohlížeč otevře: její obsah a text, u úvodní stránky i snímek; hlavičky odpovědi a IP adresu serveru; skripty, které stránka načte nebo spustí; požadavky a zprávy, které stránka odešle nebo přijme, i s jejich obsahem; údaje, které o sobě stránka uvádí; názvy a vlastnosti cookies; údaje o spojení TLS
Krok
Druhá návštěva
Co si ukládáme
adresy požadavků, které stránka odeslala, co je na liště souhlasu, jak se stránka chovala, když jsme vyzkoušeli formuláře, a názvy cookies
Krok
Kontrola zabezpečení
Co si ukládáme
veřejné záznamy DNS domény; odpovědi úvodní stránky přes http i https s jejich hlavičkami; údaje o spojení TLS a o certifikátu; soubor security.txt a zásady MTA-STS

Hodnoty cookies z prohlížeče neukládáme. Stránka je ale někdy sama posílá dál, v adrese nebo v obsahu požadavku, a pak jsou i v uloženém požadavku. Jsou to hodnoty, které stránka přidělila našemu prohlížeči, a žádného návštěvníka se netýkají. Z uloženého pak odvozujeme údaje o každém webu, třeba které cizí služby načítá, a z nich souhrnná čísla.

Jak dlouho data držíme

Co
Úvodní stránka z prvního kroku (nejvýš 2 MB)
Jak dlouho
3 měsíce od požadavku. Pak ji smažeme a necháme si jen to, co jsme z ní zjistili: stavový kód, kam vedla přesměrování a jestli web vypadá jako obchod.
Co
Všechno ostatní, co si podle tabulky výše ukládáme, a údaje o webu, které z toho odvodíme
Jak dlouho
36 měsíců od návštěvy
Co
Důkazy o útoku, na který jsme upozornili
Jak dlouho
Po dobu řešení případu a 3 roky po jeho uzavření
Co
Seznam vyřazených domén a e-maily, které nám k tomu pošlete
Jak dlouho
Dokud vyřazení platí
Co
Zálohy databáze
Jak dlouho
Nejvýš 30 dní

36 měsíců stačí na to, abychom mohli srovnat tři roky vydání a opravené pravidlo znovu spustit i nad staršími daty, aby se časová řada opravou nezlomila. Souhrnná čísla, která už vyšla, žádný obchod nejmenují a zůstávají zveřejněná.

Kde data jsou a komu je dáváme

Data máme na vlastním serveru, který nám v Německu pronajímá společnost Hetzner Online GmbH. K provozu a k práci s daty používáme i služby dalších dodavatelů IT v EU i mimo ni, třeba pro e-mail a pro vývoj a rozbor dat. Data nezveřejňujeme a neprodáváme. Jinak je předáváme jen tehdy, když potvrdíme útok: důkazy pak pošleme provozovateli obchodu, národnímu CERTu jeho země a podle potřeby platformě, přes kterou útok přišel.

Osobní údaje

Index měří obchody. Na stránkách obchodů, v záznamech DNS a v souborech security.txt ale bývají i osobní údaje. Jsou to hlavně jméno, IČO, adresa, e-mail a telefon provozovatele, který je fyzickou osobou. Dále jde o jména, fotografie a texty lidí, kteří se na stránkách objevují, třeba v recenzích nebo mezi kontakty, a o to, co je na úvodní stránce webů, které obchodem nejsou. Ukládáme je tak, jak je web sám zveřejnil, jako součást stránky, záznamu nebo souboru. Pocházejí tedy vždy z veřejně dostupných zdrojů.

Správcem je Martin Stach, Praha, Česká republika, který provozuje ScriptPatrol ([email protected]). Pověřence pro ochranu osobních údajů jsme nejmenovali.

Osobní údaje zpracováváme na základě oprávněného zájmu (čl. 6 odst. 1 písm. f GDPR) pro dva účely.

Prvním je měření pro ScriptPatrol Index. ScriptPatrol se živí hlídáním bezpečnosti webů a Indexem ukazuje, jak na tom české a slovenské obchody jsou: jaký cizí kód načítají, jak zacházejí se souhlasem s cookies a jak mají zabezpečený web a doménu. Výsledkem jsou souhrnná čísla, která žádný obchod nejmenují, a o nikom podle nich nerozhodujeme. Údaje proto chráníme tak, jak to pro statistické účely žádá čl. 89 odst. 1 GDPR: nezveřejňujeme je a držíme je jen po dobu uvedenou výše.

Druhým je upozornění na útok. Když najdeme kód, který krade údaje návštěvníků obchodu, je v zájmu jeho zákazníků i provozovatele útok co nejdřív zastavit (bod 49 odůvodnění GDPR). Provozovateli, kterého upozorníme, v tom upozornění napíšeme, jak s jeho údaji zacházíme a jaká má práva.

Na požádání vám pošleme, jak jsme tyto zájmy vážili proti vašim.

Informovat jednotlivě každého, jehož údaje mohou být na desítkách tisíc obchodů a statisících dalších webů, by vyžadovalo nepřiměřené úsilí. Proto informujeme touto stránkou (čl. 14 odst. 5 písm. b GDPR).

Rozhodnutí založená jen na automatickém zpracování neděláme. Každé upozornění na útok před odesláním schvaluje člověk.

Máte právo na přístup ke svým údajům, na jejich opravu a výmaz a na omezení jejich zpracování. Napište na [email protected] a uveďte doménu, případně jméno nebo IČO tak, jak jsou na webu uvedené, abychom záznamy našli. Odpovíme do jednoho měsíce a nic za to neplatíte. Záznamy o vaší doméně smažeme i bez udání důvodu. Souhrnná čísla, která už vyšla, se tím nezmění, protože žádný obchod nejmenují. Důkazy o útoku, na který jsme upozornili, si můžeme ponechat, pokud je potřebujeme k uplatnění nebo obhajobě právních nároků.

Stížnost můžete podat u Úřadu pro ochranu osobních údajů (uoou.gov.cz), u Úradu na ochranu osobných údajov Slovenskej republiky (dataprotection.gov.sk) nebo u dozorového úřadu státu EU, ve kterém žijete nebo pracujete, případně kde k porušení došlo.

Právo vznést námitku

Proti zpracování svých údajů můžete kdykoli vznést námitku. Stačí napsat na [email protected]. Nemusíte ji zdůvodňovat. Doménu vyřadíme, záznamy o ní smažeme a sami se na ni už neobrátíme, stejně jako při vyřazení popsaném výše.

Pro hostingy a abuse týmy

Když vám crawler dělá potíže, třeba zátěží nebo stížností zákazníka, napište na [email protected]. Pošlete domény, kterých se to týká, čas s časovým pásmem a řádek z logu. Domény vyřadíme stejně, jak je popsáno výše, a odpovíme vám, co jsme udělali.

The ScriptPatrol Index crawler

This crawler is run by ScriptPatrol. For the ScriptPatrol Index it measures the public pages of Czech and Slovak online shops once a quarter: which third-party code they load and how they handle cookie consent. It also looks at the basic security of the website and the domain. Results come out only as aggregate figures, and no shop is named in them.

If you saw it in your server’s log, this page explains what it asks for and how to switch it off for your domain.

What it asks for

First it looks for shops. It sends one request to the homepage of every website on its list and follows the redirects the answer points to. It keeps at most 2 MB of the answer. We build the list of Czech and Slovak websites from public sources. Most websites get nothing more from us in a quarter.

Websites that look like a shop from that first answer, and shops we already know, are then visited by a browser the way a new customer would visit them. It opens the homepage, the login page and the cart, and sometimes the contact page and the terms. It adds nothing to the cart, buys nothing, does not log in and submits no form. We visit a small random sample of the other websites the same way.

Shops then get a second visit. We try the cookie consent banner and the forms the way a customer would. We submit nothing and log in nowhere.

For shops and websites that look like one, we also look at the basic security of the domain and the server as anyone on the internet sees it: DNS records, the homepage’s headers, the security.txt file and the TLS connection.

When a visit fails, for example because the server is overloaded, we try again later, once at most. If we cannot read the homepage, for example because the server refused the visit, we try it with other browsers, one after another, so it may load a few more times.

We visit some shops once more to check that our measurements are accurate.

The first step sends requests to one server address one at a time, at least 1.5 seconds apart. When a server tells more than one website that we ask too often (status 429), we leave it alone for at least an hour and ask the rest of its websites later. We visit shops in random order, so the visits to shops on one hosting provider do not all arrive at once.

In the stored scripts we also look for signs of an attack, such as code that sends details from payment or login forms. When we confirm an attack, we tell the shop’s operator and the national CERT of its country.

When

Once a quarter. Visits to shops start on February 16, May 16, August 16 and November 16 and take several days. Finding new shops, that is the first step and the browser visits to websites that look like shops from it, can run in the weeks before.

Besides that, we visit small samples of websites when we test the Index or change its code. So some websites get a request or a visit from us more than once a quarter.

How to recognize it

Over IPv6, the first step identifies itself with this user agent:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 (compatible; ScriptPatrolIndex/1.0; +https://scriptpatrol.com/index-crawler)

You can find the first step’s requests over IPv6 by the ScriptPatrolIndex token, without matching the whole string. Over IPv4 the first step identifies itself as an ordinary browser, without the token. The other steps do not carry the token at all. They identify themselves as an ordinary browser, so the shop shows them the same page it shows a customer. Below is what you will see from each step.

Step
Finding shops
Which websites
every website on the list
What reaches your server
one request for the homepage, and the redirects it points to
User agent
ScriptPatrolIndex over IPv6, Chrome over IPv4
Step
Browser visit
Which websites
shops, websites that look like one, and a small sample of the others
What reaches your server
the homepage, login page and cart, sometimes the contact page and the terms, with everything those pages load
User agent
Chrome
Step
Second visit
Which websites
shops
What reaches your server
the homepage and the login page
User agent
Chrome
Step
Security check
Which websites
shops and websites that look like one
What reaches your server
the homepage over http and https, /.well-known/security.txt, the MTA-STS policy, TLS connections
User agent
Chrome
Step
Repeat visit
Which websites
websites the first visit could not read, and some shops to check accuracy
What reaches your server
the same pages again, or only the homepage
User agent
Chrome or another browser

When we reach you over IPv6, it is always from 2a01:4f8:1c1a:6d2c::100. Its reverse DNS record points to index-crawler.scriptpatrol.com, and that name points back to the same address. You can check it like this:

$ dig -x 2a01:4f8:1c1a:6d2c::100 +short
index-crawler.scriptpatrol.com.
$ dig AAAA index-crawler.scriptpatrol.com +short
2a01:4f8:1c1a:6d2c::100

The first step asks over IPv6 wherever the website supports it, which is about four in ten Czech and Slovak domains. Otherwise, and often in the other steps, we come over IPv4, from an address we do not publish.

How to opt out

You opt out by email. Write to [email protected] and name the domain. A whole list is fine too. We add the domain to our opt-out list and confirm it by email. Every step of the Index reads the list before it starts, and the first step checks it again on every redirect. From the next step on, we do not contact your domain ourselves, not even with the first step, and it will not be in later editions of the Index. A step that is already running may still send your domain a request before it ends. The opt-out covers subdomains too, such as www.

An opt-out does not stop requests that another website causes. When a website we visit redirects to your domain or loads files from it, such as a script, an image or a font, our browser asks for them as the browser of any other visitor to that website would.

If you write from an address on another domain, we may ask you to confirm that you manage the domain, for example by an email from an address on it.

You can block the crawler by its IPv6 address or by the ScriptPatrolIndex token. That stops only part of the requests, because only the first step carries the token, and only over IPv6, and over IPv4 we come from an address we do not publish. Writing to us is more reliable.

What we keep

From each step we keep at most the following:

Step
Finding shops
What we keep
the time of the request, the status code, where the redirects led, the IP addresses of the servers the requests went to, and at most 2 MB of the homepage
Step
Browser visits, repeat visits included
What we keep
for each page the browser opens: its content and text, and for the homepage a screenshot; the response headers and the server’s IP address; the scripts the page loads or runs; the requests and messages the page sends or receives, with their content; what the page states about itself; the names and attributes of cookies; details of the TLS connection
Step
Second visit
What we keep
the addresses of the requests the page sent, what the consent banner shows, how the page behaved when we tried the forms, and the names of cookies
Step
Security check
What we keep
the domain’s public DNS records; the homepage’s answers over http and https with their headers; details of the TLS connection and the certificate; the security.txt file and the MTA-STS policy

We do not keep cookie values from the browser. A page sometimes sends them on by itself, in the address or the content of a request, and then they are in the request we kept. They are values the page gave our browser, and they concern no visitor. From what we keep we derive facts about each website, such as which third-party services it loads, and from those the aggregate figures.

How long we keep it

What
The homepage from the first step (at most 2 MB)
How long
3 months from the request. Then we delete it and keep only what we learned from it: the status code, where the redirects led and whether the website looks like a shop.
What
Everything else the table above lists, and the facts about the website we derive from it
How long
36 months from the visit
What
Evidence of an attack we reported
How long
While the case is open, and 3 years after it is closed
What
The opt-out list and the emails you send us about it
How long
As long as the opt-out applies
What
Database backups
How long
At most 30 days

36 months lets us compare three years of editions and run a corrected rule over older data too, so that a correction does not break the series. Figures already published name no shop and stay published.

Where the data is and who gets it

The data is on our own server, which we rent from Hetzner Online GmbH in Germany. To run ScriptPatrol and work with the data we also use the services of other IT providers, in the EU and outside it, for example for email and for development and data analysis. We do not publish the data or sell it. Otherwise we pass it on only when we confirm an attack: the evidence then goes to the shop’s operator, the national CERT of its country and, where needed, the platform the attack came through.

Personal data

The Index measures shops. Their pages, DNS records and security.txt files can still contain personal data. Mostly that is the name, company number, address, email and phone number of an operator who is a natural person. It is also the names, photos and words of people who appear on the pages, for example in reviews or among contacts, and whatever is on the homepage of a website that is not a shop. We keep it as the website published it, as part of a page, a record or a file. So it always comes from publicly accessible sources.

The controller is Martin Stach, Prague, Czech Republic, who runs ScriptPatrol ([email protected]). We have not appointed a data protection officer.

We process personal data on the basis of legitimate interest (GDPR Article 6(1)(f)), for two purposes.

The first is the measurement for the ScriptPatrol Index. ScriptPatrol makes its living watching the security of websites, and with the Index it shows how Czech and Slovak shops are doing: which third-party code they load, how they handle cookie consent and how well their website and domain are secured. The results are aggregate figures that name no shop, and we make no decision about anyone based on them. So we protect the data as GDPR Article 89(1) asks for statistical purposes: we do not publish it, and we keep it only as long as stated above.

The second is warning about an attack. When we find code that steals the details of a shop’s visitors, it is in the interest of the shop’s customers and its operator to stop the attack as soon as possible (GDPR Recital 49). An operator we warn is told in that warning how we handle their data and what rights they have.

If you ask, we will send you how we weighed these interests against yours.

Telling each person individually whose data may be on tens of thousands of shops and hundreds of thousands of other websites would take disproportionate effort. That is why we inform through this page (GDPR Article 14(5)(b)).

We make no decisions based solely on automated processing. A person approves every attack report before it is sent.

You have the right to access your data, to have it corrected or erased, and to restrict its processing. Write to [email protected] and give the domain, or the name or company number as the website shows it, so that we can find the records. We answer within one month, free of charge. We delete the records about your domain without asking why. Figures already published do not change, because they name no shop. We may keep evidence of an attack we reported if we need it to establish, exercise or defend legal claims.

You can lodge a complaint with the Czech Office for Personal Data Protection (uoou.gov.cz), the Office for Personal Data Protection of the Slovak Republic (dataprotection.gov.sk), or the supervisory authority of the EU country where you live or work, or where the infringement took place.

Your right to object

You can object to the processing of your data at any time. Write to [email protected]. You do not have to give a reason. We opt your domain out, delete the records about it and do not contact it ourselves again, as with the opt-out described above.

For hosting providers and abuse teams

If the crawler causes you trouble, such as load or a customer’s complaint, write to [email protected]. Send the domains it concerns, the time with its time zone, and the log line. We opt out those domains in the same way as above and reply with what we did.