Vi bliver hele tiden klogere på, hvordan brugeradfærd påvirker rankings i Googles søgeresultater, særligt efter det store læk fra Google Content Warehouse API sidste år gav os dyb indsigt i, hvor meget de rent faktisk lytter til brugersignaler.

Google kigger på dwell time, deep clicks, tid brugt på siden og meget mere til at vurdere, hvor godt et match en side er til en given forespørgsel. Og et af de værste signaler, de kan modtage om dit website, er et pogo-stick – altså en dårlig oplevelse hos dig kombineret med en god eller bedre oplevelse på et andet website i samme SERP.

Hvad er pogo-sticking?

Pogo-sticking er, når en bruger klikker på et resultat i eksempelvis Google, lander på siden, men klikker hurtigt tilbage til søgeresultaterne igen og vælger at klikke på et andet link. Et klart signal om, at brugeren ikke fandt, hvad de søgte efter, og at din side sandsynligvis ikke er særlig relevant for forespørgslen. Forekommer dette fænomen ofte nok, vil dit resultat begynde at arbejde sig nedad i resultaterne, hvor det vil få endnu færre kliks.

Hvad er adversarial pogo-sticking så?

Det er nu, vi bevæger os ind i de grå zoner – eller lad os være ærlige, det er decideret black hat. Når vi tilføjer ordet adversarial, taler vi om en situation, hvor pogo-sticking sker helt bevidst og systematisk i et forsøg på at sende negative signaler om en konkurrents side.

Der bliver altså sendt besøg til den side, der skal påvirkes negativt. Besøget bliver meget kort, og brugeren eller botten, der udfører besøget, hopper tilbage til søgeresultaterne og klikker nu på et andet resultat og bliver hængende der i et minut eller længere. Det kan samtidig være, at brugeren/botten klikker på links eller interagerer med indholdet for at bekræfte, at brugeren nu fandt, hvad de søgte, og at resultatet var godt – modsat det første resultat, der jo ikke levede op til forventningerne (det website, der er under angreb).

Der kan være tale om reelle brugere, der bliver betalt for at klikke sig ind. Eksempelvis kunne det være gennem brug af Microworkers. Men der kan også være tale om bots, der er programmeret til at simulere adfærden. Formålet er, uanset metode, at skabe et billede af en side, der ikke leverer værdi.

Er adversarial pogo-sticking så ikke bare negativ CTR-optimering?

Både og. For når det kommer til adversarial pogo-sticking, er det et bestemt website, der er mål for negativ manipulation, og ikke nødvendigvis et, der er bestemt til at opnå en positiv effekt. Det betyder, at botterne eller brugerne ikke nødvendigvis besøger de samme resultater. De besøger det website, der skal falde i placering, forlader det hurtigt og finder så det gode resultat på nogle af de 7 til 9 andre resultater, der vises rundt omkring den URL, der angribes.

Det betyder, at alle andre sider på resultatsiden løbende får bedre signaler end det, der angribes, hvilket i den grad speeder processen op og får nedjusteret resultatet hurtigt.

Omvendt kan du også risikere, at dit website blot bliver brugt som en pogo-stick-katalysator. Det vil sige, at en konkurrent laver CTR-manipulation på sit eget resultat og bruger dit resultat som katalysator til deres eget. Du er altså blevet et tilfældigt offer eller specifikt udvalgt af din konkurrent.

Selvom det kan påvirke det enkelte resultat, er det ikke lige så faretruende, som hvis der køres massiv adversarial pogo-sticking på dine resultater. De er langt mere effektive – på den dårlige måde.

Hvordan påvirker adversarial pogo-sticking SEO?

Selvom Google aldrig har bekræftet, at pogo-sticking er et direkte rankingsignal, så har vi vidst det i SEO-kredse i snart et årti. Brugersignaler blev med stor sandsynlighed indført allerede tilbage i 2011, da Google Panda blev frigivet. Mange mener, at det var her, Google tog deres navboost-algoritme i brug for første gang, selvom den har været en integreret del af deres algoritme siden 2005.

Den negative påvirkning af dit site kan desværre ofte spores efter noget tid. Du vil opleve, at dit resultat falder i rankings uden yderligere forklaringer. Google arbejder løbende på at ignorere manipulation af brugeradfærd, men de er historisk set ret dårlige til det. Det betyder også, at der lige nu er gode muligheder i både at CTR-manipulere selv, men desværre også ræson i at udføre adversarial pogo-sticking.

Men hvad hvis adfærden ikke er ægte?

Google har efter sigende omkring 70 indledende bottjek, og de er faktisk rigtig gode til at filtrere botter fra. Men mange etablerede værktøjer klarer sig igennem alligevel.

Det ser også ud til, at det pt. er relativt nemt at påvirke CTR gennem et hjemmebygget setup, der benytter headless Chrome og Puppeteer (et Node.js-bibliotek) til at simulere en bruger. Du skal selvfølgelig bare huske at gøre brug af proxier – jeg bruger selv Oxylab til formålet.

