{"id":1277,"date":"2026-08-26T09:00:00","date_gmt":"2026-08-26T07:00:00","guid":{"rendered":"https:\/\/fresh-dev.nl\/?post_type=blog&#038;p=1277"},"modified":"2026-08-22T14:12:30","modified_gmt":"2026-08-22T12:12:30","slug":"bot-traffic-website","status":"publish","type":"blog","link":"https:\/\/fresh-dev.nl\/en\/blog\/bot-verkeer-website\/","title":{"rendered":"Half of your website traffic is not human: four weeks of server logs"},"content":{"rendered":"<div class=\"section section-blocks\">\n    <div class=\"container\" data-reveal-group>\n        <div class=\"acf-innerblocks-container\">        <div class=\"block is-content\" id=\"wie-bezoekt-jouw-website-eigenlijk\">\n                            <h2>Wie bezoekt jouw website eigenlijk?<\/h2>\n                                        <p>Je bezoekersaantallen in Google Analytics zijn niet je verkeer. Analytics telt alleen wat een browser met JavaScript uitvoert, en dat is precies het deel dat een mens veroorzaakt. Alles daarnaast staat wel in je serverlog, en dat log is een stuk minder vleiend.<\/p>\n<p>We hebben onze eigen logs er dus maar eens bij gepakt. Vier weken, 52 websites en webapplicaties op \u00e9\u00e9n van onze servers, 240.673 verzoeken en 46,2 GB aan verkeer. Daarna alles gesorteerd op wie het opvroeg. Het gaat om een allegaartje aan sites, van drukke webshops tot staging-omgevingen waar alleen wij komen, en het is bovendien gemeten in de vakantieperiode. Verderop staat wat dat met de cijfers doet.<\/p>\n<p><strong>De uitkomst in het kort:<\/strong><\/p>\n<ul>\n<li>45 procent van de verzoeken kwam van een mens. De rest niet.<\/li>\n<li>De drukste niet-menselijke bezoeker waren wij zelf: onze monitoring en WordPress die zichzelf belt, samen goed voor bijna 38 procent van alles.<\/li>\n<li>AI-crawlers deden 16.168 verzoeken, alle zoekmachines samen 10.154. GPTBot alleen deed er zeven keer zoveel als Googlebot.<\/li>\n<li>6.809 verzoeken waren inbraakpogingen. Dat zijn er 243 per dag, elke dag.<\/li>\n<li>En het grootste bandbreedtegat kwam niet van bots, maar van \u00e9\u00e9n autoplay-video.<\/li>\n<\/ul>\n<p>In dit artikel:<\/p>\n<ul>\n<li><a href=\"#meting\">Wat we precies gemeten hebben<\/a><\/li>\n<li><a href=\"#uitslag\">De uitslag<\/a><\/li>\n<li><a href=\"#zelf\">De drukste bot waren wij zelf<\/a><\/li>\n<li><a href=\"#ai\">AI-crawlers halen meer op dan Google<\/a><\/li>\n<li><a href=\"#kosten\">Wat het werkelijk kost<\/a><\/li>\n<li><a href=\"#aanvallen\">243 inbraakpogingen per dag<\/a><\/li>\n<li><a href=\"#doen\">Wat je hiermee doet<\/a><\/li>\n<li><a href=\"#meten\">Zelf meten in vijf minuten<\/a><\/li>\n<\/ul>\n                                <\/div>\n                <div class=\"block is-content\" id=\"meting\">\n                            <h2>Wat we precies gemeten hebben<\/h2>\n                                        <p>Even open over de methode, want cijfers zonder methode zijn een mening.<\/p>\n<ul>\n<li>Periode: 25 juli tot en met 21 augustus 2026, dus vier volle weken.<\/li>\n<li>Bron: de HTTPS-logs van de webserver, niet Analytics. Daar staat elk verzoek in, ook de verzoeken die nooit een pagina opleveren.<\/li>\n<li>Omvang: 52 domeinen met verkeer, samen 240.673 verzoeken en 46,2 GB.<\/li>\n<li>Indeling op basis van de user agent, de naam die een bezoeker zelf opgeeft.<\/li>\n<\/ul>\n<p><strong>Waar dit wel en niet over gaat.<\/strong> Die 52 domeinen zijn geen doorsnede van het Nederlandse internet en ook geen 52 vergelijkbare bedrijfssites. Het is wat er bij ons op \u00e9\u00e9n server staat: klantwebsites, een paar webshops, twee webapplicaties, een reeks staging-omgevingen waar alleen wij komen en onze eigen interne tools. De grootste site trekt duizenden bezoekers per maand, de kleinste bijna niemand. Een staging-omgeving zonder publiek heeft bijna honderd procent bot-verkeer en trekt het gemiddelde omhoog.<\/p>\n<p>Daar komt de periode bij: eind juli en augustus is vakantie. Menselijk bezoek zit dan op een dieptepunt en crawlers merken daar niets van, dus het aandeel bots is in deze weken hoger dan in bijvoorbeeld oktober. Lees de percentages hieronder dus als de verhouding op deze server in deze weken, niet als een landelijk cijfer. De aantallen per crawler zijn wel gewoon aantallen, en die veranderen niet door hoe je ze omrekent.<\/p>\n<p>Die laatste is meteen de zwakke plek. Een user agent is een tekstregel die iedereen kan invullen, en kwaadwillende scripts vullen daar gewoon Chrome in. Alles wat we hieronder als bot tellen, is dus een ondergrens. Het echte aandeel ligt hoger, niet lager.<\/p>\n<p>Wat we niet hebben gedaan: IP-adressen controleren bij de eigenaar van de crawler. Google en OpenAI publiceren allebei lijstjes waarmee je kunt nagaan of een verzoek dat zegt Googlebot te zijn ook echt van Google komt. Voor een artikel is dat overkill, voor het blokkeren van verkeer niet, want dat is precies de plek waar je een fout maakt die je bezoekers raakt.<\/p>\n                                <\/div>\n                <div class=\"block is-content\" id=\"uitslag\">\n                            <h2>De uitslag<\/h2>\n                                        <p>De verdeling over vier weken, op verzoeken:<\/p>\n<ul>\n<li>Mensen met een echte browser: 108.907 verzoeken, 45,3 procent<\/li>\n<li>Onze eigen monitoring: 62.162 verzoeken, 25,8 procent<\/li>\n<li>WordPress die zichzelf belt: 28.647 verzoeken, 11,9 procent<\/li>\n<li>AI-crawlers: 16.168 verzoeken, 6,7 procent<\/li>\n<li>Zoekmachines: 10.154 verzoeken, 4,2 procent<\/li>\n<li>Verzoeken zonder user agent: 5.825, 2,4 procent<\/li>\n<li>Scripts en headless browsers: 5.697, 2,4 procent<\/li>\n<li>SEO-tools, sociale media, scanners en de restcategorie: samen 3.101, 1,3 procent<\/li>\n<\/ul>\n<p>Iets meer dan de helft van alles wat onze server te verwerken kreeg, kwam dus niet van een bezoeker. Dat komt aardig overeen met de wereldwijde schattingen die rond de 55 tot 60 procent liggen, en het is nuttiger, want dit gaat over Nederlandse sites die wij kennen.<\/p>\n<p>Het interessante zit niet in dat percentage. Het zit in wie die bots zijn.<\/p>\n                                <\/div>\n                <div class=\"block is-image\">\n            <div class=\"image-holder\" data-click-zoom>\n                <img decoding=\"async\"\n                    src=\"https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/bot-verkeer-verdeling-1024x525.jpg\"\n                                            srcset=\"https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/bot-verkeer-verdeling-1024x525.jpg 1024w, https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/bot-verkeer-verdeling-300x154.jpg 300w, https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/bot-verkeer-verdeling-768x394.jpg 768w, https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/bot-verkeer-verdeling-1536x787.jpg 1536w, https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/bot-verkeer-verdeling-18x9.jpg 18w, https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/bot-verkeer-verdeling.jpg 1600w\"\n                        sizes=\"(max-width: 767px) 100vw, 720px\"\n                                        alt=\"Staafdiagram met de verdeling van verzoeken over mens en bot\"\n                >\n                <button type=\"button\" class=\"image-zoom\" aria-label=\"Afbeelding vergroten\"><\/button>\n            <\/div>\n        <\/div>\n                <div class=\"block is-content\" id=\"zelf\">\n                            <h2>De drukste bot waren wij zelf<\/h2>\n                                        <p>De grootste bron van niet-menselijk verkeer op onze server bleken we zelf te zijn. Twee dingen bij elkaar, goed voor 90.809 verzoeken, bijna 38 procent van het totaal.<\/p>\n<p><strong>Onze monitoring: 62.162 verzoeken.<\/strong> Elke site die wij in beheer hebben wordt continu gecontroleerd of hij nog reageert, en die controles komen van de server zelf. Dat is precies de bedoeling: daarom weten wij het meestal eerder dan de klant als er iets uitvalt. De meting liet wel zien dat het scherper kon. Elke site werd elke acht minuten aangetikt, en op vijftig sites telt dat op. Naar een kwartier scheelt de helft van dat verkeer zonder dat de bewaking merkbaar minder wordt.<\/p>\n<p><strong>WordPress die zichzelf belt: 28.647 verzoeken, waarvan 27.001 op \u00e9\u00e9n bestand.<\/strong> Dat bestand is <code>wp-cron.php<\/code>, en dit zit zo in WordPress zelf. Er is geen echte planner, dus kijkt WordPress bij elk paginabezoek of er nog een taak klaarstaat. Op een site met bezoek gaat dat honderden keren per dag en start er elke keer een nieuw PHP-proces. Dat geldt voor vrijwel elke WordPress-site ter wereld, ook die van jou.<\/p>\n<p>Dit is meteen de makkelijkste winst die er te halen valt en hij kost tien minuten. Je zet die interne planner uit en laat de server het op vaste tijden doen, wat bovendien betrouwbaarder is voor ingeplande publicaties. In je configuratie:<\/p>\n<pre style=\"background-color:#141414;border:1px solid #2e2e2e;border-radius:12px;padding:26px 28px;font-size:15px;line-height:1.7;color:#d8d8d8\"><code>define('DISABLE_WP_CRON', true);<\/code><\/pre>\n<p>En dan een taak op de server die het overneemt, bijvoorbeeld elke vijf minuten. Let op als je met een pagecache werkt: draait er voor uitgelogde bezoekers geen PHP meer, dan vuurt die interne planner soms dagen niet en blijft een ingeplande publicatie gewoon staan. Wij hebben dat op onze eigen site precies zo meegemaakt.<\/p>\n                                <\/div>\n                <div class=\"block is-quote\">\n            <p>Voordat je gaat blokkeren: meet eerst. De kans is groot dat de drukste bot op jouw server jouw eigen server is.<\/p>\n                            <span>&#8211; Jesse Lafeber, Fresh-Dev<\/span>\n                    <\/div>\n                <div class=\"block is-content\" id=\"ai\">\n                            <h2>AI-crawlers halen meer op dan Google<\/h2>\n                                        <p>Dit is het cijfer waar we zelf even van opkeken. Over vier weken:<\/p>\n<ul>\n<li>GPTBot (OpenAI, verzamelt materiaal voor het trainen van modellen): 7.178 verzoeken, 97,5 MB<\/li>\n<li>ClaudeBot (Anthropic): 4.692 verzoeken, 15,0 MB<\/li>\n<li>De crawler van Meta: 2.446 verzoeken, 21,4 MB<\/li>\n<li>OAI-SearchBot (haalt op wat ChatGPT als bron toont): 1.497 verzoeken, 3,6 MB<\/li>\n<li>Bytespider en ChatGPT-User: samen 258 verzoeken<\/li>\n<\/ul>\n<p>En de zoekmachines, ter vergelijking:<\/p>\n<ul>\n<li>Overige zoekmachines, waaronder Apple en Yandex: 5.962 verzoeken<\/li>\n<li>Bingbot: 3.069 verzoeken, 37,5 MB<\/li>\n<li>Googlebot: 1.017 verzoeken, 16,5 MB<\/li>\n<li>DuckDuckBot: 106 verzoeken<\/li>\n<\/ul>\n<p>GPTBot deed dus zeven keer zoveel verzoeken als Googlebot. Alle AI-crawlers samen deden er ruim anderhalf keer zoveel als alle zoekmachines samen. Dat Google zo laag uitkomt is trouwens geen slecht teken: Google crawlt effici\u00ebnt en haalt vooral op wat is veranderd. De AI-crawlers doen dat een stuk minder subtiel.<\/p>\n<p>Nu de vraag die daarop volgt: moet je die dingen blokkeren? Dat hangt ervan af welke.<\/p>\n<ul>\n<li>Crawlers die materiaal verzamelen om modellen te trainen, leveren je niets op. Geen bezoeker, geen vermelding, geen link.<\/li>\n<li>Crawlers die ophalen wat een AI-assistent op dat moment als bron toont, leveren je wel iets op. Blokkeer je die, dan word je niet genoemd in de antwoorden die mensen tegenwoordig krijgen in plaats van een lijst zoekresultaten.<\/li>\n<\/ul>\n<p>Dat onderscheid is nu net het lastige, want beide categorie\u00ebn komen van dezelfde bedrijven. GPTBot en OAI-SearchBot zijn allebei van OpenAI en doen totaal verschillende dingen. Wie in <code>robots.txt<\/code> alles van OpenAI dichtzet, gooit ook zijn zichtbaarheid in ChatGPT weg.<\/p>\n<p>Onze lijn: de trainingscrawlers mogen wat ons betreft weg bij sites waar dat gevoelig ligt, de zoekcrawlers laat je met rust. En dan wel per site bekijken, want een webshop en een kennisbank hebben hier niet hetzelfde belang bij.<\/p>\n                                <\/div>\n                <div class=\"block is-image\">\n            <div class=\"image-holder\" data-click-zoom>\n                <img decoding=\"async\"\n                    src=\"https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/ai-crawlers-versus-zoekmachines-1024x563.jpg\"\n                                            srcset=\"https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/ai-crawlers-versus-zoekmachines-1024x563.jpg 1024w, https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/ai-crawlers-versus-zoekmachines-300x165.jpg 300w, https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/ai-crawlers-versus-zoekmachines-768x422.jpg 768w, https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/ai-crawlers-versus-zoekmachines-1536x845.jpg 1536w, https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/ai-crawlers-versus-zoekmachines-18x10.jpg 18w, https:\/\/fresh-dev.nl\/app\/uploads\/2026\/08\/ai-crawlers-versus-zoekmachines.jpg 1600w\"\n                        sizes=\"(max-width: 767px) 100vw, 720px\"\n                                        alt=\"Staafdiagram met AI-crawlers en zoekmachines\"\n                >\n                <button type=\"button\" class=\"image-zoom\" aria-label=\"Afbeelding vergroten\"><\/button>\n            <\/div>\n        <\/div>\n                <div class=\"block is-content\" id=\"kosten\">\n                            <h2>Wat het werkelijk kost<\/h2>\n                                        <p>Bots kosten je twee dingen, en die verwar je makkelijk.<\/p>\n<p><strong>Bandbreedte<\/strong> is het minst interessante. Alle AI-crawlers samen haalden 139 MB op in vier weken. Dat is niets. Ter vergelijking: bij de scripts en headless browsers zat \u00e9\u00e9n client die 8,9 GB verstookte, en bijna alles daarvan waren autoplay-video&#8217;s in de header van een paar sites. E\u00e9n hero-video van 12 MB die bij elk bezoek meelaadt kost je meer dan alle AI-bots bij elkaar. Als je op bandbreedte wilt besparen, kijk dan eerst naar je video&#8217;s en je afbeeldingen.<\/p>\n<p><strong>Serverwerk<\/strong> is het echte probleem. Een verzoek dat langs de cache gaat en PHP opstart, kost tussen de 200 en 800 milliseconden aan rekentijd. Een verzoek dat uit de cache komt, kost ongeveer niets. Het verschil tussen die twee is de vraag of je server het merkt.<\/p>\n<p>Daarom is een pagecache voor bot-verkeer belangrijker dan voor bezoekers. Bezoekers komen op een handjevol pagina&#8217;s, en die zitten toch wel in de cache. Een crawler loopt je hele site af, inclusief die 400 archiefpagina&#8217;s waar geen mens ooit komt. Zonder cache is dat 400 keer een compleet PHP-proces en 400 keer een reeks databasevragen.<\/p>\n<p>Op de server waar deze meting vandaan komt draait een pagecache en dat scheelde bij het aanzetten een respons van 1,6 seconde naar 88 milliseconden. Diezelfde winst geldt voor elk crawlerverzoek.<\/p>\n                                <\/div>\n                <div class=\"block is-content\" id=\"aanvallen\">\n                            <h2>243 inbraakpogingen per dag<\/h2>\n                                        <p>6.809 verzoeken in vier weken gingen naar inlogpagina&#8217;s, naar <code>xmlrpc.php<\/code>, naar <code>.env<\/code>-bestanden en naar het installatiescript van WordPress. Dat is 243 per dag over 52 sites.<\/p>\n<p>Daar zaten ook aanvragen tussen naar bestanden die alleen bestaan als een site al besmet is. Namen als <code>wp_filemanager.php<\/code> in een plugin-map die niet van een echte plugin is. Die verzoeken zijn niet zozeer een aanval als wel een inventarisatie: iemand loopt het internet af op zoek naar sites die al eerder gekraakt zijn en waar de achterdeur nog open staat.<\/p>\n<p>Dit is achtergrondruis van het internet en niemand is hier persoonlijk het doelwit. Van deze 6.809 pogingen is er in deze vier weken geen enkele geslaagd, en dat is precies waar de standaardmaatregelen voor zijn: geen account met de gebruikersnaam admin, tweestapsverificatie op de beheerders, <code>xmlrpc.php<\/code> dicht als je het niet gebruikt, een firewall die herhaald mislukte pogingen blokkeert, en updates die daadwerkelijk gedraaid worden in plaats van uitgesteld.<\/p>\n<p>Het cijfer is dus geen alarmsignaal maar een maatstaf. Elke site aan het internet krijgt dit over zich heen. Het verschil zit erin of iemand meekijkt.<\/p>\n                                <\/div>\n                <div class=\"block is-content\" id=\"doen\">\n                            <h2>Wat je hiermee doet<\/h2>\n                                        <p>Concreet, en op volgorde van wat het oplevert:<\/p>\n<ol>\n<li><strong>Zet de interne planner van WordPress uit<\/strong> en laat de server het overnemen. Bij ons was dat 27.001 verzoeken in vier weken op \u00e9\u00e9n site na de andere.<\/li>\n<li><strong>Kijk na hoe vaak je monitoring aanklopt.<\/strong> Elke minuut is bijna nooit nodig. Elk kwartier merkt geen mens.<\/li>\n<li><strong>Zet een pagecache aan.<\/strong> Dat haalt het crawlerverkeer bij PHP en de database weg, en het is ook nog eens het snelste dat je voor je bezoekers kunt doen.<\/li>\n<li><strong>Kijk kritisch naar autoplay-video&#8217;s in je header.<\/strong> E\u00e9n bestand kan meer verkeer veroorzaken dan alle bots samen.<\/li>\n<li><strong>Beslis bewust over AI-crawlers,<\/strong> per site, en scheid daarbij de trainingscrawlers van de crawlers die je zichtbaarheid opleveren.<\/li>\n<li><strong>Doe je basisbeveiliging.<\/strong> Geen admin-account, tweestapsverificatie aan, xmlrpc dicht.<\/li>\n<\/ol>\n<p>Wat we n\u00edet zouden doen: alles wat op een bot lijkt hard blokkeren. In deze meting zaten drie categorie\u00ebn die je niet wilt kwijtraken en die er van buitenaf hetzelfde uitzien als de rest: de zoekmachines, de crawlers die je in AI-antwoorden zetten, en de sociale netwerken die een voorbeeldweergave ophalen als iemand jouw link deelt. Een te ruwe blokkade en je linkjes op LinkedIn zijn ineens grijze vakjes.<\/p>\n                                <\/div>\n                <div class=\"block is-content\" id=\"meten\">\n                            <h2>Zelf meten in vijf minuten<\/h2>\n                                        <p>Je kunt dit zelf doen op elke server waar je bij het access log kunt. Deze regel telt je bezoekers per user agent en zet de drukste bovenaan:<\/p>\n<pre style=\"background-color:#141414;border:1px solid #2e2e2e;border-radius:12px;padding:26px 28px;font-size:15px;line-height:1.7;color:#d8d8d8\"><code>awk -F'\"' '{print $6}' access_log \\\n  | sort | uniq -c | sort -rn | head -25<\/code><\/pre>\n<p>En zo zie je hoeveel verzoeken de AI-crawlers deden:<\/p>\n<pre style=\"background-color:#141414;border:1px solid #2e2e2e;border-radius:12px;padding:26px 28px;font-size:15px;line-height:1.7;color:#d8d8d8\"><code>grep -cE 'GPTBot|ClaudeBot|PerplexityBot|Bytespider' access_log<\/code><\/pre>\n<p>Zit je op gedeelde hosting zonder toegang tot de logs, dan kun je bij je hoster om een export vragen. Krijg je die niet, dan is dat op zich ook informatie.<\/p>\n<p>Waar je op moet letten bij het lezen: kijk naar verzoeken en niet naar bezoekers, want die tweede bestaat in een log niet. En tel de statuscodes mee. Duizenden verzoeken die allemaal een 404 opleveren betekenen iets heel anders dan duizenden verzoeken die netjes een pagina terugkrijgen.<\/p>\n                                <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n<div class=\"section section-form\">        <div class=\"container\" data-reveal-group>\n            <div class=\"holder\" data-reveal-group-nested data-ignore=\"false\">\n                        <div class=\"content-holder\">\n            <div class=\"inner\">\n                <h3>Benieuwd wat er op jouw site langskomt?<\/h3>\n<p>Laat je website achter, dan kijken we mee in de logs: welke bots er langskomen, wat dat aan serverwerk kost en waar de makkelijke winst zit. Binnen een werkdag hoor je van ons.<\/p>\n                            <\/div>\n                    <\/div>\n                                <div class=\"form-holder\" data-reveal-group>\n            <div class=\"inner\">\n                                <script>\nvar gform;gform||(document.addEventListener(\"gform_main_scripts_loaded\",function(){gform.scriptsLoaded=!0}),document.addEventListener(\"gform\/theme\/scripts_loaded\",function(){gform.themeScriptsLoaded=!0}),window.addEventListener(\"DOMContentLoaded\",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>\"function\"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn(\"The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1.\"),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener(\"gform_main_scripts_loaded\",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener(\"gform\/theme\/scripts_loaded\",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener(\"DOMContentLoaded\",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook(\"action\",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook(\"filter\",o,r,e,t)},doAction:function(o){gform.doHook(\"action\",o,arguments)},applyFilters:function(o){return gform.doHook(\"filter\",o,arguments)},removeAction:function(o,r){gform.removeHook(\"action\",o,r)},removeFilter:function(o,r,e){gform.removeHook(\"filter\",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+\"_\"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){\"function\"!=typeof(t=o.callable)&&(t=window[t]),\"action\"==r?t.apply(null,e):e[0]=t.apply(null,e)})),\"filter\"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}});\n<\/script>\n\n                <div class='gf_browser_gecko gform_wrapper gravity-theme gform-theme--no-framework' data-form-theme='gravity-theme' data-form-index='0' id='gform_wrapper_6' ><div id='gf_6' class='gform_anchor' tabindex='-1'><\/div>\n                        <div class='gform_heading'>\n\t\t\t\t\t\t\t<p class='gform_required_legend'><\/p>\n                        <\/div><form method='post' enctype='multipart\/form-data' target='gform_ajax_frame_6' id='gform_6'  action='\/en\/wp-json\/wp\/v2\/blog\/1277#gf_6' data-formid='6' novalidate>\n                        <div class='gform-body gform_body'><div id='gform_fields_6' class='gform_fields top_label form_sublabel_below description_below validation_below'><div id=\"field_6_1\" class=\"gfield gfield--type-text gfield--width-full input-extra gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_6_1'>Naam<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_6_1' type='text' value='' class='large'     aria-required=\"true\" aria-invalid=\"false\"   \/><\/div><\/div><div id=\"field_6_2\" class=\"gfield gfield--type-website gfield--width-full input-extra gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_6_2'>Website<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class='ginput_container ginput_container_website'>\n                    <input name='input_2' id='input_6_2' type='url' value='' class='large'     aria-required=\"true\" aria-invalid=\"false\" \/>\n                <\/div><\/div><div id=\"field_6_3\" class=\"gfield gfield--type-email gfield--width-full input-extra gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_6_3'>E-mailadres<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class='ginput_container ginput_container_email'>\n                            <input name='input_3' id='input_6_3' type='email' value='' class='large'    aria-required=\"true\" aria-invalid=\"false\"  \/>\n                        <\/div><\/div><div id=\"field_6_4\" class=\"gfield gfield--type-phone gfield--width-full input-extra field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_6_4'>Telefoonnummer (optioneel)<\/label><div class='ginput_container ginput_container_phone'><input name='input_4' id='input_6_4' type='tel' value='' class='large'    aria-invalid=\"false\"   \/><\/div><\/div><\/div><\/div>\n        <div class='gform-footer gform_footer top_label'> <input type='submit' id='gform_submit_button_6' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' value='Stuur mijn site in'  \/> <input type='hidden' name='gform_ajax' value='form_id=6&amp;title=&amp;description=&amp;tabindex=0&amp;theme=gravity-theme&amp;hash=d6e998ffee71a5aa5f4932ce21c2abc1' \/>\n            <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_6' value='iframe' \/>\n            <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_6' id='gform_theme_6' value='gravity-theme' \/>\n            <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_6' id='gform_style_settings_6' value='' \/>\n            <input type='hidden' class='gform_hidden' name='is_submit_6' value='1' \/>\n            <input type='hidden' class='gform_hidden' name='gform_submit' value='6' \/>\n            \n            <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='EUR' value='ESQt8uXZckg2b07+sOGqyD3yRoa1hS8I07hwxxJIcmHOytw0dGLtFg9iEerXSYnQJEkmsHxDTvcZVPJrb0lQItIlxH9pPKt0dbKV99Be4vZ3QA8=' \/>\n            <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' \/>\n            <input type='hidden' class='gform_hidden' name='state_6' value='WyJbXSIsIjFmODY2YWJjOTNmYzNkYTQwZmI3MTdlMDBjYjU4M2FjIl0=' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_6' id='gform_target_page_number_6' value='0' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_6' id='gform_source_page_number_6' value='1' \/>\n            <input type='hidden' name='gform_field_values' value='' \/>\n            \n        <\/div>\n                        <\/form>\n                        <\/div>\n\t\t                <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_6' id='gform_ajax_frame_6' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'><\/iframe>\n\t\t                <script>\ngform.initializeOnLoaded( function() {gformInitSpinner( 6, 'https:\/\/fresh-dev.nl\/app\/plugins\/gravityforms\/images\/spinner.svg', true );jQuery('#gform_ajax_frame_6').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_6');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_6').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_6').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_6').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_6').removeClass('gform_validation_error');}setTimeout( function() { \/* delay the scroll by 50 milliseconds to fix a bug in chrome *\/ jQuery(document).scrollTop(jQuery('#gform_wrapper_6').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_6').val();gformInitSpinner( 6, 'https:\/\/fresh-dev.nl\/app\/plugins\/gravityforms\/images\/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [6, current_page]);window['gf_submitting_6'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_6').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_6').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [6]);window['gf_submitting_6'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_6').text());}else{jQuery('#gform_6').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger(\"gform_pre_post_render\", [{ formId: \"6\", currentPage: \"current_page\", abort: function() { this.preventDefault(); } }]);        if (event && event.defaultPrevented) {                return;        }        const gformWrapperDiv = document.getElementById( \"gform_wrapper_6\" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( \"span\" );            visibilitySpan.id = \"gform_visibility_test_6\";            gformWrapperDiv.insertAdjacentElement( \"afterend\", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( \"gform_visibility_test_6\" );        let postRenderFired = false;        function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            gform.core.triggerPostRenderEvents( 6, current_page );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate && !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) => {                mutations.forEach( ( mutation ) => {                    if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );} );\n<\/script>\n            <\/div>\n        <\/div>\n                    <\/div>\n        <\/div>\n        <\/div><div class=\"section section-blocks\">\n    <div class=\"container\" data-reveal-group>\n        <div class=\"acf-innerblocks-container\">        <div class=\"block is-content\" id=\"slot\">\n                            <h2>Meet eerst, blokkeer daarna<\/h2>\n                                        <p>De conclusie van vier weken meten is niet dat het internet vol bots zit, want dat wisten we. Het is dat het grootste deel van het verkeer waar je iets aan kunt doen uit je eigen huis komt. Een controle die vaker kijkt dan nodig, WordPress dat zichzelf blijft bellen, en een video die bij elk bezoek meelaadt. Dat zijn precies de drie waar je zelf aan de knoppen zit.<\/p>\n<p>Voordat je gaat blokkeren, meet dus eerst. Er is een gerede kans dat de drukste bot op jouw server jouw eigen server is.<\/p>\n<p>Wil je weten wat er op jouw site langskomt, of loop je tegen een server aan die zwaarder belast is dan je zou verwachten? Daar kijken we naar mee.<\/p>\n                                <div class=\"button-holder\">\n            <a href=\"https:\/\/fresh-dev.nl\/adviesgesprek-inplannen\/\" class=\"button\">Plan een adviesgesprek<\/a>\n        <\/div>\n                <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"featured_media":1279,"template":"","meta":{"_acf_changed":false},"blog_category":[9],"class_list":["post-1277","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-webdevelopment"],"acf":[],"_links":{"self":[{"href":"https:\/\/fresh-dev.nl\/en\/wp-json\/wp\/v2\/blog\/1277","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fresh-dev.nl\/en\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/fresh-dev.nl\/en\/wp-json\/wp\/v2\/types\/blog"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fresh-dev.nl\/en\/wp-json\/wp\/v2\/media\/1279"}],"wp:attachment":[{"href":"https:\/\/fresh-dev.nl\/en\/wp-json\/wp\/v2\/media?parent=1277"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/fresh-dev.nl\/en\/wp-json\/wp\/v2\/blog_category?post=1277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}