Chancen for påvirkning er dog klart størst, hvis der er reelle brugere involveret, og hvis de er logget ind i en Google-konto. Særligt hvis kontoen har historik og dermed trust. Den slags tilbyder de større og mere veletablerede services derude (som i øvrigt kan være svære at finde, hvis du ikke ved, hvor du skal kigge).

Hvordan finder du ud af, om du er under angreb?

Før du kan beskytte dig selv, er det nødvendigt at vide, hvordan du finder ud af, om du er under angreb. Et angreb vil forsøge at efterligne naturlig adfærd, men der er en række signaler, som du med fordel kan holde øje med:

Unormale mønstre i dine analytics

Hold øje med pludselige spikes i din trafik på enkelte URLs, særligt hvis besøgende kommer fra ukendte lokationer. Se nærmere på trafik med meget lav tid på siden, eksempelvis under 2 sekunder – altså et næsten øjeblikkeligt bounce.

Se også efter meget høj bouncerate (afvisningsprocent) på specifikke landingssider, som tidligere har performet godt.

Et andet sted, du kan kigge – og hvor du ofte vil have held, hvis du er under angreb – er under “enheder”. Se nærmere på alt, der kommer fra usædvanlige enheder, skærmstørrelser, browsere eller trafik fra underlige Android-versioner.

Geografisk støj

Du skal særligt holde øje med mange besøgende fra andre lande. Selvom der findes danske microworkers, er der ikke et stort antal – simpelthen fordi lønningerne er for gode i Danmark. Som med så meget andet er vi bare ikke rentable rent økonomisk. Samtidig er der ikke mange af de etablerede tjenester, der har mange danske brugere. Derfor vil manipulationen ofte ske fra andre lande end Danmark.

Vær dog opmærksom på, at det er meget muligt at købe danske proxier. Så hvis angriberen har bygget sit eget setup, er der sandsynligvis ikke meget geografisk støj. Det vil der dog være, hvis de bruger en tjeneste.

Bot-lignende mønstre

Botter er ofte meget nemme at spotte, hvis du ved, hvad du skal kigge efter. De danner mønstre, som du kan identificere. Eksempelvis kan det være gentagne klik fra samme IP-ranges eller nært beslægtede IP-ranges. Det kan også være identiske brugsadfærdsmønstre – samme klik, samme tid brugt på siden, samme flow mv. Herudover alt, der stikker ud fra dine generelle trafikmønstre.

Sådan forsvarer du dig

Hvis du først har opdaget mistænkelig aktivitet, er der mange ting, du kan gøre for at bekæmpe det. En af de mest simple måder at beskytte sig på er at blokere IP’er og specifikke IP-ranges, hvis du har kunnet identificere sådanne. Dette kan både gøres gennem firewall eller .htaccess.

Du kan også vælge at benytte rate limiting, hvilket betyder, at du begrænser antallet af anmodninger fra samme IP inden for en bestemt tidsramme. Det kunne eksempelvis være 10 eller 15 requests pr. minut. Når grænsen overskrides, vil brugeren/botten blive mødt af enten en blokering eller en challenge (JS-challenge eller CAPTCHA).

En anden smart måde at identificere botter på er ved at lave honeypots – skjulte felter eller links, en normal bruger ikke vil klikke på, men som en bot vil.

Eksempel:

<a href=‟/bot-faelde‟ style=‟display:none;‟>Klik ikke her</a>

Linket er skjult, og en normal bruger vil ikke se det og ikke klikke på det – men det vil en bot. Du kan derfor bruge besøg til /bot-faelde til at identificere bot-IP’er og sætte blokering op.

Men pas på med at basere for meget på IP-ranges. Hvis “angrebet” er sofistikeret nok, vil de skifte IP-adresse, device og user-agent. Derfor er det mere sikkert at prøve at identificere behavioral fingerprinting – altså handlinger. Eksempelvis gentagne besøg til samme side med bounce efter præcist 1,2 sekunder (som eksempel), eller identificering af manglende scroll, klik mv.

Når du har identificeret mønstret, kan du begynde at arbejde på at lave scripts eller regler, der genkender det. Herefter kan du bygge adfærdsregler. Eksempelvis kunne det være, at der blev sat en blokering, hvis der sker tre ensartede besøg inden for 60 sekunder.

Få botterne til at crashe med loop traps og infinite redirects 😉

Når du først har identificeret en angriber, kan du – udover at blokere dem – lave lidt sjov. Du kan få dem til at crashe ved eksempelvis at sende dem ind i et uendeligt loop af omdirigeringer.

Det kan gøres meget enkelt:

<?php

header(„Location: /bot-loop‟);

exit;

Og på /bot-loop:

<?php

header(„Location: /bot-loop‟);

exit;

Resultat? Botten bliver fanget i et uendeligt redirect-loop.

Du kan også bare sætte det op som en simpel window.location.href i JavaScript.

I realiteten er det meget få botter, der er kodet til at håndtere loops eller længerevarende fejl, så du blokerer ikke bare for botterne – du har helt afbrudt deres flow.